去掉returning后,则可影响ename为'JONES'的所有行。UPDATE emp
SET job ='MANAGER', sal = sal + 1000, deptno = 20
WHERE ename = 'JONES';
SET job ='MANAGER', sal = sal + 1000, deptno = 20
WHERE ename = 'JONES';
TYPE Emplist IS VARRAY(100) OF NUMBER;
Empids EMPLIST := EMPLIST(7369, 7499, 7521, 7566, 7654, 7698);
TYPE Bonlist IS TABLE OF Emp_tab.sal%TYPE;
Bonlist_inst BONLIST;
BEGIN
Bonlist_inst := BONLIST(1,2,3,4,5);
FOR i IN Empids.FIRST..Empids.LAST LOOP
UPDATE Emp_tab Set Bonus = 0.1 * sal
WHERE Empno = Empids(i)
RETURNING Sal INTO BONLIST(i);
END LOOP;
END;如果有什么更好的办法别忘了贴出来大家共享哦
曾看过关于此例子,回去查找资料
DECLARE
TYPE emp_rec_rt IS RECORD (
v_ename VARCHAR2(10),
v_sal number(7,2),
v_deptno number(2)); TYPE emp_tab_t IS TABLE OF emp_rec_rt INDEX BY BINARY_INTEGER; v_emprows emp_tab_t;BEGIN
UPDATE emp
SET sal = sal + 1000
WHERE deptno = 20
RETURNING ename,sal * 0.25, deptno
BULK COLLECT INTO v_emprows; FOR i IN 1 .. v_emprows.LAST LOOP Dbms_Output.Put_Line(v_emprows(i).v_ename||','||
v_emprows(i).v_sal||','||
v_emprows(i).v_deptno);
END LOOP;
END;
/