ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 所教授Oracle课程总结(5)——PL/SQL中的逻辑控制代码

所教授Oracle课程总结(5)——PL/SQL中的逻辑控制代码

原创 Linux操作系统 作者:violetluna 时间:2009-04-10 22:20:02 0 删除 编辑

PL/SQL中的逻辑控制代码与java类似,同样也有条件判断和循环结构。

这里将常用的几种结构举例讲解一下。

首先是条件判断,在PL/SQL中,条件判断分为if...else结构以及case...end case结构。

1. IF...ELSE
IF...ELSE的基本结构如下:

IF condition THEN
     --代码
END IF;

如果有多个分支,写法如下:
IF condition THEN
    --代码
ELSE
    --代码
END IF;

或者

IF condition THEN
    --代码
ELSIF condition THEN
    --代码
ELSE
    --代码
END IF;

比如,查找出emp表中员工编号为7788的员工的部门编号,如果是10,则为其加薪3000,如果是20,则加2000,如果是30,则加1000。

DECLARE
     l_deptno emp.deptno%type;
BEGIN
     SELECT deptno INTO l_deptno FROM emp WHERE empno = 7788;
     IF l_deptno = 10 THEN
           UPDATE emp SET sal = sal + 3000 WHERE empno = 7788; 
     ELSIF l_deptno = 20 THEN
           UPDATE emp SET sal = sal + 2000 WHERE empno = 7788;
      ELSE
           UPDATE emp SET sal = sal + 1000 WHERE empno = 7788;
       END IF;
END;
/

2. CASE...END CASE

CASE...END CASE的结构如下:

CASE
          WHEN condition1 THEN value1;
          WHEN condition2 THEN value2;
          WHEN condition3 THEN value3;
          ELSE value4;
END CASE;

修改刚才的代码,找出7788的部门编号,如果是10,则输出后骨干,如果是20,则输出精英,如果是30,则输出普通员工,代码如下:

DECLARE
      l_deptno emp.deptno%type;
BEGIN
      SELECT deptno INTO l_deptno FROM emp WHERE empno = 7788;
      CASE
                WHEN l_deptno = 10 THEN DBMS_OUTPUT.put_line('骨干员工');
                WHEN l_deptno = 20 THEN DBMS_OUTPUT.put_line('精英员工');
                ELSE DBMS_OUTPUT.put_line('普通员工');
        END CASE;
END;
/

3. LOOP循环结构

LOOP循环的结构如下:

LOOP
  --循环代码
   EXIT[ WHEN 退出条件];
END LOOP;

比如循环输出1到100之间的数字,遇到70停止循环

DECLARE
     l_count number(3) := 1;
BEGIN
      LOOP
             DBMS_OUTPUT.put_line(l_count); 
             IF l_count = 70 THEN
                  EXIT;
             END IF; 
             l_count := l_count +1;
      END LOOP;
END;
/

还可以写成

DECLARE
     l_count number(3) := 1;
BEGIN
      LOOP
             DBMS_OUTPUT.put_line(l_count); 
             EXIT WHEN l_count = 70;
             l_count := l_count +1;
      END LOOP;
END;
/

4. WHILE循环结构

WHILE循环结构如下:

WHILE condition LOOP
   --循环代码
END LOOP;

还是上面的例子,用WHILE循环可以写成

DECLARE
     l_count number(3) := 1;
BEGIN
      WHILE l_count <= 70 LOOP
             DBMS_OUTPUT.put_line(l_count); 
             l_count := l_count +1;
      END LOOP;
END;
/

5. FOR循环结构

FOR循环结构如下:

FOR 计数器变量 in 集合 LOOP
    --循环代码
END LOOP;

那么上面的例子可以用FOR循环写成

DECLARE
BEGIN
      FOR l_count in 1..100 LOOP
             DBMS_OUTPUT.put_line(l_count); 
             IF l_count = 70 THEN
                  EXIT;
             END IF; 
      END LOOP;
END;
/

可以看到这里的EXIT类似于java中的break,用来跳出循环用的。

FOR循环代码在所有循环语句中最为简洁,也是最灵活的用法,下一篇我们开始讲存储过程以及存储函数。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8061238/viewspace-588642/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-03-29

  • 博文量
    7
  • 访问量
    8239