[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