PL/SQL 流程控制

PL/SQL的流程控制语句分为三种:

  • 条件语句:IF语句,CASE语句。
  • 循环语句:LOOP语句,EXIT语句。
  • 顺序语句:GOTO语句,NULL语句。

1.条件语句

if表达式

IF 布尔表达式 THEN  

 sql语句和pl/sql 语句;

END IF;

IF 布尔表达式 THEN

 pl/sql语句和SQL语句;

ELSE

 其他语句;

END IF;

IF 布尔表达式 THEN

 pl/sql语句和SQL语句;

ELSIF 布尔表达式 THEN

 其他语句;

ELSIF 布尔表达式 THEN

 其他语句;

注意:ELSIF 不要写成 ELSEIF。

例子:

DECLARE
    V_empno emp.salary%type :=&empno;
    V_comment varchar2(25);
BEGIN
    select salary into V_sal from emp where empno=V_empno;
    if V_sal>5000 then
        V_comment:='有点少';
    elsif V_sal>8000 then
        V_comment :='还不错';
    else 
        V_coment :='你很棒哦';
    end IF;
    dbms_output.put_line(V_coment);
END;

case表达式

case selector
    when 表达式1 then 结果1
    when 表达式2 then 结果2
    when 表达式n then 结果n
    else 其他语句
END;

例子:

DECLARE
    V_grant char(1) :=&grant;
    V_rank varchar2(10);
BEGIN
    V_rank=
    case V_grant
        when 'A' then '你真棒'
        when 'B' then '你可以啊'
        when 'C' then '一般般哦'
        else '好差'
    end;
    dbms_output.put_line('grant:' ||V_rank );
END;

2.循环语句

loop语句

LOOP
    执行的语句;
    exit when 满足条件;
END LOOP;

例子:

DECLARE
    i number(2):=0;
BEGIN
    LOOP
        i:=i+1;
        dbms_output.put_line(i);
        EXIT when i=10;
    END LOOP;
END;

while语句

WHERE 布尔表达式 LOOP
    需要执行的语句;
END LOOP;

例子:

DECLARE
    i number(2):=0;
    WHILE i<10 LOOP
        dnms.output.put_line(i);
        i:=i+1;
    END LOOP;
END;

for…in循环

for 循环计数器 in [reverse] 上限..下限 LOOP
    需要执行的语句;
end loop;

其中:
 1.每循环一次,循环变量自动+1;加上reverse关键字,每循环一次,循环变量自动-1。
  2.跟在in reverse后面的数字必须从小到大,但不一定是整数,可以是能转换成整数的表达式。
 
例子:

BEGIN
    for i in 1..5 loop
        dbms_output._put_line(i);
    end loop;
    for i in reverse 1..5 loop
        dbms_output._put_line(i);
    end loop;
END;

3.标号和GOTO语句

PL/SQL中GOTO是无条件调到指定标号中。

一般形式为:
GOTO label;
....
<<label>>

例子:

BEGIN
    for i in 1..5 then loop
    dbms_output.put_line('我还没跳,我是:'||i);
    end loop;
    if i=3 then
    goto lee;
    end if;
    <<lee>>
    dbms_output.put_line('我跳了,我是:'||i);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值