将数组传递到oracle sql并使用该数组
我遇到了以下问题,我正在将一个字符串数组传递到Oracle SQL中,我想检索列表中id所在的所有数据 这是我试过的将数组传递到oracle sql并使用该数组,sql,oracle,Sql,Oracle,我遇到了以下问题,我正在将一个字符串数组传递到Oracle SQL中,我想检索列表中id所在的所有数据 这是我试过的 OPEN O_default_values FOR SELECT ID AS "Header", VALUE AS "DisplayValue", VALUE_DESC AS "DisplayText" FROM TBL_VALUES WHERE ID IN I_id; I_id是如下描述的数组-类型gl_id是通过PLS_INTEGER的
OPEN O_default_values FOR
SELECT ID AS "Header",
VALUE AS "DisplayValue",
VALUE_DESC AS "DisplayText"
FROM TBL_VALUES
WHERE ID IN I_id;
I_id是如下描述的数组-类型gl_id是通过PLS_INTEGER的VARCHAR2(15)索引的表
我得到了“表达式类型错误”的错误。
I_id数组有时可以大到600条记录。
我的问题是,有没有一种方法可以实现我刚才描述的,或者我需要创建某种游标并在数组中循环
已经尝试过的-动态创建SQL字符串,然后将值转换到SQL字符串的末尾,然后执行它。这将适用于少量数据,并且字符串的大小是静态的,这将导致一些其他错误(如索引超出范围)。请查看此链接: 实际上,您需要的是列表中的一个带有绑定变量的变量 请注意: “the”已弃用。没必要 今天 桌子是它的替代品 从表(函数)中选择*
由于您已经拥有该类型,因此只需执行以下类似操作:
OPEN O_default_values FOR
SELECT ID AS "Header",
VALUE AS "DisplayValue",
VALUE_DESC AS "DisplayText"
FROM TBL_VALUES
WHERE ID IN (select column_value form table(I_id));