[firebase-br] Procedure funciona em modo debug mas nao funciona no comando direto....

Joao Eduardo Barbosa Eto joaoeto em asttra.com.br
Qua Fev 2 11:00:46 -03 2005


oi para todos amigos da lista.


Estou com o seguinte problema, na procedure abaixo quando executo a mesma no 
modo debug, a procedure funciona ok, mas se mando executar direto, ela nao 
retorna nada.

No caso, esta procedure eh para atualizar os valores dos GENERATORs 
existentes.
`
Por favor me ajudem....:)


um grande abraco a todos..


CREATE PROCEDURE P_ATUALIZAGENERATOR
returns (ATUALIZADOS Integer)
AS
DECLARE VARIABLE NOMECAMPO VARCHAR(300);
DECLARE VARIABLE NOMETABELA VARCHAR(300);
DECLARE VARIABLE VALORATUAL INTEGER;
DECLARE VARIABLE NVAL INTEGER;
DECLARE VARIABLE NREGISTROS INTEGER;
DECLARE VARIABLE NOMEGENERATOR VARCHAR(300);
begin
  VALORATUAL=0;
  NVAL=0;
  NREGISTROS=0;
  ATUALIZADOS=0;
  NOMECAMPO='';
  For
    select i.rdb$field_name,r.rdb$relation_name from 
rdb$relation_constraints r
         join rdb$index_segments i on (r.rdb$index_name = i.rdb$index_name) 
where  (r.rdb$constraint_type = 'PRIMARY KEY') into :NOMECAMPO,:NOMETABELA
  do begin

     NomeGenerator='GEN_' || :Nometabela || '_ID';
     select count(*) from rdb$generators where (rdb$system_flag<>1) or 
(rdb$system_flag is null) and rdb$generator_name=:NOMEGENERATOR into 
:Nregistros;
     if (Nregistros>0) then begin
        if ((NOMETABELA='PRODUTOSCOD') OR (NOMETABELA='COMBUSTIVEIS') OR 
(NOMETABELA='PRODUTOS')) then BEGIN
           NOMEGENERATOR='GEN_CODIGOS_ID';
           Select coalesce(max(CODIGO),0) FROM COMBUSTIVEIS INTO 
:VALORATUAL;
           IF (VALORATUAL<NVAL) THEN VALORATUAL=NVAL;
           NVAL=VALORATUAL;
           Select coalesce(max(CODIGO),0) FROM PRODUTOS INTO :VALORATUAL;
           IF (VALORATUAL<NVAL) THEN VALORATUAL=NVAL;
           NVAL=VALORATUAL;
           Select coalesce(max(CODIGO),0) FROM PRODUTOSCOD INTO :VALORATUAL;
           IF (VALORATUAL<NVAL) THEN VALORATUAL=NVAL;
           execute statement 'SET GENERATOR ' || :NOMEGENERATOR || ' TO ' || 
:VALORATUAL;
        END ELSE BEGIN
           EXECUTE STATEMENT 'Select coalesce(max('||:NOMECAMPO||'),0) from 
'||:NOMETABELA  into :VALORATUAL;
           EXECUTE STATEMENT 'SET GENERATOR ' ||:NOMEGENERATOR || ' TO ' || 
:VALORATUAL;
        END
        ATUALIZADOS=ATUALIZADOS+1;
     END
  end
  suspend;
END 







Mais detalhes sobre a lista de discussão lista