Fórum Como passar parâmetro IN para uma Stored Proc... #55091
06/02/2006
0
Tenho uma SP (firebird 1.0) que é o seguinte:
for
select codpedido, datapedido, vlrsubtotal
from pedido
where codpedido in (:pNum)
into
:PS_QUANTPED,
:PS_DTULTPED,
:PS_VLRTOTALPED
do
Suspend;
End
Bom galera, eu precisaria passar na variavel pNum uma cadeia de valores do tipo, (12,15,8,20,30) mas isso nao funciona caso eu passe por parâmetro, mas se eu colocar direto na SP funciona que é uma beleza... alguem tem uma sugestão de como posso resolver esse problema ?
Pensei em criar a SP a partir da minha aplicação cliente, ja com os valores na clausula IN ai então executar a SP e depois da execução dar um DROP na SP.
Não sei se essa seria a melhor solução, mas até agora nao vejo solução para a passagem de parâmetros para a clausula IN.
Valeu pessoal, fico no aguardo de uma resposta de vcs.
Abraços
[quote:f68e91c3ea=´Moderação´][color=red:f68e91c3ea]Título editado por Massuda
Removido: ´Por favor!´
Evite utilizar termos apelativos no título.[/color:f68e91c3ea][/quote:f68e91c3ea]
Diegodelphi
Curtir tópico
+ 0Posts
06/02/2006
Diegodelphi
Gostei + 0
08/02/2006
Thomaz_prg
Se você fizer como está pensando, de criar a SP em tempo de execução, pode acontecer que, se 2 usuários tentarem a mesma operação ao mesmo tempo, aparecerá para um deles uma mensagem e erro, pois a procedure já estará existindo...
Uma forma de você resolver isso, seria usar o EXECUTE STATEMENT, dessa forma:
CREATE PROCEDURE TESTE ( pNum varchar(100) ) RETURNS ( PS_QUANTPED INTEGER, PS_DTULTPED DATE, PS_VLRTOTALPED DOUBLE PRECISION ) AS DECLARE VARIABLE COMANDO VARCHAR(200); BEGIN COMANDO = ´select codpedido, datapedido, vlrsubtotal from pedido where codpedido in (´|| :pNUM ||´)´; FOR EXECUTE STATEMENT :COMANDO into :PS_QUANTPED, :PS_DTULTPED, :PS_VLRTOTALPED do Suspend; End
então usaria assim:
SELECT * FROM TESTE ( ´12,15,8,20,30,50´ )
Este é um recurso do Firebird a partir do 1.5 se não estou enganado.
Gostei + 0
10/02/2006
Diegodelphi
Era isso ai...
Obrigado
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)