1
我有一個關於從弱類型遊標獲取結果的快速問題,並且想知道是否有人以前遇到過這個問題?PL/SQL:從兩個函數之間傳遞的遊標獲取
我的設置如下;
內功能;
create or replace FUNCTION A_CURSOR_TEST_INNER
(
varCursor OUT SYS_REFCURSOR
)
RETURN NUMBER
AS
varStatus NUMBER;
BEGIN
OPEN varCursor FOR
SELECT docid
FROM DOCUMENT_TABLE;
RETURN 0;
END;
調用函數;
create or replace FUNCTION A_CURSOR_TEST_OUTER
(
varCursor OUT SYS_REFCURSOR
)
RETURN NUMBER
AS
varStatus NUMBER;
BEGIN
varStatus := A_CURSOR_TEST_INNER(varCursor => varCursor);
RETURN 0;
END;
測試用具代碼;
DECLARE
varCursor SYS_REFCURSOR;
v_Return NUMBER;
BEGIN
v_Return := A_CURSOR_TEST_OUTER(varCursor => varCursor);
DECLARE
docid_ NUMBER;
BEGIN
IF(varCursor %ISOPEN) THEN
LOOP
FETCH varCursor INTO docid_ ;
EXIT WHEN varCursor %NOTFOUND;
DBMS_OUTPUT.PUT_LINE(' docid_:' || docid_);
END LOOP;
CLOSE varCursor ;
END IF;
END;
END;
如果我運行我的測試用具代碼,我得到的錯誤是;
ORA-06504:PL/SQL:返回類型 結果集變量或查詢的不匹配
我真的不知道是什麼原因導致這種情況發生。這個錯誤發生在我的測試代碼中,但是我之前使用過幾百次完全相同的方法,而沒有遇到這個問題。現在唯一的區別是,遊標將通過兩個函數而不是一個函數傳回。
有沒有人有任何想法可能在這裏的問題?我已經搜索了它,所有我能找到的建議強烈鍵入遊標,這不是我不幸的選擇。
感謝任何人的幫助,歡呼聲。
嘗試將`OUT`參數更改爲`IN OUT`,看看是否照顧它。 – 2014-10-18 03:22:47