Oracle Forall
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,FORALLNote:[from official document]Example 12-7DELETE Statement in FOR LOOP StatementDROP TABLE empl
千家信息网最后更新 2026年11月01日Oracle Forall
FORALL
Note:[from official document]
Example 12-7DELETE Statement in FOR LOOP Statement
DROP TABLE employees_temp;CREATE TABLE employees_temp AS SELECT *FROM employees; DECLARE TYPE NumList IS VARRAY(20) OF NUMBER; depts NumList := NumList(10, 30, 70); -- department numbersBEGIN FORi IN depts.FIRST..depts.LAST LOOP DELETE FROM employees_temp WHERE department_id = depts(i); ENDLOOP;END;/
Example 12-9Time Difference for INSERT Statement in FOR LOOP and FORALL Statements
DROP TABLE parts1;CREATE TABLE parts1 ( pnum INTEGER, pname VARCHAR2(15)); DROP TABLE parts2;CREATE TABLE parts2 ( pnum INTEGER, pname VARCHAR2(15)); DECLARE TYPE NumTab IS TABLE OF parts1.pnum%TYPE INDEX BY PLS_INTEGER; TYPE NameTab IS TABLE OF parts1.pname%TYPE INDEX BY PLS_INTEGER; pnums NumTab; pnames NameTab; iterations CONSTANT PLS_INTEGER:= 50000; t1 INTEGER; t2 INTEGER; t3 INTEGER;BEGIN FORj IN 1..iterations LOOP -- populatecollections pnums(j) := j; pnames(j) := 'Part No. ' || TO_CHAR(j); ENDLOOP; t1:= DBMS_UTILITY.get_time; FORi IN 1..iterations LOOP INSERT INTO parts1 (pnum, pname) VALUES (pnums(i), pnames(i)); ENDLOOP; t2:= DBMS_UTILITY.get_time; FORALL i IN 1..iterations INSERT INTO parts2 (pnum, pname) VALUES (pnums(i), pnames(i)); t3:= DBMS_UTILITY.get_time; DBMS_OUTPUT.PUT_LINE('Execution Time (secs)'); DBMS_OUTPUT.PUT_LINE('---------------------'); DBMS_OUTPUT.PUT_LINE('FOR LOOP: ' || TO_CHAR((t2 - t1)/100)); DBMS_OUTPUT.PUT_LINE('FORALL: '|| TO_CHAR((t3 - t2)/100)); COMMIT;END;/Result is similar to: Execution Time (secs)---------------------FOR LOOP: 2.16FORALL: .11 PL/SQL procedure successfully completed.Example 12-10FORALL Statement for Subset of Collection
DROP TABLE employees_temp;CREATE TABLE employees_temp AS SELECT *FROM employees; DECLARE TYPE NumList IS VARRAY(10) OF NUMBER; depts NumList := NumList(5,10,20,30,50,55,57,60,70,75);BEGIN FORALL j IN 4..7 DELETE FROM employees_temp WHERE department_id = depts(j);END;/
Example 12-26DELETE with RETURN BULK COLLECT INTO in FORALL Statement
DROP TABLE emp_temp;CREATE TABLE emp_temp ASSELECT * FROM employeesORDER BY employee_id, department_id; DECLARE TYPE NumList IS TABLE OF NUMBER; depts NumList :=NumList(10,20,30); TYPE enum_t IS TABLE OF employees.employee_id%TYPE; e_ids enum_t; TYPE dept_t IS TABLE OF employees.department_id%TYPE; d_ids dept_t; BEGIN FORALL j IN depts.FIRST..depts.LAST DELETE FROM emp_temp WHERE department_id = depts(j) RETURNING employee_id, department_id BULK COLLECT INTO e_ids, d_ids; DBMS_OUTPUT.PUT_LINE ('Deleted ' || SQL%ROWCOUNT || ' rows:'); FORi IN e_ids.FIRST .. e_ids.LAST LOOP DBMS_OUTPUT.PUT_LINE ( 'Employee #' || e_ids(i) || ' from dept #' || d_ids(i) ); ENDLOOP;END;/Deleted 9 rows:
Employee #200 from dept #10
Employee #201 from dept #20
Employee #202 from dept #20
Employee #114 from dept #30
Employee #115 from dept #30
Employee #116 from dept #30
Employee #117 from dept #30
Employee #118 from dept #30
Employee #119 from dept #30
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
上海挚品互联网科技有限公司
互联网科技工作委员会
科技金融是不是互联网金融
互联网与新科技
齐家互联网科技
奇酷互联网络科技
唐信互联网科技 大连
一五八零互联网科技
广西拼得多互联网科技有限公司
科技与互联网的利与弊
江苏南京365互联网科技
须眉科技是互联网公司吗
成都互联网科技公司工作好不好
恒生互联网科技指数跳水
晋城互联网科技
山东有哪些互联网科技公司
广州梦谷互联网科技有限公司领导
福州德业互联网科技
艺电能源互联网科技有限公司招聘
科技互联网专业工作会议发言稿
互联网科技的发展
狮子座互联网科技有限公司
互联网科技小额贷款
互联网和黑科技的看法
科技互联网大厂
电子科技大学互联网创业大赛
深圳育鹏互联网科技有限公司招聘
宁波跨境商互联网科技有限公司
山东亿川互联网科技有限责任公司
互联网科技快速发展优美句子