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

标签 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";

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

最佳答案

尝试使用:

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/

相关文章:

SQL 迭代列表以对每个项目调用 EXEC

java - 跳过并选择 java arraylist 的选项?

甲骨文 : PLS-00103 occur on procedure with condition

c# - 使用 JSON 输入创建表定义的存储过程

azure - 使用 Azure 数据工厂中的 REST API 映射嵌套 JSON,通过存储过程将每个迭代器使用到 SQL 表

mysql - 存储过程中的动态游标

java - 光线追踪三角形的问题(方向和着色)

java - 跨越tomcat和django

java - 在服务器上部署java EE应用程序

java - springboot 外部配置 - 配置文件特定配置