我有一系列需要在我的 Oracle 包中使用的更新语句。这种情况很少见,但可能偶尔会出现不可避免的用户错误,这会导致更新语句之一引发“单行子查询返回一行或多行”错误。
我一直在研究 oracle PL/SQl 的异常处理,但我对如何以及使用什么来捕获此异常以使包不会崩溃有点困惑。
我知道存在预先构建的“Too Many Rows”异常子句,但我读到的所有内容似乎都说它用于不正确的插入语句。
我可以将此作为我的例外吗?还是我需要建立自己的例外条款。我以前从来没有自己建造过,只有一个粗略的想法,知道在哪里放置所需的一切。
以下代码基本上是在此特定过程中设置更新的方式,但为了简洁起见,我仅使用其外观的简单示例。
INSERT INTO TempTable... --(Initial insert statement)
UPDATE TempTable t SET t.Row_one = (SELECT (Statement_One))
WHERE T.Row_One is NULL
UPDATE TempTable t SET t.Row_one = (SELECT (Statement_Two))
WHERE T.Row_One is NULL
UPDATE TempTable t SET t.Row_one = (SELECT (Statement_Three))
WHERE T.Row_One is NULL
-- Does the exception clause start here?
EXCEPTION
WHEN TOO_MANY_ROWS THEN
(What do I tell the Procedure to do here, what am I able to tell it to do?)
--end of updates that need the exception handling
-- more insert statements into other tables based on data from the preceding Temp Table
END;
这会起作用还是我需要构建一个自定义异常?
提前致谢。