Using PL/SQL Control Structures

以下为控制结构需要注意的:

在条件判断比较多的情况下,推荐使用CASE语句代替IF/ELSE控制

The value of a Boolean expression can be assigned directly to a Boolean variable. You
can replace the first IF statement with a simple assignment:

overdrawn := new_balance < minimum_balance;

case语句:

 

The ELSE clause is
optional. However, if you omit the ELSE clause, PL/SQL adds the following implicit
ELSE clause:
ELSE RAISE CASE_NOT_FOUND;

There is always a default action, even when you omit the ELSE clause. If the CASE
statement does not match any of the WHEN clauses and you omit the ELSE clause,
PL/SQL raises the predefined exception CASE_NOT_FOUND.

 如果忽略了ELSE语句,系统会默认的添加一条ESLE语句,当找不到匹配的条件,就会报出异常信息。

case语句的两种结构:

 

1 [<<label_name>>]
2 CASE selector
3 WHEN expression1 THEN sequence_of_statements1;
4 WHEN expression2 THEN sequence_of_statements2;
5 ...
6 WHEN expressionN THEN sequence_of_statementsN;
7 [ELSE sequence_of_statementsN+1;]
8 Testing Conditions: IF and CASE Statements
9 END CASE [label_name]

搜索结构的CASE语句:

 

1 [<<label_name>>]
2 CASE
3 WHEN search_condition1 THEN sequence_of_statements1;
4 WHEN search_condition2 THEN sequence_of_statements2;
5 ...
6 WHEN search_conditionN THEN sequence_of_statementsN;
7 [ELSE sequence_of_statementsN+1;]
8 END CASE [label_name];

LOOP

在循环中有两种类型的EXIT可以使用

1、EXIT

1 LOOP
2 IF credit_rating < 3 THEN
3 EXIT; -- exit loop immediately
4 END IF;
5 END LOOP;

2、EXIT WHEN

1 LOOP
2 FETCH c1 INTO ...
3 EXIT WHEN c1%NOTFOUND; -- exit loop if condition is true
4 ...
5 END LOOP;
6 CLOSE c1;

FOR LOOP循环注意事项:

 

The bounds of a loop range can be literals, variables, or expressions but must evaluate
to numbers. Otherwise, PL/SQL raises the predefined exception VALUE_ERROR.

循环的范围可以是文本,变量或者表达式,但是他必须可以证明为数字类型,否则PL/SQL将会抛出值错误的异常信息

当需要进行FOR LOOP的逆向循环的时候,需要使用关键字 REVERSE.

 

1 BEGIN
2 FOR i IN REVERSE 1..3 LOOP
3 dbms_output.put_line(i);
4 END LOOP;
5 END;

输出的结果为3、2、1

 

posted on 2012-03-19 21:53  Coldest Winter  阅读(207)  评论(0编辑  收藏  举报