[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