• 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

     

  • 相关阅读:
    作业17
    模块
    Find the Lost Sock (异或算法)
    CD(二分)
    数字流输入
    最大连续子序列(dp)
    STL学习----lower_bound和upper_bound算法
    输入挂(减少时间)
    暴力之全排列
    【C++】判断元素是否在vector中,对vector去重,两个vector求交集、并集
  • 原文地址:https://www.cnblogs.com/caroline/p/2406929.html
Copyright © 2020-2023  润新知