拦截错误消息并使用户更友好的任何方式?

时间:2017-01-09 03:29:06

标签: oracle oracle-apex

我在其他地方找到了答案here,但还没有找到我需要知道的内容。

我有3个表,Order_Details,Products_Ordered和Product_Details。前两个用于主要详细信息表单,以显示订单和一起订购的项目。 Products_Ordered表具有由两个外键构成的复合主键,第一个是Order_Details表中的主键,第二个是Product_Details表中的主键。它们共同确保一种产品只能添加到订单一次。如果有人想订购多个产品,则可以更改记录中的数量字段以反映这一点。到目前为止,一切似乎都很好。

我的问题是,在主详细信息表单中向订单添加产品时,我使用了下拉列表值来选择要添加到订单中的产品。此显示的值是产品名称,它的返回值是Product_Details表中产品的主键。

我喜欢这个,因为用户更容易选择产品并将其数量添加到表格中。除了一种情况外,它适用于插入和更新操作。

如果用户在行中选择相同的产品,则提交数据库的表然后尝试将产品添加到订单两次,抛出" ORA-00001:违反了唯一约束。"错误。显然这是因为在表的主键中使用了产品ID。

我不想让用户像这样添加两个记录到表中,而是强迫他们相应地改变数量字段。出现的错误消息不是非常用户友好所以我的问题是如何检测此错误并显示更友好的错误,而不是告诉他们改变数量字段?

*如果这不可能,那么我是否可以从下表行的值下拉列表中隐藏任何已选择的产品?我没有太多关注这一点,因为当用户尝试添加的行数多于下拉列表中可用的产品并且没有更多的产品值显示时,它肯定会变得复杂吗?

我对此很新,所以请你好。非常感谢任何帮助:D

1 个答案:

答案 0 :(得分:0)

这是一个很好地描述所有内容的链接: https://docs.oracle.com/cd/A97630_01/appdev.920/a96624/07_errs.htm

节 预定义的PL / SQL异常 结合: 定义自己的PL / SQL异常 和 定义您自己的错误消息:过程RAISE_APPLICATION_ERROR

希望它有所帮助...