ORACLE存储过程问题

时间:2016-04-15 07:29:41

标签: stored-procedures plsql oracle11g oracle10g

我创建了一个存储过程,其中包含一个输入参数和一个光标来获取结果

create or replace PROCEDURE TEST_STORED_PROC2
    (DISEASEID IN varchar2, stock2_cursor OUT SYS_REFCURSOR)
IS
BEGIN
    OPEN stock2_cursor FOR
       SELECT DISTINCT 
           B.*, INITCAP(B.SYMPTOM_NAME) SYMPTOM_DESCRIPTION_NEW
       FROM 
           SYMPTOM_GLCL_DISEASE_LINK A, SYMPTOM_MASTER B
       WHERE 
           A.SYMPTOM_ID = B.SYMPTOM_ID
           AND A.DISEASE_ID IN DISEASEID;
END;

我想在输入参数中传递3个diseaseid,怎么做?

1 个答案:

答案 0 :(得分:0)

快速而肮脏的黑客可以通过DISEASEID参数(例如12,245,2532)传递连接的ID,然后使用LIKE运算符进行比较(查询的最后一行):

AND ',' || DISEASEID || ',' LIKE '%,' || A.DISEASE_ID || ',%';

但请注意,这不是最佳解决方案(关于速度,最佳实践......)。