我想在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||'))'
1条答案
按热度按时间t98cgbkg1#
你混淆了两种指代集合成员的方式。
对于您显示的集合类型,您可以执行以下操作:
或者更简单地说:
fiddle
在处理大量数据时,您可能会发现两者之间的性能差异。
还要注意,结果数组的最后一个元素为空。
你的例子不需要使用游标和for循环,你可以直接批量收集到目标集合中(这样就不需要初始化,也没有空元素):
fiddle