赞
踩
Oracle利用游标For循环根据查询结果或固定数值循环新增、删除SQL脚本写法,因修改脚本可以使用正常的UPDATE语句进行修改故未进行记录。
- ---单表增加10000条数据---
- DECLARE
- i NUMBER;
- --开始I循环-结束循环
- BEGIN
- FOR i IN 1..10000
- LOOP --对应的Instr语句 注意将ID的值换为变量i
- --DB.TABLE为表名 ID为主键
- INSERT INTO DB.TABLE (ID, NAME)
- VALUES (i, '测试');
- --事务提交
- COMMIT;
- --结束循环
- END LOOP;
- --结束
- END;
-
-
- ---单表删除10000条数据---
- DECLARE
- i NUMBER;
- --开始I循环-结束循环
- BEGIN
- FOR i IN 1..10000
- LOOP
- --对应的DELETE语句 注意将ID的值换为变量i
- DELETE
- FROM DB.TABLE --表名
- WHERE ID = i; --主键ID
- --事务提交
- COMMIT;
- --结束循环
- END LOOP;
- --结束
- END;
- ---多关联表主表增加10000条数据---
- DECLARE
- i NUMBER;
- --开始I循环-结束循环
- BEGIN
- FOR i IN 1..10000
- LOOP --对应的Instr语句 注意将ID的值换为变量i
- --DB.TABLE为主表表名 ID为主表主键
- INSERT INTO DB.TABLE (ID, NAME)
- VALUES (i, '测试');
- ---多关联表子表增加10000条数据---
- DECLARE
- k NUMBER;
- --开始k循环-结束循环
- BEGIN
- FOR k IN 1..10000
- LOOP --对应的Instr语句 注意将SID的值换为变量k
- --DB.STABLE为关联表表名 SID为关联表主键 ID为主表主键
- INSERT INTO DB.STABLE (SID,
- ID,
- NAME)
- VALUES (i || 'SID' || k, --防止循环导致子表主键冲突
- i, '测试');
- --结束循环
- END LOOP;
- --结束
- END;
- --事务提交(主表与子表一起进行事务提交)
- COMMIT;
- --结束循环
- END LOOP;
- --结束
- END;
-
-
- ---多关联表主表删除10000条数据---
- DECLARE
- i NUMBER;
- --开始I循环-结束循环
- BEGIN
- FOR i IN 1..10000
- LOOP --对应的DELETE语句 注意将ID的值换为变量i
- --DB.TABLE为主表表名 ID为主表主键
- DELETE
- FROM DB.TABLE
- WHERE ID = i;
- ---多关联表子表删除10000条数据---
- DECLARE
- k NUMBER;
- --开始k循环-结束循环
- BEGIN
- FOR k IN 1..10000
- loop --对应的DELETE语句 注意将SID的值换为变量k
- --DB.STABLE为关联表表名 SID为关联表主键
- DELETE
- FROM DB.STABLE
- WHERE SID = k;
- --结束循环
- END LOOP;
- --结束
- END;
- --事务提交(主表与子表一起进行事务提交)
- COMMIT;
- --结束循环
- END LOOP;
- --结束
- END;
- ---单表根据查询结果循环新增数据---
- ---根据查询条件的字段名和类型进行定义 本次举例为ID主键 类型为VARCHAR2类型 长度自定义---
- DECLARE
- ID VARCHAR2(64);
- --开始I循环-结束循环
- BEGIN
- --objectVo 定义对象
- FOR objectVo IN ( SELECT ID FROM DB.TABLE WHERE ID IS NOT NULL ) --正常的查询SQL
- LOOP
- --对应的Instr语句 注意将ID的值换为变量i
- ID := objectVo.ID;
- --在进行新增语句执行前进行字段定义及赋值
- --DB.TABLE为表名 ID为主键
- INSERT INTO DB.TABLE (ID, NAME)
- VALUES (ID, '测试');
- --事务提交
- COMMIT;
- --结束循环
- END LOOP;
- --结束
- END;
- ---单表根据查询结果循环新增及子表根据数值循环新增---
- ---根据查询条件的字段名和类型进行定义 本次举例为ID主键 类型为VARCHAR2类型 长度自定义---
- DECLARE
- ID VARCHAR2(64);
- --开始I循环-结束循环
- BEGIN
- --objectVo 定义对象
- FOR objectVo IN (
- SELECT ID
- FROM DB.TABLE
- WHERE ID IS NOT NULL ) --正常的查询SQL
- LOOP
- --对应的Instr语句 注意将ID的值换为变量i
- ID := objectVo.ID;
- --在进行新增语句执行前进行字段定义及赋值
- --DB.TABLE为表名 ID为主键
- INSERT INTO DB.TABLE (ID,
- NAME)
- VALUES (ID,
- '测试');
- ---多关联表子表增加10条数据---
- DECLARE
- k NUMBER;
- --开始k循环-结束循环
- BEGIN
- FOR k IN 1..10
- LOOP --对应的Instr语句 注意将SID的值换为变量k
- --DB.STABLE为关联表表名 SID为关联表主键 ID为主表主键
- INSERT INTO DB.STABLE(SID,
- ID,
- NAME)
- VALUES (i || 'SID' || k, --防止循环导致子表主键冲突
- ID,
- '测试');
- --结束循环
- END LOOP;
- --结束
- END;
-
- --事务提交(主表与子表一起进行事务提交)
- COMMIT;
- --结束循环
- END LOOP;
- --结束
- END;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。