[firebase-br] RES: utilização de CASE dentro de uma procedure
Cassios
cassio.hc em gmail.com
Sex Out 30 09:43:33 -03 2009
Dae Caras.
Consegui resolver criando duas variaveis para moedas e atribuindo a
moeda respectivamente...
DECLARE VARIABLE Reais VARCHAR(2);
DECLARE VARIABLE Dolar VARCHAR(3);
BEGIN
Reais = 'R$';
Dolar = 'US$';
no case usei assim:
CASE
WHEN Moeda = 0 THEN
''' || :Reais || '''
ELSE
''' || :Dolar || '''
END MOEDA_CHAR,
vlw pelas dicas.
abraço a todos.
Cassios escreveu:
> Na verdade estou com dois problemas:
>
> 1 - não consigo compilar a procedure se usar um campo assim:
> 'R$' as campo
> somente se for assim: "R$"
> porem se for com aspas, não roda a SP. dá este erro quando faço um
> select nela.:
>
> SQL Error: Dynamic SQL Error SQL error code = -206 Column
> unknown RAS At line 3, column 63. Error Code: -206. Column does not
> belong to referenced table
>
>
> 2 - o outro problema é do case.. não compila também. acho que se
> resolver o 1 o primeiro se resolve.
>
> vlw pelas dicas desde já.
>
>
>
>
> Cassios escreveu:
>> É que o campo moeda é um integer da tabela...
>> continua sem funcionar... :S
>>
>> agradeço as dicas. vlw
>>
>> Jose Aparecido da Silva escreveu:
>>> Posso estar escrevendo besteira, me desculpem e ignorem:
>>>
>>> Mas a sintaxe não é:
>>>
>>> For select ID, case Moeda when 0 then 'R$' else 'US$' end from
>>> minha_tabela
>>> into :id, :moeda do suspend;
>>>
>>> Não é necessário usar o cast. É só definir a variável moeda como
>>> varchar(3);
>>>
>>> [ ]'s
>>> Jose Aparecido da Silva
>>>
>>> -----Mensagem original-----
>>> De: lista-bounces em firebase.com.br
>>> [mailto:lista-bounces em firebase.com.br] Em
>>> nome de Cassios
>>> Enviada em: quinta-feira, 29 de outubro de 2009 18:19
>>> Para: lista em firebase.com.br
>>> Assunto: Re: [firebase-br] utilização de CASE dentro de uma procedure
>>>
>>> opa.
>>> ACHEI que tivesse resolvido. mas NÃO.
>>>
>>> não sei porque mas o firebird não deixa eu criar a procedure se a
>>> moeda estiver com (') apóstrofe. só com ("") aspas. Só que com aspas
>>> a SP retorna erro.
>>>
>>> alguem pode me dar uma dica?
>>>
>>>
>>> For select case
>>> when Moeda = 0 then
>>> Cast('R$' as varchar(3)) --assim não rola tenho que colocar
>>> apas aqui
>>> else
>>> Cast('US$' as varchar(3))
>>> end
>>> From minha_tabela
>>> INTO :ID, :MOEDA
>>> DO
>>> BEGIN
>>> SUSPEND;
>>> END
>>>
>>>
>>> vlw.
>>>
>>> Cassios escreveu:
>>>> Resolvi vlw.
>>>> o campo moeda é do tipo integer.. então na proceduro converti ele
>>>> para varchar e funcionou.
>>>>
>>>>
>>>> vlw!!!
>>>>
>>>>
>>>> Cassios escreveu:
>>>>> opa.
>>>>> tentei mas retorna o mesmo erro.
>>>>>
>>>>> SQL Error: Dynamic SQL Error SQL error code = -104 Token unknown -
>>>>> line 37, column 24 R$. Error Code: -104. Invalid token The SQL:
>>>>> ALTER PROCEDURE PR_minha
>>>>>
>>>>> não to entendo porque deveria funcionar... putz sei que é um detalhe..
>>>>>
>>>>> vlw.
>>>>>
>>>>>
>>>>> Moacir - GMail escreveu:
>>>>>> Ops,
>>>>>>
>>>>>> Não vi que retornava tb o ID.
>>>>>>
>>>>>> Mas o cast deve resolver.
>>>>>>
>>>>>> Moacir
>>>>>>
>>>>>>
>>>>>> Moacir - GMail escreveu:
>>>>>>> Cassios,
>>>>>>>
>>>>>>> Tire o campo id e faça um cast que deverá resolver teu problema:
>>>>>>>
>>>>>>> For select case
>>>>>>> when Moeda = 0 then
>>>>>>> Cast('R$' as varchar(3))
>>>>>>> else
>>>>>>> Cast('US$' as varchar(3))
>>>>>>> end
>>>>>>> From minha_tabela
>>>>>>>
>>>>>>> INTO :ID, :MOEDA
>>>>>>> DO
>>>>>>> BEGIN
>>>>>>> SUSPEND;
>>>>>>> END
>>>>>>>
>>>>>>>
>>>>>>> Não esqueça que este cast deve coincidir com o tipo do parametro
>>>>>>> de retorno MOEDA.
>>>>>>>
>>>>>>> Sucesso !!
>>>>>>>
>>>>>>> Moacir
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Cassios escreveu:
>>>>>>>> Opa.
>>>>>>>> To tentando fazer um case dentro de um For execute statement
>>>>>>>>
>>>>>>>> faço assim:
>>>>>>>>
>>>>>>>> For execute statement '
>>>>>>>> select id,
>>>>>>>> case
>>>>>>>> when Moeda = 0 then
>>>>>>>> 'R$'
>>>>>>>> else
>>>>>>>> 'US$' end as Moeda2
>>>>>>>> From minha_tabela
>>>>>>>>
>>>>>>>> INTO :ID, :MOEDA
>>>>>>>>
>>>>>>>> DO
>>>>>>>> BEGIN
>>>>>>>> SUSPEND;
>>>>>>>> END
>>>>>>>>
>>>>>>>>
>>>>>>>> se faço isso numa query normal, funciona, dentro do escopo da
>>>>>>>> procedure não. Alguma dica?
>>>>>>>>
>>>>>>>> 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
>>>>>>>>
>>>>>>> ______________________________________________
>>>>>>> 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
>>>>>>>
>>>>>> ______________________________________________
>>>>>> 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
>>>>>>
>>>>>
>>>>> ______________________________________________
>>>>> 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
>>>>>
>>>>
>>>> ______________________________________________
>>>> 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
>>>>
>>>
>>>
>>> ______________________________________________
>>> 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
>>>
>>>
>>> ______________________________________________
>>> 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
>>>
>>
>>
>> ______________________________________________
>> 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
>>
>
>
> ______________________________________________
> 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