0

我在 oracle 中有一个表类型输入 + 输出(IO)变量(有 5 列),我在循环中从它读取值并执行验证,如果有验证被触发,我在第五列中放置一条错误消息。如果第五列为空,我在表中插入值。我有这方面的工作代码。但是我需要的是,假设我要插入 5 行,并且如果对任何行触发了验证,那么也不应该为其他行插入数据。我无法引发异常,因为我仍然需要其他行的错误消息。

我有两个解决方案。首先..首先执行验证(不插入),如果第五列为空,则将再次运行循环并插入表中。其次..在临时表中插入值,如果直到最后一行没有触发验证,则将从临时表中选择并插入主表中。

有没有更好的方法来处理这个?

4

1 回答 1

0

您可以尝试在插入之前验证所有行,然后使用命令“INSERT SELECT”将所有行插入到表中,第五列是否填充错误消息(基于您之前所做的验证)。

例子:

BEGIN
    --DO SOME VALIDATION

    INSERT INTO <TABLE_NAME>
    SELECT COLUMN1, COLUMN2, COLUMN3, COLUMN4, 'ERROR OR NOT ERROR' COLUMN5
      FROM <OTHER_TABLE>;
END;

这样你就不需要第二个循环,但你需要看看它是否适合你的需要。

于 2018-12-14T13:26:53.947 回答