1

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

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

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

  • ORA-12899(原因是 Null 值插入到非 Null 列中)
  • ORA-1400 (原因是数据长度大于允许的长度)

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

4

3 回答 3

2

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

下一组DatatypeMaximum length属性设置基本数据验证。

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

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

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

于 2016-09-26T06:18:02.537 回答
0

您必须保证将在不接受空值的指定列中插入合适的值,您必须NVL在插入语句中使用函数。好吧,拥有一种技术也是一个好主意。 处理 Oracle Forms 错误和信息性消息

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

于 2016-09-25T07:06:48.560 回答
-1

您可以使用默认 Oracle Forms 菜单工具栏为您处理表单的 CRUD 操作。而不是编写插入、更新等。

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

于 2016-09-26T11:06:15.590 回答