使用 Oracle Forms Builder 进行异常处理

Exception handling using Oracle Forms Builder

我正在 Oracle Forms Builder 中借助网络 material 制作我的第一个 Oracle 表单,即教程等。我在 WHEN-BUTTON-PRESSED 触发器中编写了以下代码:

INSERT INTO PATIENT VALUES 
(:CNIC_NO, :P_NAME, :CITY, :ADDRESS, :GENDER, :BLOOD_GROUP, :DISEASE, :WARD_NO);
COMMIT;

这里的问题是触发器引发了一个未处理的异常,错误号如下:

我需要为这些弹出一个信息性消息框,为其他弹出一个默认消息框。

您必须保证有一个 suitable 值将被插入到不接受空值的指定列中,您必须在插入语句中使用 NVL 函数。好吧,拥有一项技术也是一个不错的主意。 handle Oracle Forms errors and informative messages

您还必须构建足够大的 table 列来存储插入的地址,例如必须大于 100 varchar2。

首先我会通过内置的 Oracle 表单验证来避免这个错误。在 属性 面板上将所有项目的 Required 属性 设置为 True,这些项目基于非空数据库列。 Oracle 表单然后强制用户输入一个值。

接下来设置 DatatypeMaximum length 属性以设置基本数据验证。

这对你的情况应该足够了。如果您仍想捕获异常,请使用如下代码:

begin
    INSERT ...
exception
    when others then
        message(DBMSERRTEXT);
end;

无论如何 - 使用按钮按下触发器插入数据不是个好主意。这不是交易安全的。使用标准表格块。 Oracle 表单为您完成所有数据验证和操作。

您可以使用 The Default Oracle Forms Menu Tool Bar 为您处理表单的 CRUD 操作。而不是写插入、更新等

但是,您必须自己为每个表单模块指定使用它。