› Fóruns › SQL e PL/SQL › Passagem de parâmetros para uma procedure › Passagem de parâmetros para uma procedure
Olá, sugiro que você crie o parametro como uma lista de valores numericos:
1º Crie um type publico:
CREATE OR REPLACE TYPE TYP_TB_OBJ_NUMBER IS TABLE OF NUMBER;
2º Altere os parametros de suas procedure para ser do mesmo tipo do type criado acima:
CREATE OR REPLACE PROCEDURE pr_teste (p_cd_paciente IN TYP_TB_OBJ_NUMBER )
3º Agora, altere o select de sua procedure para buscar todos os valores da lista:
SELECT 1
INTO v_result
FROM sol_exame se
WHERE se.cd_paciente IN (SELECT *
FROM TABLE(CAST(p_cd_paciente AS TYP_TB_OBJ_NUMBER)));
Sua procedure dever ficar assim:
CREATE OR REPLACE PROCEDURE pr_teste (p_cd_paciente IN TYP_TB_OBJ_NUMBER)
AS
v_result NUMBER (1);
BEGIN
SELECT 1
INTO v_result
FROM sol_exame se
WHERE se.cd_paciente IN (SELECT *
FROM TABLE(CAST(p_cd_paciente AS TYP_TB_OBJ_NUMBER)));
END;
Para efetuar o teste, execute o seguinte comando:
DECLARE
p typ_tb_obj_number := typ_tb_obj_number();
BEGIN
P.EXTEND;
---Coloque aqui a lista de valores que vc deseja
P(1) := 1;
P(2) := 2;
pr_teste(p => p);
END;
Vlw Leonardo Litz