我想在过程中使用sysrefcursor返回表类型。 所以我有定义的记录和表类型:如何使用sysrefcursor从过程返回表类型(集合)PLSQL
create or replace TYPE "FILE_RECORD" as object
(ID NUMBER(30,0), CREATE_DATE TIMESTAMP(6));
create or replace TYPE "FILE_TABLE" AS TABLE OF FILE_RECORD;
create or replace TYPE "MSG_RECORD" as object
(ID NUMBER(30,0), CREATE_DATE TIMESTAMP(6));
create or replace TYPE "MSG_TABLE" AS TABLE OF MSG_RECORD;
而写的程序:
create or replace procedure file_msg
(i_date IN date,
o_cur OUT SYS_REFCURSOR)
AS
l_file FILE_TABLE;
l_msg MSG_TABLE;
BEGIN
l_file := FILE_TABLE();
l_msg := MSG_TABLE();
SELECT FILE_RECORD
(fi.id,
fi.create_date)
BULK COLLECT INTO l_file
FROM FILES fi
WHERE fi.create_date between i_date and i_date +1;
for i in l_file.FIRST..l_file.LAST
LOOP
SELECT MSG_RECORD
(me.id,
me.create_date)
BULK COLLECT INTO l_msg
FROM messages me
WHERE file_id = l_file(i).id;
END LOOP;
END file_msg;
因此,如何能我现在回到表类型l_msg并与此过程sysrefcursor l_file?
我必须与REFCURSOR而不是列从真正的表它是如何在问题中详细说明返回表类型(集合):
如何存储将返回sysrefcursor函数的结果呢?
邢建议。 我试着从这个问题的解决方案,但它并没有帮助我。
的可能的复制[如何存储将返回sysrefcursor函数的结果?](https://stackoverflow.com/questions/45263749/how-to-store-result-of-a-function- which-will-return-sysrefcursor) – XING
本主题的解决方案对我的过程不起作用。 – Tom
'FILE_RECORD'和'MSG_RECORD'具有相同的属性。其实没有必要定义重复。 –