PLSQL 流程控制

xiaoxiao2021-02-27  168

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);
转载请注明原文地址: https://www.6miu.com/read-13791.html

最新回复(0)