一、前言
LOOP statements END LOOP; |
Tip: 该循环必须要结合EXIT使用,否则将陷入死循环。
---插入多条数据,i是字段id起始值,j终止值。 CREATE OR REPLACE PROCEDURE proc_loop(i in integer,j in integer) AS BEGIN LOOP -- 执行重复的插数操作 INSERT INTO test_1(id,c_times) VALUES(i,current_timestamp) ;
--id值递增 +1 i := i+1;
-- 退出循环的条件 IF i=j THEN EXIT; END IF; END LOOP; END; /
CALL proc_loop(1,5);
SELECT * FROM test_1; |
WHILE condition LOOP statements END LOOP; |
---插入多条数据,i是字段id起始值,j终止值。 CREATE OR REPLACE PROCEDURE proc_loop_1(i in integer,j in integer) AS BEGIN WHILE i < j LOOP -- 执行重复的查询操作 INSERT INTO test_1(id,c_times) VALUES(i,current_timestamp);
--id值递增 +1 i := i+1; END LOOP; END; /
CALL proc_loop_1(5,10);
SELECT * FROM test_1; |
FOR LOOP循环是按照指定的次数执行循环。在循环体内部,可以执行重复的查询操作。
FOR name IN [REVERSE] lower_bound ..upper_bound [BY step] LOOP staements END LOOP; |
Tip: 变量name会自动定义为integer类型并且只在此循环里存在。变量name介于lower_bound和upper_bound之间。 当使用REVERSE关键字时,lower_bound必须大于等于upper_bound,否则循环体不会被执行。
---插入多条数据,i是字段id起始值,j终止值。 CREATE OR REPLACE PROCEDURE proc_loop_2(i in integer,j in integer) AS BEGIN FOR i IN i..j LOOP -- 执行重复的查询操作 INSERT INTO test_1(id,c_times) VALUES(i,current_timestamp);
END LOOP; END; /
CALL proc_loop_2(10,15);
SELECT * FROM test_1; |
FORALL index IN lower_bound .. upper_bound DML; |
Tip:变量index会自动定义为integer类型并且只在此循环里存在。index的取值介于low_bound和upper_bound之间。
---插入多条数据, CREATE OR REPLACE PROCEDURE proc_loop_3(i in integer,j in integer) AS BEGIN FORALL i IN i..j -- 执行重复的查询操作 INSERT INTO test_1(id,c_times) VALUES(i,current_timestamp); END; /
CALL proc_loop_3(16,20);
SELECT * FROM test_1; |
如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!
加入交流群
请使用微信扫一扫!