oracle学习笔记(四)

来源:互联网 发布:unity3d人物模型 编辑:程序博客网 时间:2024/06/05 06:50

oracle中的流程控制语句,主要包括选择语句和循环语句,选择语句也就是条件语句。

一、条件语句

1.if then 语句格式

if<condition> then
end if;

2.if then else 语句格式

if <condition> then 
plsql语句1;
else 
plsql语句2;

3.if then elsif 语句格式

if<condition> then
plsql语句1;
elsif<condition> then
plsql语句2;
elsif<condition> then
plsql语句3;
......
......

end if;

举个例子,用oracle自带的表emp作为基础。判断员工编号不同的两位员工,谁的名字字符更长。

DECLARE  A EMP.ENAME%TYPE;  B EMP.ENAME%TYPE;BEGIN  SELECT EMP.ENAME INTO A FROM EMP WHERE EMP.EMPNO = 7369;  SELECT EMP.ENAME INTO B FROM EMP WHERE EMP.EMPNO = 7499;  IF LENGTH(A) > LENGTH(B) THEN    DBMS_OUTPUT.PUT_LINE(A || '的名字长');  ELSIF LENGTH(A) > LENGTH(B) THEN    DBMS_OUTPUT.PUT_LINE(B || '的名字长');  ELSIF LENGTH(A) = LENGTH(B) THEN    DBMS_OUTPUT.PUT_LINE(A || '和' || B || '的名字一样长');  END IF;END;


4.case 语句格式

case<变量>
when<1> then plsql语句1;
when<2> then plsql语句2;
when<3> then plsql语句3;
else
end case;

多情况判断时可以考虑用case语句替换elsif语句,因为case简洁明了。

二、循环语句

1.loop循环语句
格式:
loop 
sql语句;
exit when 结束条件 
end loop;
这种情况下会先执行一次循环体,然后再判断是否退出循环体。
SQL> DECLARE  2    --求1到10之和是多少  3    I    INT := 0;  4    SUMI INT := 0;  5  BEGIN  6    LOOP  7      I    := I + 1;  8      SUMI := SUMI + I;  9      EXIT WHEN I = 10; 10    END LOOP; 11    DBMS_OUTPUT.PUT_LINE('1到10求和为' || SUMI); 12  END; 13  /1到10求和为55PL/SQL procedure successfully completed

2.while循环语句

先判断条件是否满足,满足的话开始进入循环体,看下面的例子。
DECLARE  --求1到10之和是多少  I    INT := 0;  SUMI INT := 0;BEGIN  WHILE I <= 9 LOOP    I    := I + 1;    SUMI := SUMI + I;  END LOOP;  DBMS_OUTPUT.PUT_LINE('1到10求和为' || SUMI);END;

3.for循环语句

for循环是可以预置循环次数的控制语句,有一个计数器,下面的a就是这个功能,默认情况下这个计数器是逐渐递增的,但是也可以在前面加上关键字reverse,变成逐渐递减。
DECLARE  --求1到10之和是多少  I    INT := 0;  SUMI INT := 0;  a INT :=0;BEGIN  FOR a IN 0 .. 9 LOOP    I    := I + 1;    SUMI := SUMI + I;  END LOOP;  DBMS_OUTPUT.PUT_LINE('1到10求和为' || SUMI);END;



原创粉丝点击