"localhost:/firebird/data/ILICHEVSK2.FDB". Процедуры Previous topic Chapter index Next topic

GET_LABQUALITYNUMBER

 

Входные параметры

Параметр

Тип

Описание

OPERATIONID

INTEGER

 

TRANSPORTTYPEID

INTEGER

 

STEP

INTEGER

 

ALABQUALITYNUMBER

VARCHAR(10)

 

 

Выходные параметры

Параметр

Тип

Описание

LABQUALITYNUMBER

INTEGER

 

AUTONUMBERINGANALYSES

INTEGER

 

GENERATORNAME

VARCHAR(31)

 

 

Описание

(Нет описания для процедуры GET_LABQUALITYNUMBER)

 

Определение

CREATE PROCEDURE GET_LABQUALITYNUMBER(
    OPERATIONID INTEGER,
    TRANSPORTTYPEID INTEGER,
    STEP INTEGER,
    ALABQUALITYNUMBER VARCHAR(10))
RETURNS (
    LABQUALITYNUMBER INTEGER,
    AUTONUMBERINGANALYSES INTEGER,
    GENERATORNAME VARCHAR(31))
AS
begin
  select coalesce(ENVIRONMENTOPTIONS.AUTONUMBERINGANALYSES,0)
    from ENVIRONMENTOPTIONS
  into :AUTONUMBERINGANALYSES;

  if (AUTONUMBERINGANALYSES > 0) then begin
    if (AUTONUMBERINGANALYSES > 1) then begin
      if (bin_and(AUTONUMBERINGANALYSES,2) = 2) then begin
        GENERATORNAME = 'LABQUALITYNUMBER_GEN' || coalesce('_OP' || OPERATIONID,'');

        if (not exists (select * from rdb$generators where rdb$generators.rdb$generator_name = :GENERATORNAME)) then
          execute statement 'create generator ' || :GENERATORNAME;
      end

      if (bin_and(AUTONUMBERINGANALYSES,4) = 4) then begin
        if (AUTONUMBERINGANALYSES = 4) then
          GENERATORNAME = 'LABQUALITYNUMBER_GEN';

        if (TRANSPORTTYPEID in (2,3)) then
          GENERATORNAME = GENERATORNAME || '_F59';
        else GENERATORNAME = GENERATORNAME || '_F49';

        if (not exists (select * from rdb$generators where rdb$generators.rdb$generator_name = :GENERATORNAME)) then
          execute statement 'create generator ' || :GENERATORNAME;
      end
    end
    else GENERATORNAME = 'LABQUALITYNUMBER_GEN';

    if (:STEP = 0) then
      execute statement 'select cast(gen_id(' || :GENERATORNAME || ',0) + 1 as integer) from rdb$database'
      into :LABQUALITYNUMBER;
    else
      if (:ALABQUALITYNUMBER <> '') then begin
        if (:ALABQUALITYNUMBER <> '-1') then
          execute statement 'alter sequence ' || :GENERATORNAME || ' restart with ' || :ALABQUALITYNUMBER;
      end
      else
        execute statement 'select cast(gen_id(' || :GENERATORNAME || ',1) as integer) from rdb$database'
        into :LABQUALITYNUMBER;
  end

  suspend;
end

 

     Previous topic Chapter index Next topic