ZTESOraclepLSQL中的SQL与程序控制第十一讲.ppt
文本预览下载声明
循环控制:LOOP语句 循环指一个语句或一组语句多次执行 有三种循环类型: 基本循环 FOR循环 WHILE循环 基本循环语句LOOP 语法 LOOP statement1; . . . EXIT [WHEN condition]; END LOOP; where: condition is a Boolean variable or expression (TRUE, FALSE, NULL); -- delimiter -- statements -- EXIT statement -- delimiter 基本循环语句LOOP DECLARE v_ordid item.ordid%TYPE := 101; v_counter NUMBER(2) := 1; BEGIN LOOP INSERT INTO item(ordid, itemid) VALUES(v_ordid, v_counter); v_counter := v_counter + 1; EXIT WHEN v_counter 10; END LOOP; END; 举例 FOR循环 语法 使用FOR循环避免对循环变量的反复测试 循环变量不用定义,它的定义是隐含进行的 FOR counter in [REVERSE] lower_bound..upper_bound LOOP statement1; statement2; . . . END LOOP; FOR循环 指南: 循环变量只在循环内有定义,在循环外是不能引用的 循环中可以引用循环变量的值 不能给循环变量赋值 FOR循环 为101号订单添加前10行数据 例如: DECLARE v_ordid item.ordid%TYPE := 101; BEGIN FOR i IN 1..10 LOOP INSERT INTO item(ordid, itemid) VALUES(v_ordid, i); END LOOP; END; WHILE循环 语法 使用WHILE循环,只有条件为真时,语句才会被执行,如果第一次执行时条件就为假,则语句将一次也不执行 WHILE condition LOOP statement1; statement2; . . . END LOOP; 判断条件是在执行语句之前进行测试的 WHILE循环 举例 ACCEPT p_price PROMPT Enter the price of the item: ACCEPT p_itemtot PROMPT Enter the maximum total for purchase of item: DECLARE ... v_qty NUMBER(8) := 1; v_running_total NUMBER(7,2) := 0; BEGIN ... WHILE v_running_total p_itemtot LOOP ... v_qty := v_qty + 1; v_running_total := v_qty * p_price; END LOOP; ... 嵌套循环与标号 循环可以多重嵌套 使用标号区分块和循环 跳出外层循环时使用标号指明要跳出的循环 嵌套循环与标号 ... BEGIN Outer_loop LOOP v_counter := v_counter+1; EXIT WHEN v_counter10; Inner_loop LOOP ... EXIT Outer_loop WHEN total_done = YES; -- Leave both loops EXIT WHEN inner_done = YES; -- Leave inner loop only ... END LOOP Inner_loop; ... END LOOP Outer_loop; END; 小结 在本课中,您应该学会: 在PL/SQL块中书写SQL语句: SELECT,INSERT,UPDATE,DELETE 在PL/SQL块中书写事务控制语句: COMMIT,ROLLBACK,SAVEPOINT 使用控制结构改变程序执行的逻辑顺序 条件IF语句 循环 基本循环 FOR循环 WHILE循环 EXIT语句 PL/SQL程序设
显示全部