Oracle--plsql之控制结构

条件分支语句
IF 语句:
–IF-THEN-END IF
–IF-THEN-ELSE-END IF
–IF-THEN-ELSIF-END IF
case语句:
循环语句
loop

语法:
IF condition THEN   
statements; 
[ELSIF condition 
THEN   statements;] 
[ELSE   statements;] 
END IF;   


condition     是一个布尔变量或表达式 (值为TRUE, FALSE或NULL) (仅当表达式为TRUE时执行
                     THEN 之后的语句)。
 
THEN     是一个子句,与前面的布尔表达式相联系。
 
statements   是 若干个PL/SQL 或 SQL 语句 (语句中可能还有嵌套的IF 语句)。
ELSIF     这个关键字将引入一个布尔表达式 (如果第一个条件结果为FALSE或NULL,ELSEIF 关键
                字将引出附加的选择条件) 。
 
ELSE      如果IF条件不成立则执行ELSE关键字后面的语句。
 
NULL的处理
DECLARE • x number(2):= 5; y number(2):= NULL; BEGIN IF x != y THEN dbms_output.put_line(100); ELSE dbms_output.put_line(200); END IF; END;
 任何包含空值的算术表达式结果均为空值。
 
 仅当变量值为NULL时,IS NULL 的返回值是 TRUE 。
 
 可把空变量当作空字符串来连接表达式。

DECLARE x number(2):=null; y number(2):=null; begin if x!=y then dbms_output.put_line(100); else dbms_output.put_line(200); end if; end; DECLARE x number(2):=null; y number(2):=null; begin if x=y then dbms_output.put_line(100); else dbms_output.put_line(200); end if; end;
都输出200
DECLARE x number(2):=5; y number(2):=null; begin if nvl(x,0)!=nvl(y,0) then dbms_output.put_line(100); else dbms_output.put_line(200); end if; end;
输出100

逻辑表:

CASE语句

语法:
CASE selector WHEN expression1 THEN result1 WHEN expression2 THEN result2... WHEN expressionN THEN resultN [ELSE resultN+1;] END; DECLARE v_var varchar2(10); v_deptno emp.deptno%type; BEGIN SELECT deptno into v_deptno from emp where sal=(select max(sal) from emp); v_var:= case v_deptno when 10 then '部门1' when 20 then '部门2' else '部门3' END; dbms_output.put_line(v_var); END;
循环控制 : LOOP 语句
LOOP 语句有三种形式:
Basic loop       无条件的循环
FOR loop         有计数的循环
WHILE loop       有条件的循环
EXIT 是强制结束循环的语句

BASIC LOOP:
无条件循环的特点是循环体至少执行一次

LOOP statement1; . . . EXIT [WHEN condition]; END LOOP;
FOR LOOP:
FOR loop的结构大致与 Basic Loop相同。只是, FOR loop语句的前端有一个控制语句,这个控制语句来决定PL/SQL执行循环的次数
FOR counter in [REVERSE] lower_bound..upper_bound LOOP statement1; statement2; . . . END LOOP;
WHILE LOOP:
WHILE condition LOOP statement1; statement2; . . . END LOOP;WHILE loop 是在条件为真的情况下循环执行一系列语句。 WHILE loop 循环是在执行一系列语句之前判断条件即先判断后执行。当条件为假时结束循环。如果一开始条件就为假,则一次也不执行这些代码。
 
附注:如果条件为NULL,循环终止,控制跳到下一个语句。

GOTO语句:
BEGIN dbms_output.put_line(1); GOTO l_last_line; dbms_output.put_line(2); return; <<l_last_line>> dbms_output.put_line(3); END;•不能GOTO到嵌套块内部的标签 
•IF子句外部执行的语句,不能GOTO到IF子句内部的标签 
•IF子句内部执行的语句,不能GOTO到另一个IF子句内部的标签 
•不能从异常处理部分GOTO到代码其它部分


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值