PLS-00103:没有“当期待......”时遇到符号“IF”

时间:2018-01-18 22:45:29

标签: oracle if-statement plsql

我得到“遇到符号”IF“”错误,没有任何“当期待......”之后。我的简化代码如下所示:

declare
begin
 with ()
 select <some value> into My_output
 EXCEPTION WHEN NO_DATA_FOUND then
  My_output := NULL;
 END;
 if My_output is not NULL then
  <Statement>
 end if;
end;

1 个答案:

答案 0 :(得分:2)

对你遗漏的位做出一些假设,你结束了PL / SQL块,然后有更多的代码。给定您的异常处理程序,它看起来应该是一个子块:

declare
  My_output <some type>;
begin /* main block */
  begin /* sub-block - this was missing */
    with ()
    select <some value> into My_output
  EXCEPTION WHEN NO_DATA_FOUND then
    My_output := NULL;
  END; /* sub-block */
  if My_output is not NULL then
    <Statement>
  end if;
end; /* main block*/

如果您知道零或一个结果,则可能使用聚合最小值/最大值而不是异常处理程序。这会以不同的方式处理多个结果 - 这个版本会得到太多的行。

如果所选值本身不能为空,您还可以将<statement>放在子块中,而不是放在自己的“if”部分中。

但这两个都是偏离主题的,而且很难说它当然被简化了多少......