我正在使用逗号分隔字符串,我将此逗号分隔给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";
但是两种方式都失败了,并没有抛出任何异常。 你能帮我解决这个问题。
答案 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)