http://www.itpub.net/thread-1499223-21-1.html 202楼 我创建了如下的表并填入数据:
CREATE TABLE plch_employees ( employee_id INTEGER , last_name VARCHAR2 (100) , salary NUMBER ) / BEGIN INSERT INTO plch_employees VALUES (100, 'Smith', 100000); INSERT INTO plch_employees VALUES (200, 'Jones', 1000000); COMMIT; END; /
哪些选项在执行后会输出下列两行文本?
Smith Jones
(A)
BEGIN FOR emp_rec IN ( SELECT * FROM plch_employees ORDER BY employee_id) LOOP DELETE FROM plch_employees; DBMS_OUTPUT.put_line (emp_rec.last_name); END LOOP; END;
(B)
BEGIN FOR emp_rec IN ( SELECT * FROM plch_employees ORDER BY employee_id) LOOP DELETE FROM plch_employees; COMMIT; DBMS_OUTPUT.put_line (emp_rec.last_name); END LOOP; END;
(C)
DECLARE CURSOR emps_cur IS SELECT * FROM plch_employees ORDER BY employee_id; emp_rec emps_cur%ROWTYPE; BEGIN OPEN emps_cur; DELETE FROM plch_employees; 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; END;
(D)
DECLARE CURSOR emps_cur IS SELECT * FROM plch_employees ORDER BY employee_id; emp_rec emps_cur%ROWTYPE; BEGIN OPEN emps_cur; LOOP FETCH emps_cur INTO emp_rec; EXIT WHEN emps_cur%NOTFOUND; DELETE FROM plch_employees; DBMS_OUTPUT.put_line (emp_rec.last_name); END LOOP; CLOSE emps_cur; END;
答案在207楼2011-11-30答案ABCD, 打开游标的时间点决定了这个游标里会看到什么数据,即使后来数据变化了,ORACLE仍然会从UNDO里找出来为你恢复数据的镜像。
