当前位置:   article > 正文

Oracle SQL教程:使用游标FOR循环执行批量新增与删除操作_oracle 循环insert

oracle 循环insert

Oracle利用游标For循环根据查询结果固定数值循环新增、删除SQL脚本写法,因修改脚本可以使用正常的UPDATE语句进行修改故未进行记录。

一、单表根据数值循环新增、删除

  1. ---单表增加10000条数据---
  2. DECLARE
  3. i NUMBER;
  4. --开始I循环-结束循环
  5. BEGIN
  6. FOR i IN 1..10000
  7. LOOP --对应的Instr语句 注意将ID的值换为变量i
  8. --DB.TABLE为表名 ID为主键
  9. INSERT INTO DB.TABLE (ID, NAME)
  10. VALUES (i, '测试');
  11. --事务提交
  12. COMMIT;
  13. --结束循环
  14. END LOOP;
  15. --结束
  16. END;
  17. ---单表删除10000条数据---
  18. DECLARE
  19. i NUMBER;
  20. --开始I循环-结束循环
  21. BEGIN
  22. FOR i IN 1..10000
  23. LOOP
  24. --对应的DELETE语句 注意将ID的值换为变量i
  25. DELETE
  26. FROM DB.TABLE --表名
  27. WHERE ID = i; --主键ID
  28. --事务提交
  29. COMMIT;
  30. --结束循环
  31. END LOOP;
  32. --结束
  33. END;

二、多表关联根据数值循环新增、删除

  1. ---多关联表主表增加10000条数据---
  2. DECLARE
  3. i NUMBER;
  4. --开始I循环-结束循环
  5. BEGIN
  6. FOR i IN 1..10000
  7. LOOP --对应的Instr语句 注意将ID的值换为变量i
  8. --DB.TABLE为主表表名 ID为主表主键
  9. INSERT INTO DB.TABLE (ID, NAME)
  10. VALUES (i, '测试');
  11. ---多关联表子表增加10000条数据---
  12. DECLARE
  13. k NUMBER;
  14. --开始k循环-结束循环
  15. BEGIN
  16. FOR k IN 1..10000
  17. LOOP --对应的Instr语句 注意将SID的值换为变量k
  18. --DB.STABLE为关联表表名 SID为关联表主键 ID为主表主键
  19. INSERT INTO DB.STABLE (SID,
  20. ID,
  21. NAME)
  22. VALUES (i || 'SID' || k, --防止循环导致子表主键冲突
  23. i, '测试');
  24. --结束循环
  25. END LOOP;
  26. --结束
  27. END;
  28. --事务提交(主表与子表一起进行事务提交)
  29. COMMIT;
  30. --结束循环
  31. END LOOP;
  32. --结束
  33. END;
  34. ---多关联表主表删除10000条数据---
  35. DECLARE
  36. i NUMBER;
  37. --开始I循环-结束循环
  38. BEGIN
  39. FOR i IN 1..10000
  40. LOOP --对应的DELETE语句 注意将ID的值换为变量i
  41. --DB.TABLE为主表表名 ID为主表主键
  42. DELETE
  43. FROM DB.TABLE
  44. WHERE ID = i;
  45. ---多关联表子表删除10000条数据---
  46. DECLARE
  47. k NUMBER;
  48. --开始k循环-结束循环
  49. BEGIN
  50. FOR k IN 1..10000
  51. loop --对应的DELETE语句 注意将SID的值换为变量k
  52. --DB.STABLE为关联表表名 SID为关联表主键
  53. DELETE
  54. FROM DB.STABLE
  55. WHERE SID = k;
  56. --结束循环
  57. END LOOP;
  58. --结束
  59. END;
  60. --事务提交(主表与子表一起进行事务提交)
  61. COMMIT;
  62. --结束循环
  63. END LOOP;
  64. --结束
  65. END;

 三、单表根据查询结果循环新增

  1. ---单表根据查询结果循环新增数据---
  2. ---根据查询条件的字段名和类型进行定义 本次举例为ID主键 类型为VARCHAR2类型 长度自定义---
  3. DECLARE
  4. ID VARCHAR2(64);
  5. --开始I循环-结束循环
  6. BEGIN
  7. --objectVo 定义对象
  8. FOR objectVo IN ( SELECT ID FROM DB.TABLE WHERE ID IS NOT NULL ) --正常的查询SQL
  9. LOOP
  10. --对应的Instr语句 注意将ID的值换为变量i
  11. ID := objectVo.ID;
  12. --在进行新增语句执行前进行字段定义及赋值
  13. --DB.TABLE为表名 ID为主键
  14. INSERT INTO DB.TABLE (ID, NAME)
  15. VALUES (ID, '测试');
  16. --事务提交
  17. COMMIT;
  18. --结束循环
  19. END LOOP;
  20. --结束
  21. END;

 四、单表根据查询结果循环新增及子表根据数值循环新增

  1. ---单表根据查询结果循环新增及子表根据数值循环新增---
  2. ---根据查询条件的字段名和类型进行定义 本次举例为ID主键 类型为VARCHAR2类型 长度自定义---
  3. DECLARE
  4. ID VARCHAR2(64);
  5. --开始I循环-结束循环
  6. BEGIN
  7. --objectVo 定义对象
  8. FOR objectVo IN (
  9. SELECT ID
  10. FROM DB.TABLE
  11. WHERE ID IS NOT NULL ) --正常的查询SQL
  12. LOOP
  13. --对应的Instr语句 注意将ID的值换为变量i
  14. ID := objectVo.ID;
  15. --在进行新增语句执行前进行字段定义及赋值
  16. --DB.TABLE为表名 ID为主键
  17. INSERT INTO DB.TABLE (ID,
  18. NAME)
  19. VALUES (ID,
  20. '测试');
  21. ---多关联表子表增加10条数据---
  22. DECLARE
  23. k NUMBER;
  24. --开始k循环-结束循环
  25. BEGIN
  26. FOR k IN 1..10
  27. LOOP --对应的Instr语句 注意将SID的值换为变量k
  28. --DB.STABLE为关联表表名 SID为关联表主键 ID为主表主键
  29. INSERT INTO DB.STABLE(SID,
  30. ID,
  31. NAME)
  32. VALUES (i || 'SID' || k, --防止循环导致子表主键冲突
  33. ID,
  34. '测试');
  35. --结束循环
  36. END LOOP;
  37. --结束
  38. END;
  39. --事务提交(主表与子表一起进行事务提交)
  40. COMMIT;
  41. --结束循环
  42. END LOOP;
  43. --结束
  44. END;
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/827240
推荐阅读
相关标签
  

闽ICP备14008679号