[firebase-br] RES:RES: Passar nome do campo como parâmetro em Stored Procedure

Marcio R. Fonseca phoenix.info em itelefonica.com.br
Seg Fev 9 16:21:55 -03 2009


Daniel, 
esta quase, a primeira parte da SP foi beleza, agora não consegui resolver o erro que esta dando nesta linha:

        execute statement 'update PRODUTOS set ' || :CAMPO_ENT
        ||'='||:CAMPO_ENT-:oqtd_var||' where codp='||:ocod_var;

Dá o seguinte erro:

Unsuccessful execution caused by a system error that precludes
successful execution of subsequent statements.
Dynamic SQL Error.
expression evaluation not supported.


Será que não posso aninhar dois comandos statement?

Comento esta linha funciona.




Olá Márcio!

Utilize o Execute Statement.

Acho que sua SP ficaria mais ou menos assim:

begin
for execute statement 'select o.CD_PRODUTO,o.OQTD,' || :CAMPO_ENT || 'from
orcami o inner join PRODUTOS p on p.CD_PRODUTO=o.CD_PRODUTO where o.ONUM='
|| :ONUM_ENT 
into :ocod_var,:oqtd_var,:esto_var 
do
begin
     if (:OQTD_VAR>:ESTO_VAR) then
        execute statement 'update PRODUTOS set ' || :CAMPO_ENT
        ||'='||:CAMPO_ENT-:oqtd_var||' where codp='||:ocod_var;
     else
        OCOD_SAI=:ESTO_VAR;
     suspend;
   end
end


Acho que é isso. Só não testei :D.

Sds,

Daniel




-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Marcio R. Fonseca
Enviada em: domingo, 8 de fevereiro de 2009 23:24
Para: lista em firebase.com.br
Assunto: [firebase-br] Passar nome do campo como parâmetro em Stored
Procedure

Caros amigos, 
tentei criar uma SP que recebesse como parametro o nome de um campo para
atualizar

begin
for select o.CD_PRODUTO,o.OQTD,:CAMPO_ENT from orcami o inner join PRODUTOS
p
on p.CD_PRODUTO=o.CD_PRODUTO where o.ONUM=:ONUM_ENT into
:ocod_var,:oqtd_var,:esto_var do
   begin
     if (:OQTD_VAR>:ESTO_VAR) then
     update PRODUTOS set :CAMPO_ENT=:CAMPO_ENT-:oqtd_var where
codp=:ocod_var;
     else
     OCOD_SAI=:ESTO_VAR;
     suspend;
   end
end 

Existe alguma maneira de se fazer isso?
Grato
 
______________________________________________
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