[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