【发布时间】:2019-10-23 12:49:48
【问题描述】:
我需要让 EXECUTE IMMEDIATE 将其结果返回到表类型(AS TABLE OF)
如果立即执行返回单个值,我可以使用“INTO somevariable”保存结果
但是,我的立即执行将返回一个多列的表,并且没有多少谷歌搜索可以帮助我弄清楚!
首先我创建类型
CREATE OR REPLACE TYPE T_VALIDITY_RECORD AS OBJECT (
TIME_COL DATE,
VALUE_COL NUMBER
);
/
CREATE OR REPLACE TYPE T_VALIDITY_TABLE AS TABLE OF T_VALIDITY_RECORD;
/
然后我尝试代码
DECLARE
RET_TABLE T_VALIDITY_TABLE;
BEGIN
EXECUTE IMMEDIATE 'SELECT my_date,
my_numbers
FROM my_table
WHERE somthing = somthingelse' INTO RET_TABLE;
END;
这只是一个非常简化的例子,真正的代码会做(会做其他事情)
我尝试了各种方法,例如 BULK COLLECT INTO 等,但似乎无法正常工作。
我收到以下错误:
错误报告
ORA-00932:不一致的数据类型:预期 - 得到 -
ORA-06512:在第 5 行
00932. 00000 - “不一致的数据类型:预期的 %s 得到了 %s”
*原因:
*行动:
【问题讨论】: