我想在過程中使用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'具有相同的屬性。其實沒有必要定義重複。 –