0
CREATE OR REPLACE TYPE myObjectFormat 
AS OBJECT
(
 A   VARCHAR2(200),
 B   INTEGER,
 C   INTEGER
)
/

CREATE OR REPLACE TYPE myTableType
   AS TABLE OF myObjectFormat ;
/

CREATE OR REPLACE PACKAGE demo4
AS
  FUNCTION f1(p_abc_tab IN myTableType) RETURN myTableType PIPELINED;
 END;
/

CREATE OR REPLACE PACKAGE BODY demo4 AS
FUNCTION f1(p_abc_tab IN myTableType) RETURN myTableType PIPELINED IS
BEGIN
FOR i in p_abc_tab.first .. p_abc_tab.last
 LOOP
   PIPE ROW (myObjectFormat(p_abc_tab(i).a,p_abc_tab(i).b,p_abc_tab(i).c));
 END LOOP;
 RETURN;
 END;
END;
 / 
create or replace function demo3
 return TYPES.RETURN_CUR
IS

abc_tab myTableType:=myTableType();
abc_cur TYPES.RETURN_CUR;


begin
abc_tab.EXTEND;
abc_tab (1)      := myObjectFormat('ac',1,2);
 abc_tab.EXTEND; 
abc_tab (2)      := myObjectFormat('acfc',1,2);

open abc_cur for select * from table(demo4.f1(abc_tab)) ;

return abc_cur;

 end;

select demo3() from dual;

我收到以下错误

ORA-22905: cannot access rows from a non-nested table item
ORA-06512: at "T416493.DEMO3", line 15

我想将光标从函数返回到前端 java。我正在使用 oracle 作为 RDBMS,这段代码可能有什么问题。

4

0 回答 0