All Downloads are FREE. Search and download functionalities are using the official Maven repository.

expsigladb.Function.creacodiceprogetto.fnc Maven / Gradle / Ivy

There is a newer version: 6.6.11
Show newest version
CREATE OR REPLACE FUNCTION creaCodiceProgetto
(p_codice VARCHAR2, p_tipo_progetto VARCHAR2, p_lpad NUMBER) Return VARCHAR2 Is
    nProgressivo NUMBER := 1;
    sCodiceCompleto VARCHAR2(100);
    riga NUMBER;
    nLpad NUMBER := 0;
Begin
    If p_codice Is Null Then
        raise_application_error(-20030,'Il codice base del mumeratore deve essere valorizzato',TRUE);
    End If;

    Loop
        Begin
            Select progressivo Into nProgressivo
            From progetto_numeratore
            Where codice = p_codice
            For Update Of progressivo;

            nProgressivo := Nvl(nProgressivo,0)+1;

            Update progetto_numeratore Set progressivo = nProgressivo
            Where codice = p_codice;

            If (Length(To_Char(nProgressivo))>p_lpad) Then
                nLpad:=Length(To_Char(nProgressivo));
            Else
                nLpad:=p_lpad;
            End If;
            sCodiceCompleto := p_codice||'-'||p_tipo_progetto||To_Char(Lpad(nProgressivo,nLpad,'0'));

        Exception
            When No_Data_Found Then
                Insert Into progetto_numeratore (codice, progressivo)
                Values (p_codice, nProgressivo);

                If (Length(To_Char(nProgressivo))>p_lpad) Then
                    nLpad:=Length(To_Char(nProgressivo));
                Else
                    nLpad:=p_lpad;
                End If;
                sCodiceCompleto := p_codice||'-'||p_tipo_progetto||To_Char(Lpad(nProgressivo,nLpad,'0'));
        End;


        Begin
            Select 1 Into riga
            From progetto
            Where cd_progetto = sCodiceCompleto;
        Exception
            When No_Data_Found Then
                Exit;
        End;
    End Loop;

    Return (sCodiceCompleto);
End;
/






© 2015 - 2024 Weber Informatics LLC | Privacy Policy