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