ORACLE存储过程问题



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

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个疾病ID,如何做到这一点?

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

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

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

最新更新