【发布时间】:2023-02-25 05:46:34
【问题描述】:
我想在open c1 for sql-statement(在 plsql 中)中使用数组
数组是varchar2; 的表。
数组由另一个函数填充:
OPEN v_c1 FOR query_statement;
LOOP
v_hrc_list.extend;
FETCH v_c1 into v_hrc_list(v_hrc_list.count);
EXIT WHEN (v_c1%NOTFOUND);
END LOOP;
CLOSE v_c1;
我试过:
query_statement = `...||'WHERE MEMBER OF (select * from table (:table_hrcs))'`
OPEN v_c1 FOR query_statement USING table_hrcs;
我收到以下错误:
不一致的数据类型:预期的 UDT 得到 CHAR
我也试过
...||'WHERE MEMBER OF (select * from table ('||table_hrcs||'))'
【问题讨论】:
-
请提供可重现的示例(最小化的 query_statement),最好是 db fiddle。乍一看似乎有语法错误
where SOMETHING member of ...。还要指定 Oracle 版本。还有错误的 ora 代码 - 是 ORA-00932 吗? -
它不可执行但是:db-fiddle.com/f/X6AzcifZR5J2q9Jt2vzXV/0 是它的 ORA-00932 这个例子(没有 bind-var):ORA-06550:第 17 行,第 17 列:PLS-00306:调用“||”时参数的数量或类型错误
-
现在我添加了工作和非工作示例(为...打开 v_c1)