CREATE TABLE plch_employees
(
employee_id INTEGER
, last_name VARCHAR2 (100)
, salary NUMBER
)
/
BEGIN
INSERT INTO plch_employees
VALUES (100, 'Smith', 100000);
COMMIT;
END;
/
然后我运行如下的代码:
DECLARE
CURSOR emps_cur
IS
SELECT * FROM plch_employees
ORDER BY employee_id;
emp_rec emps_cur%ROWTYPE;
BEGIN
INSERT INTO plch_employees
VALUES (200, 'Jones', 1000000);
OPEN emps_cur;
ROLLBACK;
LOOP
FETCH emps_cur INTO emp_rec;
EXIT WHEN emps_cur%NOTFOUND;
DBMS_OUTPUT.put_line (emp_rec.last_name);
END LOOP;
CLOSE emps_cur;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.put_line ('Error');
END;
/
你将无法再从游标FETCH数据,ORACLE会抛出异常:
ORA-01002: fetch out of sequence
如果你的游标带有FOR UPDATE子句,在打开游标之后你做了提交,那么再试图FETCH时同样会发生这个错误。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25323853/viewspace-717036/,如需转载,请注明出处,否则将追究法律责任。