oracle支持哪些流程控制语句

 我来答
百度网友024827e
2016-10-28 · TA获得超过1657个赞
知道大有可为答主
回答量:1117
采纳率:93%
帮助的人:354万
展开全部
PL/SQL之--流程控制语句
一、简介
  像编程语言一样,oracle PL/SQL也有自己的流程控制语句。通过流程控制语句,我们可以在PL/SQL中实现一下比较复杂的业务逻辑操作。而无需到程序中去控制,在一定程度上提高了效率,这也是PL/SQL的强大之处。PL/SQL流程控制语句有如下几种:
控制语句: 包括IF 语句、CASE语句
循环语句: 包括LOOP语句, WHILE语句、FOR语句
顺序语句: 包括GOTO语句
二、语句种类
  1、控制语句
    a、IF语句
      语法如下:
        IF 条件语句 TEHN 执行语句
        ELSIF 条件语句 TEHN 执行语句
        ELSE 执行语句
        END IF;
      示例如下:

DECLARE
i number;
str VARCHAR2(18) := 'b';
BEGIN
--数字判断
if(i = 6) THEN
NULL; -- 如果什么都不做建议写null,保证语句的完整性
ELSIF(i is null) THEN
dbms_output.put_line('null');
ELSE
dbms_output.put_line('null');
END IF;

-- 字符串判断
if(str = 'a') THEN
dbms_output.put_line('if');
ELSIF (str = 'b') THEN
dbms_output.put_line('elsif');
ELSE
dbms_output.put_line('else');
END IF;
END;

    b、CASE语句
      语法如下:
      1、变量判断

       CASE 变量
       WHEN 值 THEN 执行语句

       WHEN 值 THEN 执行语句
END CASE;
2、表达式判断
       CASE

       WHEN 表达式 TEHN 执行语句

       WHEN 表达式 TEHN 执行语句
END CASE;
      示例代码如下:

DECLARE
str VARCHAR2(18) := 'B';
num NUMBER := 60;
strresult VARCHAR2(10);
numresult VARCHAR2(10);
BEGIN
-- 变量判断
CASE str
WHEN 'A' THEN strresult := '优秀';
WHEN 'B' THEN strresult := '良好';
WHEN 'C' THEN strresult := '合格';
WHEN 'D' THEN strresult := '不及格';
END CASE;
--表达式判断
CASE
WHEN num < 60 THEN numresult := '不及格';
WHEN num < 70 THEN numresult := '合格';
WHEN num < 70 THEN numresult := '良好';
WHEN num < 70 THEN numresult := '优秀';
END CASE;

dbms_output.put_line(strresult);
dbms_output.put_line(numresult);
END;

  2、循环语句
    a、LOOP语句
      语法如下:
       LOOP
       执行语句
       EXIT WHEN 条件      
       END LOOP;
      示例代码:

DECLARE
i NUMBER := 0 ;
BEGIN
LOOP
i := i + 1 ;
dbms_output.put_line (i) ;
EXIT WHEN i = 5 ;
END LOOP ;
END ;

    b、WHILE语句
      语法如下:
      WHILE 条件 LOOP
       执行语句
       END LOOP;

-- 打印i每次增加后的值
DECLARE
i NUMBER := 0 ;
BEGIN
WHILE i < 5 LOOP
i := i + 1 ;
dbms_output.put_line ('i:' || i) ;
END LOOP ;
END ;

    c、FOR语句
语法如下:
      FOR 变量 IN (REVERSE) 数字 .. 数字 LOOP
      执行语句
      END LOOP;

     加上REVERSE就是数字的逆序。
     示例代码如下:

-- index 是for开始就定了的
BEGIN
-- 打印1到5之前的数
FOR i IN 1 .. 5 LOOP
dbms_output.put_line ('i:' || i) ;
END LOOP ;
-- 打印5-到20的数,逆序打印
FOR j IN REVERSE 5 .. 20 LOOP
dbms_output.put_line ('j:' || j) ;
END LOOP ;
END ;

  3、顺序语句
    a、GOTO语句
      语法如下:
      GOTO label;
      GOTO语句一般都是由某行跳到另外一行。
      示例代码如下:

1 DECLARE
2 i NUMBER := 1 ;
3 BEGIN
4 loop
5 dbms_output.put_line (i) ;
6 i := i + 1 ;
7 IF i = 10 THEN
8 GOTO label ;
9 END IF ;
10 END loop ;
11 << label >>
12 dbms_output.put_line ('label') ;
13 END;

       本例子就i一直循环加一,当i等于10时,跳出循环,跳到第11行并执行。 
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式