我有一個IN OUT參數和一個參考光標作爲存儲過程的返回值。目前我正在做下面的事情。Oracle參考光標以及輸出參數
create table dept
(dept_id number,
name varchar2(40),
location varchar2(200)
);
CREATE OR REPLACE PACKAGE HR.SP_PACKAGE AS
TYPE dept_type IS REF CURSOR RETURN HR.dept%ROWTYPE;
END SP_PACKAGE;
CREATE OR REPLACE PROCEDURE HR.MIXED_IN_INOUT_REF_PARAM
(
P_ID IN NUMBER
, P_NAME_TO_LOCATION IN OUT VARCHAR2
, P_RCURSOR OUT SP_PACKAGE.dept_type
) AS
BEGIN
SELECT name INTO P_NAME_TO_LOCATION FROM HR.dept WHERE dept_id = p_id AND name = P_NAME_TO_LOCATION;
OPEN P_RCURSOR FOR
select *
from HR.dept;
END MIXED_IN_INOUT_REF_PARAM;
即使編譯成功,我在運行時遇到了一些錯誤。
ORA-06550: line 4, column 17:
PLS-00201: identifier 'CURSOR' must be declared
ORA-06550: line 4, column 13:
PL/SQL: Item ignored
ORA-06550: line 12, column 18:
PLS-00320: the declaration of the type of this expression is incomplete or malformed
ORA-06550: line 9, column 3:
PL/SQL: Statement ignored
ORA-06550: line 21, column 17:
PLS-00320: the declaration of the type of this expression is incomplete or malformed
ORA-06550: line 21, column 3:
PL/SQL: Statement ignored
我正在使用Sql Developer。任何幫助表示讚賞。
你確定它們都是創建和編譯的請重新確認 – shareef 2012-08-12 09:02:12
包定義中有一個小問題。通過刪除數據庫限定符(例如:CREATE OF REPLACE PACKAGE SP_PACKAGE AS ..)來解決這個問題。現在他們都編譯和打包,程序顯示爲已創建。 – chamibuddhika 2012-08-12 14:08:09
請編輯你的文章,幷包含發出調用PL/SQL過程的代碼。謝謝。 – 2012-08-12 15:13:08