有谁能帮忙吗。我已经把这件事简化了,但想不出来。我得到ORA-00932:不一致的数据类型预期UDT得到编号。我已经花了一周的时间来弄清楚这一点。我对此没有太多经验。
create or replace TYPE TEST_REC as object (
NUM NUMBER
);
create or replace TYPE TEST_TAB is table of ELIMINATOR.TEST_REC
create or replace FUNCTION test_func_smm return TEST_TAB
as
query_str_main VARCHAR2 (20000);
V_ILIMIT NUMBER ;
V_IINTCNT PLS_INTEGER := 0;
TYPE RC IS REF CURSOR;
VRC RC;
VTAB TEST_TAB := TEST_TAB ();
VTEMPTAB TEST_TAB := TEST_TAB ();
con_iReclimit CONSTANT NUMBER := 5000;
begin
query_str_main := ' select 5 as a from dual';
dbms_output.put_line(query_str_main);
OPEN VRC FOR query_str_main;
LOOP
EXIT WHEN VRC%NOTFOUND;
FETCH VRC
BULK COLLECT INTO VTEMPTAB
LIMIT con_iReclimit;
DBMS_OUTPUT.PUT_LINE('BULK COLLECT');
VTAB :=
VTAB MULTISET UNION ALL VTEMPTAB;
V_IINTCNT :=
V_IINTCNT + VTEMPTAB.COUNT;
END LOOP;
IF VRC%ISOPEN
THEN
CLOSE VRC;
END IF;
RETURN VTAB;
end;
1条答案
按热度按时间r1zk6ea11#
这就是罪魁祸首:
应该是
固定时,函数起作用:
测试: