0

我是甲骨文收藏的新手。所以请指导我将关联数组转换为游标(SYS_REFCURSOR)。

/*-----------my snippnet like this---*/
/*--declared in package*/
TYPE GENARRAY IS TABLE of NUMBER INDEX BY BINARY_INTEGER;
/*--defined in package body*/
1.FUNCTION GETXXX_GETFOLDERS1 (IN_ARRAY GENARRAY) RETURN SYS_REFCURSOR AS
OUTTABLE GENARRAY; 
GRPID NUMBER;
VCOUNT NUMBER:=0;
return_cursor SYS_REFCURSOR;
2. BEGIN 
FOR I IN 1..IN_ARRAY.COUNT LOOP

3. VCOUNT:=VCOUNT+1;
4.  SELECT GROUPID INTO GRPID FROM DMBI_GROUPDETAIL WHERE GROUPNAME IN (IN_ARRAY(I));
OUTTABLE(VCOUNT):=GRPID;
END LOOP;

5. Open return_cursor FOR
SELECT * FROM TABLE (CAST(OUTTABLE AS GENARRAY));

6. RETURN return_cursor;
END GETXXX_GETFOLDERS1; 

----ERROR on line which is in bold-----
Error(5): PL/SQL: SQL Statement ignored
Error(5): PL/SQL: ORA-00902: invalid datatype
---------------------------------------------------
4

1 回答 1

0
/*--declared in package*/

TYPE GENARRAY 是 NUMBER INDEX BY BINARY_INTEGER 的表;

  • 不是您需要的正确数据结构。根据您的评论,我假设该类型是在包中声明的;但是然后您在 cast 中使用该类型的变量:

    SELECT * FROM TABLE (CAST(OUTTABLE AS GENARRAY));

您只能使用自定义 SQL 类型(不是 pl/sql 类型)。你需要:

create type  GENARRAY IS TABLE of NUMBER ;

您还需要对变量的使用有所不同。文档

于 2014-07-11T14:12:46.980 回答