[firebase-br] [Fwd: Re: RES: RES: RES: ajuda com sintaxe em stored procedure]
Cássio
cassio.hc em gmail.com
Qui Jul 2 16:38:06 -03 2009
GRUPO_ID e GRUPO_SUB são bigint
as datas estão ok, pois sem eu usar a variável wWhere funciona.
A wWhere é um varchar(200)
flw...
Eduardo Jedliczka escreveu:
> como está o valor das variáveis GRUPO_ID e GRUPO_SUB... elas são
> numéricas ou são Char ?
>
> e a data... qual é o formato delas ? será que não faltou colocar abre e
> fecha aspas (simples) na data ?
>
> Abraço
>
> Eduardo
>
> Em Qui, 2009-07-02 às 16:14 -0300, Cássio escreveu:
>> e acredito que o problema está ali no if e carregando a wWhere..
>> porque fiz sem isso, passando direto a que pega os grupos, sem
>> concatenar colocando direto no where mesmo, e funcionou...
>>
>> a concatenação deve estar errada em algum ponto.
>>
>> vlw.
>>
>> Cássio escreveu:
>>> SIM. estava faltando mesmo. porém o mesmo erro procede...
>>>
>>> estou esquecendo de mais alguma coisa..
>>>
>>> vlw.
>>>
>>> Ivan Guimarães Meirelles escreveu:
>>>> Olá Cássio...
>>>>
>>>> Verifique se não é algum problema com o ALIAS q vc usou "L"
>>>> ' AND L.ID_GRUPO= ' || :GRUPO_ID || ' AND L.ID_GRUPO_SUB= '
>>>>
>>>> No que vc me passou está faltando L. para os campos ID_GRUPO e
>>>> ID_GRUPO_SUB
>>>>
>>>> Pode ser isso... mas não tenho certeza... teste e me fala o q acontece...
>>>>
>>>> Um abraço.
>>>>
>>>> -----Mensagem original-----
>>>> De: lista-bounces em firebase.com.br
>>>> [mailto:lista-bounces em firebase.com.br] Em
>>>> nome de Cássio
>>>> Enviada em: quinta-feira, 2 de julho de 2009 14:03
>>>> Para: lista em firebase.com.br
>>>> Assunto: Re: [firebase-br] RES: RES: ajuda com sintaxe em stored
>>>> procedure
>>>>
>>>> TO FAZENDO ASSIM OH..
>>>>
>>>>
>>>> DECLARE VARIABLE wWhere VARCHAR(200);
>>>> BEGIN
>>>>
>>>> if (:tipo_Rel = 'L') then --Aqui é uma das entradas...
>>>> wWHERE = '(L.DATA_LANCAMENTO BETWEEN ' || :INICIO || ' AND ' ||
>>>> :FIM || ')';
>>>> else
>>>> wWHERE = '(L.DATA_LANCAMENTO BETWEEN ' || :INICIO || ' AND ' ||
>>>> :FIM || ' AND ID_GRUPO= ' || :GRUPO_ID || ' AND ID_GRUPO_SUB= ' ||
>>>> :GRUPO_SUB_ID || ')';
>>>>
>>>> /*Seleciona os registros dentro do periodo informado
>>>> buscando na tabela lançamentos*/
>>>> For execute statement 'SELECT
>>>> ID_LANCAMENTO,
>>>> ID_SEQUENCIAL,
>>>> DATA_COMPETENCIA
>>>> FROM
>>>> LANCAMENTOS L
>>>> WHERE ' || wWhere || '
>>>> ORDER BY L.NOME_PROPRIET, L.ID_SEQUENCIAL '
>>>> INTO :ID_LANCAMENTO,:ID_SEQUENCIAL,:DATA_COMPETENCIA
>>>> DO
>>>> BEGIN
>>>> SUSPEND;
>>>> END
>>>> end
>>>>
>>>>
>>>> teoricamente está tudo certo.. ela cria.. mas dá o erro que já
>>>> coloquei anteriormente>
>>>> > SQL Error: Dynamic SQL Error SQL error code = -104 Token unknown -
>>>> line
>>>> > 39, column 44 0. Error Code: -104. Invalid token
>>>>
>>>> Cássio escreveu:
>>>>> cERTO. Consegui fazer ajusta e executou belza..
>>>>>
>>>>> mas agora me retorna o seguinte erro:
>>>>> SQL Error: Dynamic SQL Error SQL error code = -104 Token unknown -
>>>>> line 39, column 44 0. Error Code: -104. Invalid token
>>>>> que não ajuda muito né.. porque na linha 39 é um campo do meu select
>>>>> que não tem nenhuma ligação com as alterações que fiz. tem alguma dica?
>>>>>
>>>>> vlw.
>>>>>
>>>>>
>>>>> Ivan Guimarães Meirelles escreveu:
>>>>>> Segue a sintaxe normal dor FOR com INTO veja:
>>>>>>
>>>>>> For execute statemente 'select campos from tabela where ' || :wWhere
>>>>>> || '
>>>>>> order by campos '
>>>>>> Into :variaveis do
>>>>>> Begin
>>>>>> Suspend;
>>>>>> End
>>>>>>
>>>>>> É por ai... espero ter ajudado...
>>>>>> Um abraço.
>>>>>>
>>>>>> -----Mensagem original-----
>>>>>> De: lista-bounces em firebase.com.br
>>>>>> [mailto:lista-bounces em firebase.com.br] Em
>>>>>> nome de Cássio
>>>>>> Enviada em: quinta-feira, 2 de julho de 2009 12:34
>>>>>> Para: lista em firebase.com.br
>>>>>> Assunto: Re: [firebase-br] RES: ajuda com sintaxe em stored procedure
>>>>>>
>>>>>> depois do order by campos eu faço assim:
>>>>>>
>>>>>> order by campos
>>>>>> into :saida1, :saida2
>>>>>>
>>>>>> como ficaria essa concatenação?
>>>>>>
>>>>>> vlw.
>>>>>>
>>>>>>
>>>>>> Ivan Guimarães Meirelles escreveu:
>>>>>>> Olá Cássio...
>>>>>>>
>>>>>>> Nesse caso vc terá que usar EXECUTE STATEMENT
>>>>>>> Seguindo o seu código ficaria assim:
>>>>>>>
>>>>>>> For execute statemente 'select campos from tabela where ' ||
>>>>>>> :wWhere || '
>>>>>>> order by campos'
>>>>>>>
>>>>>>> Espero ter ajudado
>>>>>>> Um abraço...
>>>>>>>
>>>>>>> -----Mensagem original-----
>>>>>>> De: lista-bounces em firebase.com.br
>>>>>>> [mailto:lista-bounces em firebase.com.br]
>>>>>> Em
>>>>>>> nome de Cássio
>>>>>>> Enviada em: quinta-feira, 2 de julho de 2009 11:00
>>>>>>> Para: lista em firebase.com.br
>>>>>>> Assunto: [firebase-br] ajuda com sintaxe em stored procedure
>>>>>>>
>>>>>>> Opa.
>>>>>>> Estou tentando atribuir um 'where id=:campoEntrada' para uma
>>>>>>> variable que declarei dentro da minha SP e a chamei de wWhere.
>>>>>>> Preciso fazer assim pois em algum momento o where pode mudar.
>>>>>>>
>>>>>>> só que não estou conseguindo fazer
>>>>>>>
>>>>>>> no meu for Select fiz assim: for select campos
>>>>>>> from tabela
>>>>>>> where :wWhere 'o erro ta dando aqui...
>>>>>>> order by campos
>>>>>>>
>>>>>>>
>>>>>>> como faço neste caso..
>>>>>>>
>>>>>>>
>>>>>>> vlw.
>>>>>>>
>>>>>>>
>
>
> ______________________________________________
> 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