我正在尝试从java代码访问我的Stored Procedure
,其中该过程正在退回PL/SQL table(PACKAGE TABLE) type
,因为在我的java代码中很容易处理SYS_REFCURSOR
,我正在尝试转换我的存储过程中的PL/SQL table to SYS_REFCURSOR
。谷歌搜索后,我没有得到任何适当的答案。有人可以帮我解决这个转换逻辑吗?
create or replace PROCEDURE TESTPROC(
INPUT1 IN VARCHAR2,
INPUT2 IN VARCHAR2,
P_PRC OUT SYS_REFCURSOR) AS
PACKAGE_TABLE PACKAGE.TESTTABLE;
BEGIN
PACKAGE_TABLE := FUNCTION_RETURN_PACKAGE_TABLE(INPUT1, INPUT2);
-- **LOGIC TO CONVERT PACAKGE_TABLE TO SYS_REFCURSOR GOES HERE**
END TESTPROC;
答案 0 :(得分:1)
您可以使用TABLE
运算符
create or replace PROCEDURE TESTPROC(
INPUT1 IN VARCHAR2,
INPUT2 IN VARCHAR2,
P_PRC OUT SYS_REFCURSOR) AS
BEGIN
OPEN P_PRC FOR
SELECT * FROM TABLE(FUNCTION_RETURN_PACKAGE_TABLE(INPUT1, INPUT2));
END TESTPROC;
但是你应该记住,你必须拥有架构级pl \ sql表类型(对于oracle< 12c)。另请注意,SELECT * FROM
为您带来了一个带有-plsql-table-row-type值的单行。