使用 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;
这里的问题是触发器引发了一个未处理的异常,错误号如下:
- ORA-12899(原因是在非空列中插入了空值)
- ORA-1400(原因是数据长度大于允许长度)
我需要为这些弹出一个信息性消息框,为其他弹出一个默认消息框。
您必须保证有一个 suitable 值将被插入到不接受空值的指定列中,您必须在插入语句中使用 NVL
函数。好吧,拥有一项技术也是一个不错的主意。
handle Oracle Forms errors and informative messages
您还必须构建足够大的 table 列来存储插入的地址,例如必须大于 100 varchar2。
首先我会通过内置的 Oracle 表单验证来避免这个错误。在 属性 面板上将所有项目的 Required
属性 设置为 True
,这些项目基于非空数据库列。 Oracle 表单然后强制用户输入一个值。
接下来设置 Datatype
和 Maximum length
属性以设置基本数据验证。
这对你的情况应该足够了。如果您仍想捕获异常,请使用如下代码:
begin
INSERT ...
exception
when others then
message(DBMSERRTEXT);
end;
无论如何 - 使用按钮按下触发器插入数据不是个好主意。这不是交易安全的。使用标准表格块。 Oracle 表单为您完成所有数据验证和操作。
您可以使用 The Default Oracle Forms Menu Tool Bar 为您处理表单的 CRUD 操作。而不是写插入、更新等
但是,您必须自己为每个表单模块指定使用它。
我正在 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;
这里的问题是触发器引发了一个未处理的异常,错误号如下:
- ORA-12899(原因是在非空列中插入了空值)
- ORA-1400(原因是数据长度大于允许长度)
我需要为这些弹出一个信息性消息框,为其他弹出一个默认消息框。
您必须保证有一个 suitable 值将被插入到不接受空值的指定列中,您必须在插入语句中使用 NVL
函数。好吧,拥有一项技术也是一个不错的主意。
handle Oracle Forms errors and informative messages
您还必须构建足够大的 table 列来存储插入的地址,例如必须大于 100 varchar2。
首先我会通过内置的 Oracle 表单验证来避免这个错误。在 属性 面板上将所有项目的 Required
属性 设置为 True
,这些项目基于非空数据库列。 Oracle 表单然后强制用户输入一个值。
接下来设置 Datatype
和 Maximum length
属性以设置基本数据验证。
这对你的情况应该足够了。如果您仍想捕获异常,请使用如下代码:
begin
INSERT ...
exception
when others then
message(DBMSERRTEXT);
end;
无论如何 - 使用按钮按下触发器插入数据不是个好主意。这不是交易安全的。使用标准表格块。 Oracle 表单为您完成所有数据验证和操作。
您可以使用 The Default Oracle Forms Menu Tool Bar 为您处理表单的 CRUD 操作。而不是写插入、更新等
但是,您必须自己为每个表单模块指定使用它。