您的位置:首页 > 数据库

Using PL/SQL Control Structures

2012-03-19 21:53 239 查看
以下为控制结构需要注意的:

在条件判断比较多的情况下,推荐使用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语句的两种结构:

[<<label_name>>]
CASE selector
WHEN expression1 THEN sequence_of_statements1;
WHEN expression2 THEN sequence_of_statements2;
...
WHEN expressionN THEN sequence_of_statementsN;
[ELSE sequence_of_statementsN+1;]
Testing Conditions: IF and CASE Statements
END CASE [label_name]


搜索结构的CASE语句:

[<<label_name>>]
CASE
WHEN search_condition1 THEN sequence_of_statements1;
WHEN search_condition2 THEN sequence_of_statements2;
...
WHEN search_conditionN THEN sequence_of_statementsN;
[ELSE sequence_of_statementsN+1;]
END CASE [label_name];


LOOP

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

1、EXIT

LOOP
IF credit_rating < 3 THEN
EXIT; -- exit loop immediately
END IF;
END LOOP;


2、EXIT WHEN

LOOP
FETCH c1 INTO ...
EXIT WHEN c1%NOTFOUND; -- exit loop if condition is true
...
END LOOP;
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.

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


输出的结果为3、2、1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: