专注Java教育14年 全国咨询/投诉热线:444-1124-454
赢咖4LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 实例解析PL/SQL控制结构

实例解析PL/SQL控制结构

更新时间:2021-03-16 17:36:00 来源:赢咖4 浏览673次

控制结构在程序中就是一种程序运行的逻辑,一般情况下有顺序结构,选择结构,循环结构。PL/SQL控制结构也是由上述的3种逻辑结构组成,往往由以下几个语句来实现。

1、IF条件语句

IF语句的语法:

IF condition1 THEN

    statement1;

ELSIF condition2 THEN

    statement2;ELSE

    statement3;END IF;

实例如下:

DECLARE

    v_first_name  VARCHAR2(20);

     v_salary NUMBER(7,2);

  BEGIN

  SELECT first_name, salary INTO v_first_name, v_salary FROM employees

  WHERE employee_id = &emp_id;

    DBMS_OUTPUT.PUT_LINE(v_first_name||'雇员的工资是'||v_salary);

  IF v_salary < 10000 THEN

        DBMS_OUTPUT.PUT_LINE('工资低于10000');

 ELSE

 IF 10000 <= v_salary AND v_salary < 20000 THEN

          DBMS_OUTPUT.PUT_LINE('工资在10000到20000之间');

 ELSE

          DBMS_OUTPUT.PUT_LINE('工资高于20000');

END IF;

END IF;

END;

2、CASE语句

CASE语句语法:

CASE variable_name WHEN case1 THEN statement1;

WHEN case2 THEN statement2;

...WHEN caseN-1 THEN statementN-1;

[ELSE statementN]END CASE;

实例如下:

DECLARE

    grade CHAR :='B';

    appraisal VARCHAR2(20);BEGIN

    appraisal :=

    CASE grade

        WHEN 'A' THEN '优'

        WHEN 'B' THEN '良'

        ELSE '不及格'

    END;

    DBMS_OUTPUT.PUT_LINE('Grade '||grade|| ' is '||appraisal);

 

    /*下面效果一样  

  grade:='A';

    CASE grade

        WHEN 'A' THEN appraisal :='优';

        WHEN 'B' THEN appraisal :='良';

        ELSE appraisal :='不及格';

    END CASE;

    DBMS_OUTPUT.PUT_LINE('Grade '||grade|| ' is '||appraisal);

    

    */END;/

3、基本循环

基本循环的语法:

LOOP

    statements

    EXIT [WHEN condition]END LOOP;

 实例如下:

DECLARE

 int NUMBER(2) :=0;

 BEGIN

    LOOP

 int := int + 1;

      DBMS_OUTPUT.PUT_LINE('int 的当前值为:'||int);

EXIT WHEN int =10;

END LOOP;

END;

4、WHILE循环

WHILE循环语法:

WHILE condition LOOP

statements;END LOOP;

实例如下:

DECLARE

   x NUMBER :=1;

 BEGIN

 WHILE x<=10 LOOP

       DBMS_OUTPUT.PUT_LINE('X的当前值为:'||x);

        x:= x+1;

 END LOOP;

 END;

5、FOR循环

FOR循环语法:

FOR loop_variable IN [REVERSE] lower_bound..upper_bound LOOP

    statements;END LOOP;

实例如下:

  CREATE TABLE temp_table(num_col NUMBER);

  DECLARE

      V_counter NUMBER := 10;

  BEGIN

  INSERT INTO temp_table(num_col) VALUES (v_counter );

  FOR v_counter IN 20 .. 25 LOOP

  INSERT INTO temp_table (num_col ) VALUES ( v_counter );

  END LOOP;

  INSERT INTO temp_table(num_col) VALUES (v_counter );

 FOR v_counter IN REVERSE 20 .. 25 LOOP

 INSERT INTO temp_table (num_col ) VALUES ( v_counter );

 END LOOP;

 END ;

 DROP TABLE temp_table;

此外,我们也可以在While循环中嵌套loop循环:

 /*求100至110之间的素数*/

 DECLARE

    v_m NUMBER := 101;

   v_i NUMBER;

    v_n NUMBER := 0;

  BEGIN

 WHILE v_m < 110 LOOP

        v_i := 2;

       LOOP

 IF mod(v_m, v_i) = 0 THEN

             v_i := 0;

EXIT;

END IF;

         v_i := v_i + 1;

 EXIT WHEN v_i > v_m - 1;  

 END LOOP;

 IF v_i > 0 THEN
          v_n := v_n + 1;

          DBMS_OUTPUT.PUT_LINE('第'|| v_n || '个素数是' || v_m);

 END IF;

       v_m := v_m + 2;

 END LOOP;

 END;

总的来说。PL/SQL的控制结构也是由一般的顺序、分支、循环三个方面的语句来控制其逻辑顺序的。通过上述的实例,我们基本上了解了每个PL/SQL控制结构的语法和作用,在本站的PL/SQL教程中,我们可以继续深入学习,把本文学到的知识运用到解决实际的问题当中去。

 

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>