Pular para o conteúdo

Fóruns SQL e PL/SQL Passagem de parâmetros para uma procedure Passagem de parâmetros para uma procedure

#96844
Avatar photoLeonardo Litz
Participante

    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