如果在ORACLE中,ELSIF V/S ELSE

Nis*_*sar 8 oracle oracle11g

在甲骨文中这两者有所不同.

elsif

else if
Run Code Online (Sandbox Code Playgroud)

两者都执行正常,没有错误.

这两者有什么区别.

Jus*_*ave 12

IFPL/SQL中的语句结构为

IF <<some condition>>
THEN
  <<do something>>
ELSIF <<another condition>>
THEN
  <<do something else>>
ELSE
  <<do a third thing>>
END IF;
Run Code Online (Sandbox Code Playgroud)

其中ELSIFELSE都是可选的.如果您看到一个ELSE IF,则表示有人在块中创建嵌套IF语句(带嵌套END IF)ELSE.那是

IF <<some condition>>
THEN
  <<do something>>
ELSE
  IF <<another condition>>
  THEN
    <<do something else>>
  END IF;
END IF;
Run Code Online (Sandbox Code Playgroud)

如果您愿意,可以根据需要深入嵌套PL/SQL块.但是,一般情况下,如果您没有嵌套超出必要的内容,您的代码将更加清晰.除非这里有令人信服的理由来创建嵌套IF语句,否则您更有可能使用IF包含一个或多个ELSIF块的单个语句(或者甚至更好的a CASE)生成可读代码.另外,通过这种方式,您不会尝试计算END IF关闭所有嵌套IF语句所需的所有语句.


Jos*_*h B 9

ELSIF不需要匹配的END IF.如果不满足第一IF的条件,则检查ELSIF条件.

ELSE IF需要匹配的END IF,因为启动了新的IF块.

参考文献:

Oracle®DatabasePL/SQL语言参考上的PL/SQL控制语句

  • 谢谢。我现在真的不喜欢 Oracle 这种废话。 (2认同)