[firebase-br] Erro em execute block

Sandro Souza escovadordebits em gmail.com
Seg Jul 4 11:13:31 -03 2011


Bom dia/tarde Levy.

Nobre amigo, acredito que esteja faltando um "... INTO :variável" ao final
do último SELECT (exatamente antes do WHEN).

Apesar da sua intenção ser a de capturar qualquer exceção gerada na execução
da stored procedure "SP_PGMTO_CAIXA", sem necessitar processar o resultado
da mesma, acredito que não faz sentido para o "parser" do Firebird existir
um SELECT sem utilidade, ou seja, sem a cláusula INTO.

Experimente criar uma variável local, do tipo retornado por essa stored
procedure, apenas p/ ser colocada na cláusula INTO desse último SELECT,
mesmo que você não vá utilizar o resultado da mesma, mas acredito que isso
resolverá o seu problema.

Espero ter ajudado mais que atrapalhado. :D

Em 4 de julho de 2011 10:55, Levy Moreira <levymoreira.ce em gmail.com>escreveu:

> Pessoal quando executo o seguinte código:
>
> execute block
> returns (CODFAT integer, TIPFAT char(2))
> as
> begin
>  FOR select  FAT.TIPFAT, FAT.CODFAT From fat where fat.datfat =
> '17.06.2011'
>  INTO :TIPFAT, :CODFAT
>  DO
>  BEGIN
>    SELECT * FROM  SP_PGMTO_CAIXA (:TIPFAT, :CODFAT)
>    WHEN ANY do
>    begin
>      SUSPEND;
>    end
>  END
> end
>
>
> o mesmo me retorna o seguinte erro:
>
> Invalid token.
> Dynamic SQL Error.
> SQL error code = -104.
> Token unknown - line 11, column 5.
> WHEN.
>
>
> Mas se faço assim:
>
> execute block
> returns (CODFAT integer, TIPFAT char(2))
> as
> begin
>  FOR select  FAT.TIPFAT, FAT.CODFAT From fat where fat.datfat =
> '17.06.2011'
>  INTO :TIPFAT, :CODFAT
>  DO
>  BEGIN
>  --  SELECT * FROM  SP_PGMTO_CAIXA (:TIPFAT, :CODFAT)
>    SUSPEND;
>    WHEN ANY do
>    begin
>      SUSPEND;
>    end
>  END
> end
>
> Ele roda blz, já verifiquei a linha 'SELECT * FROM  SP_PGMTO_CAIXA
> (:TIPFAT,
> :CODFAT)'
> e ela esta ok, se eu roda somente assim:
>
> SELECT * FROM  SP_PGMTO_CAIXA ('VV', 100)
>
> ela funciona beleza...
>
> O que estou tentando fazer é dar um suspend somente quando houver algum
> erro
> para isso uso o
> WHEN ANY do
> que achei aqui na lista.
>
> Alguém tem uma pista do que pode ser?
>
> Obrigado a todos desde já.
>
> --
> Levy Moreira - Programador
> Sistech Informática - Juazeiro do Norte - CE
>
> ...........................................................................
> "Aviso de confidencialidade profissional" - Esta mensagem eletrônica e
> seus anexos são destinados exclusivamente ao(s) destinatário(s) acima e
> podem conter informações confidenciais sujeitas a restrição legal de
> comunicação entre as partes. Caso tenha recebido esta mensagem por engano,
> fica V.S.ª ciente de que a distribuição, divulgação ou disseminação das
> informações aqui contidas ou anexadas é terminantemente proibida,
> sujeitando
> o responsável às penalidades aplicáveis. Assim, solicitamos a gentileza
> de retorná-la de imediato ao remetente, eliminando-a definitivamente de
> seu sistema. Em caso de dúvida, queira por favor entrar em contato."
>
> "Confidentiality notice" - This message and its attachments are
> addressed solely to the persons above and may contain privileged and
> confidential
> communication. If you have received the message in error, the
> distribution or dissemination of the content hereof is prohibited. Please
> return it
> immediately to the sender and please delete the message from your system
> on a permanent basis. Should you have any questions, please contact."
>
> ...........................................................................
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista