Oracle-11g-R2

如何從 oracle 過程返回結果集?

  • April 29, 2016

如何從 oracle 中的儲存過程返回結果集?

假設我想從一個簡單的 select 語句中返回一個表,例如:

Select * from tblTest

我試過這個,但這似乎完全錯誤!

CREATE OR REPLACE 
PROCEDURE ProcSelectEveryThing(cursor_ OUT TYPES.REF_CURSOR)
AS

BEGIN

OPEN cursor_ FOR
     SELECT * FROM "tblTest"; 
END;

怎麼了?

您不需要返回語句,因為它使用 OPEN 和 FOR… 與 RETURN 相同…

錯誤在表的名稱中,你把它放在“”雙引號中。刪除它,只使用表的名稱,並使用 SYS_REFCURSOR 類型,如下所示:

CREATE OR REPLACE 
PROCEDURE ProcSelectEveryThing(cursor_ OUT SYS_REFCURSOR)
AS

BEGIN

OPEN cursor_ FOR
     SELECT * FROM tblTest; 
END;

您在 PL/SQL 中缺少 RETURN 語句。在這裡查看答案。有許多網站可以快速響應此查詢。我建議您下載 SQLDeveloper 並查看一些系統提供的內容並查看 docco,從這裡開始。SQLDeveloper真的很棒——而且它是免費的!

引用自:https://dba.stackexchange.com/questions/68295