我得到“遇到符号”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;
答案 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”部分中。
但这两个都是偏离主题的,而且很难说它当然被简化了多少......