PL/SQL 条件判断

这篇博客详细介绍了PL/SQL中用于条件判断的语法结构,包括IF、CASE语句及其不同形式,如IF-THEN-ELSEIF,以及简单CASE和搜索CASE语句。还提到了CASE表达式在没有匹配条件时的处理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PL/SQL 支持不同方式的条件判断,主要分为2大类:

  • IF
  • CASE

#IF
##IF-THEN
condition求值为TRUE,sequence_of_statements将会执行。

IF condition THEN
   sequence_of_statements;
END IF;

##IF-THEN-ELSE
condition求值为TRUE,sequence_of_if_statements将会执行,否则执行sequence_of_else_statements。

IF condition THEN
   sequence_of_if_statements;
ELSE
   sequence_of_else_statements;
END IF;

##IF-THEN-ELSEIF
condition1求值为TRUE,sequence_of_if_statements1将会执行,否则如果condition2求值为TRUE,sequence_of_statements2将会执行,否则执行sequence_of_statements3。

IF condition1  THEN
   sequence_of_statements1
ELSIF condition2 THEN
   sequence_of_statements2
ELSE
   sequence_of_statements3
END IF;

最后的 ELSE 为可选的,在IF结构内可以有任意多个ELSEIF, 如果ELSEIF 过多,可考虑使用支持搜索的CASE 语句。

#CASE
CASE语句可以实现和IF语句一样的效果,有两种CASE语句类型:

  • 简单CASE语句
  • 支持搜索的CASE 语句

除了CASE语言外,还有实现条件分支的CASE表达式。

##简单CASE语句
求值表达式expression 得到的结果一次和WHEN 中的result1result2, …匹配,如果一致则执行对应的语句statements, 否则执行statements_else

CASE expression
WHEN result1 THEN
   statements1
WHEN result2 THEN
   statements2
...
ELSE
   statements_else
END CASE;

ELSE 部分是可选的,如果没有ELSE ,同时没有任何WHEN成功匹配,则会抛出错误“CASE_NOT_FOUND”,同样的情况在IF里面则是简单的离开IF

expression 可以除BLOB, BFILE和复合类型之外的任意类型。

##支持搜索的CASE 语句
依次求值一系列表达式expression,当找到第一个求值为TRUE的表达式时,对应的语句statements被执行。

CASE
WHEN expression1 THEN
   statements1
WHEN expression2 THEN
   statements2
...
ELSE
   statements_else
END CASE;

同样的,ELSE为可选部分,在没有匹配发生的时候,也是产生错误“CASE_NOT_FOUND”。

##CASE表达式
依次求值一系列表达式condition_expression,当找到第一个求值为TRUE的表达式时,对应的结果表达式result_expression被求值作为CASE表达式的求值结果返回。

  CASE
     WHEN condition_expression1 
     THEN result_expression1
     WHEN condition_expression2
     THEN result_expression2
     ...
     ELSE result_expression_else
  END

CASE表达式时表达式,不是语句,直接以END结尾, 而不是END CASE;ELSE同CASE语句一样为可选部分,但是与CASE语句不同,如果没有ELSE,同时没有任何WHEN成功匹配,并不会有错误产生,而是CASE表达式被求值为NULL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值