将逗号分隔的字符串传递给存储过程中的IN子句

时间:2015-05-27 12:41:28

标签: java stored-procedures

我正在使用逗号分隔字符串,我将此逗号分隔给oracle存储过程。现在如何在游标中将此字符串处理为IN子句。

String codes = "ABCD','EEFF','GGHH";

游标查询就像

    CURSOR cur_bill_cod
   IS
      SELECT a.*
  FROM bill_codes a
 WHERE a.code in (p_codes)  ;

我在程序中将p_codes声明为varchar。

但它不是取记录。我尝试以另一种方式传递字符串

String codes = "ABCD,EEFF,GGHH";

但是两种方式都失败了,并没有抛出任何异常。  你能帮我解决这个问题。

1 个答案:

答案 0 :(得分:2)

尝试使用:

CURSOR cur_bill_cod
   IS
      SELECT a.*
  FROM bill_codes a
 WHERE a.code in (  
            SELECT CAST (TRIM (REGEXP_SUBSTR (p_codes,
                                '[^,]+',
                                1,
                                LEVEL)) AS VARCHAR2 (30))
                    codes
                FROM DUAL
            CONNECT BY LEVEL <= REGEXP_COUNT (p_codes, ',') + 1)