T-SQL提供了类似于C语言的多层条件语句。上一小节的例子可以表达为:
IF @grade = 'A'
BEGIN
@result := 'Excellent';
END
ELSE IF @grade = 'B'
BEGIN
@result := 'Very Good';
END
ELSE IF @grade = 'C'
BEGIN
@result := 'Good'
END
ELSE IF @grade = 'D'
BEGIN
@result := 'Fair'
END
ELSE IF @grade = 'F'
BEGIN
@result := 'Poor'
END
ELSE
BEGIN
@result := 'No such grade'
END
上述语句虽然看起来和PL/SQL的ELSIF差不多,但实际上是使用多层选择。
开关语句就是专门为简化多重选择而设计的,所以,如果可能,尽量使用之。
在9i以前的版本中,Oracle只提供了DECODE一个开关函数,并且该函数只能在SQL语句中使用,不能直接在PL/SQL的其他类型语句中使用。
DECODE的语法为:
DECODE(expr,search,result[,search,result]...[,default])
例如,上一小节中的例子可以用DECODE表达为:
select DECODE(v_grade, 'A', 'Excellent',
'B', 'Very Good',
'C', 'Good',
'D', 'Fair',
'F', 'Poor',
'No such grade')
into v_result
from dual;
这里假设v_grade和v_result均为PL/SQL中的变量。
(编辑:aniston)
|