0
我試圖創建一個使用REF CURSOR的存儲過程。我使用這個website找到一些例子。首先,我創建類型:創建pl/sql存儲過程時編譯時出錯
CREATE OR REPLACE TYPE ROW_TYPE IS OBJECT (
"COL1" CHAR(3 BYTE),
"COL2" NUMBER(4,0)
)
CREATE TYPE ROW_TYPE_TABLE AS TABLE OF ROW_TYPE;
然後創建的包:出現符號「FOR」
:CREATE OR REPLACE PACKAGE package AS
FUNCTION get_by_id(p_id CHAR) RETURN ROW_TYPE_TABLE PIPELINED;
END package;
但使用以下命令我得到以下信息PLS-00103創建包體時
我檢查了Oracle official website如何使用公開的聲明,但無法找到我的錯誤。
CREATE OR REPLACE PACKAGE BODY package AS
FUNCTION get_by_id(p_idCHAR) RETURN SERV_TYPE_TABLE PIPELINED IS
OUT_REC SERV_TYPE_TABLE := SERV_TYPE_TABLE(null,null);
servCursor sys_refcursor;
OPEN servCursor FOR 'SELECT * FROM SERV WHERE COL1= :1' USING p_id;
LOOP
FETCH servCursor INTO OUT_REC.COL1, OUT_REC.COL;
EXIT WHEN servCursor%NOTFOUND;
PIPE ROW(OUT_REC);
END LOOP;
CLOSE servCursor;
RETURN;
END get_by_id;
END package ;
您是否在提交的代碼中看到任何問題?
問候。
在'servCursor sys_refcursor'後面加'BEGIN'行 –