【发布时间】:2014-10-08 02:36:34
【问题描述】:
我正在尝试从 DBMS_SQL.TO_CURSOR_NUMBER 迭代游标编号,并遇到问题 - 当我尝试将值拉入变量时,我得到 ORA-01007(变量不在选择列表中)。
这是一个复制我的问题的代码块:
DECLARE
cur SYS_REFCURSOR;
nm INTEGER;
colDescs DBMS_SQL.DESC_TAB2;
numCols INTEGER;
val VARCHAR2(3);
BEGIN
OPEN cur FOR
SELECT 'x' AS foo, 2 AS bar
FROM dual;
nm := DBMS_SQL.TO_CURSOR_NUMBER(cur);
DBMS_SQL.DESCRIBE_COLUMNS2(nm, numCols, colDescs);
DBMS_OUTPUT.PUT_LINE(numCols);
DBMS_OUTPUT.PUT_LINE(DBMS_SQL.FETCH_ROWS(nm));
DBMS_SQL.column_value(nm, 1, val);
DBMS_OUTPUT.PUT_LINE(val);
DBMS_SQL.CLOSE_CURSOR(nm);
EXCEPTION
WHEN OTHERS THEN
DBMS_SQL.CLOSE_CURSOR(nm);
DBMS_OUTPUT.PUT_LINE('borked '||SQLCODE);
END;
/
预期输出:
2
1
x
实际输出:
2
1
borked -1007
【问题讨论】: