总的来说,我需要调用一个以表类型为参数的函数。我需要在打电话前填写,这就是我遇到问题的地方。
类型定义如下:
create or replace TYPE MY_OBJ IS OBJECT(field1 NUMBER(10), field2 NUMBER(10), field3 VARCHAR2(2));
create or replace TYPE "MY_OBJ_ARRAY_TYPE" IS TABLE OF MY_OBJ;
我的程序如下:
DECLARE
-- ...
v_temp_table MY_OBJ_ARRAY_TYPE;
-- ...
BEGIN
v_temp_table := MY_OBJ_ARRAY_TYPE();
-- the following is incorrect
SELECT field1, field2, field3
BULK COLLECT INTO v_temp_table
FROM table1;
-- ... call the function here with v_temp_table as parameter
END;
SELECT INTO方法:
SELECT INTO TABLE(v_temp_table) (field1, field2, field3)
VALUES (f1, f2, f3)
FROM table1;
我不确定正确的语法应该是什么,v_temp_table
未被识别为表格。
答案 0 :(得分:1)
试
SELECT NEW MY_OBJ( field1, field2, field3)
BULK COLLECT INTO v_temp_table
FROM table1;