PL/SQL 控制结构
2010-05-24 17:55
344 查看
在PL/SQL中引入了控制结构,包括选择结构,循环结构和跳转结构
一 选择结构
1,IF 语句
在PL/SQL中,选择结构可以通过if语句来实现,也可以通过Case语句(oracle9i中)
利用if语句实现选择控制的语法为:
if condition1 then statements1;
[else if condition2 then statements2;]
......
[else else_statements];
end if;
由于PL/SQL 中的逻辑运算结果有true,false 和null 三种,因此在进行选择条件的判断时,要考虑条件为null的情况
2,CASE 语句
在Oracle9i中提供了另一种选则控制结构,即case语句。case 语句有两种形式,一种只进行等值比较,另一种可以进行多条件比较。
(1)只进行等值比较的case语句;
Case test_value
when value1 then statements1;
when value2 then statements2;
......
when valuen then statementsn;
[else else_statements;]
end case;
case 语句判断test_value 的值是否与value值相等。如果相等,则执行其后的语句。
(2) 可以多条件比较case 语句
case
when condition1 then statements1;
when condition2 then statements2;
......
when conditionn then statementn;
[ else else_statements;]
end case;
case 语句对每一个when条件进行判断,当条件为真时,执行其后的语句;如果所有的条件都为假,则执行else后的语句。
二 循环语句
在PL/SQL中,循环结构有三种形式,分别为简单循环,while循环,for循环。
1 ,简单循环
PL/SQL中简单循环是将循环条件包含在循环体中的循环,语法为:
Loop
sequence_of_statement;
exit [when condition];
end Loop;
注意:在循环体中一定要包含exit语句,否则程序会进入死循环。
例如: 利用循环向Book表中插入50条记录,程序为:
declare
v_counter Binary_Integer :=50;
begin
Loop
insert into Book(bookid,Bookname,Bookauth,bookprice) values (v_counter,'bookname'||v_counter,'alice',888);
v_counter:=v_counter+1;
exit when v_counter>100;
end Loop;
end;
2,while 循环
利用 while 语句进行循环时,先判断循环条件,只有满足循环条件才能进入循环体进行操作,其语法为:
while condition Loop
sequence_of_statement;
end Loop;
例如:利用while循环,向Book表中插入50条数据
declare
v_counter Binary_Integer:=101;
begin
while v_counter<=150 Loop
insert into Book(bookid,Bookname,Bookauth,bookprice)
values(v_counter,'bookname'||v_counter,'alice',v_counter);
v_counter:=v_counter+1;
end Loop;
end;
3,FOR循环
在for循环中,不需要定义循环变量,系统自动定义一个循环变量,每次循环时该变量值自动增1或减1,以控制循环的次数。
for循环的语法为:
for loop_counter in [reverse] low_bound..high_bound Loop
Sequence_of_statement;
end loop;
其中,loop_counter 为 循环变量,low_bound为循环变量的下界(最小值),high_bound 为循环变量的上届(最大值)
注意:循环变量的类型为 binary_integer类型(系统隐含声明),而且它的作用范围是 循环体中使用,不能再循环外使用该变量。
系统默认时,循环变量为自增,如果使用reverse关键字,则表示自减。
例如:利用for循环向Book表中插入50条记录
begin
for v_counter in 151..200 Loop
insert into Book(bookid,Bookname,Bookauth,bookprice)
values(v_counter,'bookname'||v_counter,'alice',v_counter);
end Loop;
end;
三 跳转结构
所谓跳转结构是指利用goto 语句实现程序流程的强制跳转。例如(插入50条记录):
declare
v_counter Binary_Integer :=201;
begin
<<label>>
insert into Book(bookid,Bookname,Bookauth,bookprice)
values(v_counter,'bookname'||v_counter,'alice',v_counter);
v_counter:=v_counter+1;
if v_counter<=250 then
goto label;
end if;
end;
注意:PL/SQL 块内部可以跳转,内层块可以跳到外层块,但外层块不能跳到内层块;
不能从if语句外部跳转到if语句内部,不能从循环体外跳到循环体内,不能从子程序外部跳到子程序内部;
由于goto语句破坏了程序的结构化,因此建议尽量少用甚至不用goto语句;
一 选择结构
1,IF 语句
在PL/SQL中,选择结构可以通过if语句来实现,也可以通过Case语句(oracle9i中)
利用if语句实现选择控制的语法为:
if condition1 then statements1;
[else if condition2 then statements2;]
......
[else else_statements];
end if;
由于PL/SQL 中的逻辑运算结果有true,false 和null 三种,因此在进行选择条件的判断时,要考虑条件为null的情况
2,CASE 语句
在Oracle9i中提供了另一种选则控制结构,即case语句。case 语句有两种形式,一种只进行等值比较,另一种可以进行多条件比较。
(1)只进行等值比较的case语句;
Case test_value
when value1 then statements1;
when value2 then statements2;
......
when valuen then statementsn;
[else else_statements;]
end case;
case 语句判断test_value 的值是否与value值相等。如果相等,则执行其后的语句。
(2) 可以多条件比较case 语句
case
when condition1 then statements1;
when condition2 then statements2;
......
when conditionn then statementn;
[ else else_statements;]
end case;
case 语句对每一个when条件进行判断,当条件为真时,执行其后的语句;如果所有的条件都为假,则执行else后的语句。
二 循环语句
在PL/SQL中,循环结构有三种形式,分别为简单循环,while循环,for循环。
1 ,简单循环
PL/SQL中简单循环是将循环条件包含在循环体中的循环,语法为:
Loop
sequence_of_statement;
exit [when condition];
end Loop;
注意:在循环体中一定要包含exit语句,否则程序会进入死循环。
例如: 利用循环向Book表中插入50条记录,程序为:
declare
v_counter Binary_Integer :=50;
begin
Loop
insert into Book(bookid,Bookname,Bookauth,bookprice) values (v_counter,'bookname'||v_counter,'alice',888);
v_counter:=v_counter+1;
exit when v_counter>100;
end Loop;
end;
2,while 循环
利用 while 语句进行循环时,先判断循环条件,只有满足循环条件才能进入循环体进行操作,其语法为:
while condition Loop
sequence_of_statement;
end Loop;
例如:利用while循环,向Book表中插入50条数据
declare
v_counter Binary_Integer:=101;
begin
while v_counter<=150 Loop
insert into Book(bookid,Bookname,Bookauth,bookprice)
values(v_counter,'bookname'||v_counter,'alice',v_counter);
v_counter:=v_counter+1;
end Loop;
end;
3,FOR循环
在for循环中,不需要定义循环变量,系统自动定义一个循环变量,每次循环时该变量值自动增1或减1,以控制循环的次数。
for循环的语法为:
for loop_counter in [reverse] low_bound..high_bound Loop
Sequence_of_statement;
end loop;
其中,loop_counter 为 循环变量,low_bound为循环变量的下界(最小值),high_bound 为循环变量的上届(最大值)
注意:循环变量的类型为 binary_integer类型(系统隐含声明),而且它的作用范围是 循环体中使用,不能再循环外使用该变量。
系统默认时,循环变量为自增,如果使用reverse关键字,则表示自减。
例如:利用for循环向Book表中插入50条记录
begin
for v_counter in 151..200 Loop
insert into Book(bookid,Bookname,Bookauth,bookprice)
values(v_counter,'bookname'||v_counter,'alice',v_counter);
end Loop;
end;
三 跳转结构
所谓跳转结构是指利用goto 语句实现程序流程的强制跳转。例如(插入50条记录):
declare
v_counter Binary_Integer :=201;
begin
<<label>>
insert into Book(bookid,Bookname,Bookauth,bookprice)
values(v_counter,'bookname'||v_counter,'alice',v_counter);
v_counter:=v_counter+1;
if v_counter<=250 then
goto label;
end if;
end;
注意:PL/SQL 块内部可以跳转,内层块可以跳到外层块,但外层块不能跳到内层块;
不能从if语句外部跳转到if语句内部,不能从循环体外跳到循环体内,不能从子程序外部跳到子程序内部;
由于goto语句破坏了程序的结构化,因此建议尽量少用甚至不用goto语句;
相关文章推荐
- OraclePL/SQL流程控制结构
- pl/sql学习笔记之四 控制结构
- Oracle pl/sql的进阶--控制结构(分支,循环,控制)
- PL/SQL教程(三) Controls 控制结构
- PL/SQL 11g R2 —— PL/SQL结构控制语句 !
- pl/sql进阶---控制结构
- PL/SQL控制结构
- pl/sql控制结构(一)
- 二十五、oracle pl/sql进阶--控制结构(分支,循环,控制)
- Oracle:PL/SQL--流程控制(一)——条件结构:if-then、if-then-else、if-then-elsif
- ORACLE PL/SQL 结构控制
- pl/sql的控制结构,分支、循环、控制
- PL/SQL-3 控制结构语句
- 【PL/SQL】 控制结构
- JAVA_WEB Oracle 10g学习: PL/SQL的控制结构
- oracle数据库----笔记1---PL/SQL基础2---控制结构
- PL/SQL编程整理3 -- 控制结构
- PL/SQL--控制结构
- 第四章 PL/SQL的控制结构
- PL/SQL知识总结(1):PL/SQL块结构和流程控制语句