[firebase-br] Criacao de Triggers e Stored em tempo de execucao

Vanderson vanderson em tisul.com.br
Qua Jan 11 16:55:20 -03 2012


Boa tarde,

Estou tentando criar uma trigger em tempo de execução, porém está gerando o erro
"General SQL error.Token unknown - line 10, column 8?", mas é só com essa
trigger que tem "into" e "for" encadeado e no ibexpert cria normalmente e
funciona corretamente, utilizo o sqlscript e delphi 6.

CREATE OR ALTER trigger cria_saldo_inicial_empresa for empresa
active after insert position 0
AS
declare variable cod_produto  integer;
declare variable tipo_estoque integer;
declare variable centro_armaz integer;
begin
  for select PR.PRODICOD
      from   PRODUTO PR
      into   :cod_produto
  do begin
    for select TE.TPESICOD
        from   TIPOESTOQUE TE
        into   :tipo_estoque
    do begin
      for select CE.CEESICOD
          from   CENTROESTOQUE CE
          into   :centro_armaz
      do begin
        insert into PRODUTOSALDO(EMPRICOD, PRODICOD, TPESICOD, CEESICOD,
PSLDN3QTDE, PSLDN3QTDMIN, PSLDN3QTDMAX, PENDENTE, REGISTRO)
                    values(new.empricod, :cod_produto, :tipo_estoque,
:centro_armaz, 0, 0, 0, 'S', current_timestamp);
      end

      if (centro_armaz is null) then
      begin
        centro_armaz = 1;

        insert into PRODUTOSALDO(EMPRICOD, PRODICOD, TPESICOD, CEESICOD,
PSLDN3QTDE, PSLDN3QTDMIN, PSLDN3QTDMAX, PENDENTE, REGISTRO)
                    values(new.empricod, :cod_produto, :tipo_estoque,
:centro_armaz, 0, 0, 0, 'S', current_timestamp);

        centro_armaz = null;
      end
    end

    if (tipo_estoque is null) then
    begin
      tipo_estoque = 1;

      for select CE.CEESICOD
          from   CENTROESTOQUE CE
          into   :centro_armaz
      do begin
        insert into PRODUTOSALDO(EMPRICOD, PRODICOD, TPESICOD, CEESICOD,
PSLDN3QTDE, PSLDN3QTDMIN, PSLDN3QTDMAX, PENDENTE, REGISTRO)
                    values(new.empricod, :cod_produto, :tipo_estoque,
:centro_armaz, 0, 0, 0, 'S', current_timestamp);
      end

      if (centro_armaz is null) then
      begin
        centro_armaz = 1;

        insert into PRODUTOSALDO(EMPRICOD, PRODICOD, TPESICOD, CEESICOD,
PSLDN3QTDE, PSLDN3QTDMIN, PSLDN3QTDMAX, PENDENTE, REGISTRO)
                    values(new.empricod, :cod_produto, :tipo_estoque,
:centro_armaz, 0, 0, 0, 'S', current_timestamp);

        centro_armaz = null;
      end

      tipo_estoque = null;
    end
  end
end






Mais detalhes sobre a lista de discussão lista