我有逗号分隔的字符串,我正在将这个逗号分隔的字符串传递给 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";
但是在这两种方式上它都失败了并且没有抛出任何异常。 你能帮我解决这个问题吗?
最佳答案
尝试使用:
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)
关于java - 将逗号分隔的字符串传递给存储过程中的 IN 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30482778/