DECLARE
l_salaries DBMS_SQL.number_table;
l_total INTEGER := 0;
BEGIN
UPDATE plch_employees
SET salary = salary / 2
WHERE LENGTH (last_name) > 8
RETURNING salary
BULK COLLECT INTO l_salaries;
FOR indx IN 1 .. l_salaries.COUNT
LOOP
l_total := l_total + l_salaries (indx);
END LOOP;
DBMS_OUTPUT.put_line (l_total);
END;
/
l_salaries DBMS_SQL.number_table;
l_total INTEGER := 0;
BEGIN
UPDATE plch_employees
SET salary = salary / 2
WHERE LENGTH (last_name) > 8
RETURNING salary
BULK COLLECT INTO l_salaries;
FOR indx IN 1 .. l_salaries.COUNT
LOOP
l_total := l_total + l_salaries (indx);
END LOOP;
DBMS_OUTPUT.put_line (l_total);
END;
/
这是论坛中一个帖子上的题目,不明白的是
DBMS_SQL.number_table这种数据类型以及
RETURNING salary
BULK COLLECT INTO l_salaries这种用法
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28803801/viewspace-772978/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/28803801/viewspace-772978/