[firebase-br] Erro ao chamar Stored Procedure

Jeter Rabelo Ferreira jeter.rabelo em gmail.com
Ter Maio 23 15:26:38 -03 2006


Obrigado Maycon,
Deu certo.

[]'s
Jéter Rabelo

Em 23/05/06, Maycon Ferraça <maycon em nucleosistemas.com.br> escreveu:
>
> Substitua a linha:
>    EXECUTE STATEMENT strlen(ID_CONTA_RES) INTO :I_QTDE;
> por:
>    SELECT TAM FROM strlen(ID_CONTA_RES) INTO :I_QTDE;
>
> Strlen declarada não é uma função e sim uma store procedure selecionável
> sendo a sua syntax diferente. E mesmo se strlen fosse uma função, do
> jeito que você estava utilizando não funcionaria.
>
> Maycon Ferraça
>
>
>
> Jeter Rabelo Ferreira escreveu:
> > Boa tarde,
> > Estou modificando uma rotina de cálculo do meu sistema para Stored
> > Procedure.
> > Eu precisava de uma função de Length() para umas das condições.
> > Pequei um exemplo na lista de discussão de uma função deste tipo, segue
> > abaixo:
> >
> > CREATE PROCEDURE STRLEN (
> >     TEXTO VARCHAR(1000))
> > RETURNS (
> >     TAM INTEGER)
> > AS
> > DECLARE VARIABLE BUF VARCHAR(1000);
> > BEGIN
> >   TAM = 0;
> >   BUF = '';
> >   WHILE (NOT TEXTO LIKE BUF) DO
> >   BEGIN
> >     TAM = TAM + 1;
> >     BUF = BUF || '_';
> >   END
> > END
> >
> > O Firebird cria a função corretamente, mas, na hora de chamá-la,
> acontece o
> > seguinte erro:
> >
> > An error was found in the application program input parameters for the
> SQL
> > statement.
> > Dynamic SQL Error.
> > SQL error code = -804.
> > Function unknown.
> > STRLEN.
> >
> > A Rotina que eu utilizo para chamar esta procedure é a seguinte:
> > if (id_conta_res <> '') then
> > begin
> >   EXECUTE STATEMENT strlen(ID_CONTA_RES) INTO :I_QTDE;
> >   if (I_QTDE = 7) then
> >   begin
> >     X_WHERE2 = X_WHERE2 || 'cx.ID_CONTA_RES=' || :id_conta_res;
> >     if (id_cta_indiv <> '') then
> >       X_WHERE2 = X_WHERE2 || 'and cx.ID_CTA_INDIV=' || :id_cta_indiv;
> >     end
> >   else
> >   begin
> >     X_WHERE2 = X_WHERE2 || 'cx.ID_CONTA LIKE ' || :id_conta_res;
> >     X_WHERE2 = X_WHERE2 || '%';
> >   end
> > end
> >
> >
> > Alguem poderia me ajudar?
> >
> > Delphi + DBExpress + Firebird 1.5.3.4870
> >
> > []'s
> > Jéter Rabelo
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para editar sua configuração na lista, use o endereço
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para editar sua configuração na lista, use o endereço
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista