如何使用 Form Builder 和 PL/SQL 插入记录?

Posted

技术标签:

【中文标题】如何使用 Form Builder 和 PL/SQL 插入记录?【英文标题】:How can I insert a record using Form Builder and PL/SQL? 【发布时间】:2009-02-27 16:31:11 【问题描述】:

我正在慢慢学习 SQL 以及如何使用表单构建器 6。情况是我在表中有一个名为“玩家”的简单表,我有三列:

player_no(主键) 位置 目标

在表单生成器 6 中,我使用这三个字段创建了一个非常简单的表单。该表格被命名为“团队”。在表格的底部,我有一个标有“添加”的按钮。目标是让用户输入 player_no、位置和目标,然后单击“添加”。然后将这些信息放入我的表中。

到目前为止,所有尝试都以惨败告终。我在按钮(WHEN_MOUSE_CLICK)上设置了一个触发器。然后我输入了以下代码:

BEGIN
  INSERT INTO players ( player_no )
  VALUES ( :TEAM.player_no )
END

为了进行测试,我只使用了一个 (player_no) 字段。然后当我运行表单并输入 player_no 并点击按钮时编译没有错误,我在状态栏中收到以下错误:

frm-40735:WHEN-MOUSE-CLICK 触发器引发未处理的异常 ORA-01400

我做错了什么可怕的事情吗?我对 SQL 和 Form Builder 非常陌生,因此我们将不胜感激。

【问题讨论】:

【参考方案1】:

ORA-01400: cannot insert Null 似乎您的某个字段不为空,并且您在插入时省略了它们。或值 :TEAM.player_no 在插入期间为空。

另外,来自网络的某个地方:

FRM-40735:ON-INSERT 触发器引发 未处理我们有类似的问题 从 11.5.9 开始。我们清除 Jinitiator 缓存和临时 Internet 文件 (工具>互联网选项然后在 临时互联网文件清晰 文件按钮)。似乎有效。

【讨论】:

【参考方案2】:

使用表单生成器的好处之一是您几乎总是不需要自己编写 DML 语句。

只需根据表创建块 - 然后用户可以添加和修改任意数量的记录,然后当他们保存(即 COMMIT)时,Forms 运行时会自动计算出保存所需的 INSERT 和 UPDATE变化。

【讨论】:

以上是关于如何使用 Form Builder 和 PL/SQL 插入记录?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Flutter Form Builder 如何通过添加 FormBuilderFieldOption 的值来更改 FormBuilderDateTimePicker 的日期值

form builder angular 2 - 如何构造控件数组?

如何将“material_tag_editor”中用户提交的标签数据添加到“Flutter Form Builder”表单中?

C++builder 怎么给fastReport中的Edit赋值

在使用 Entity Framework 数据库优先在表上插入行之前,如何从 PL/SQL 执行触发器?

如何在选择语句的“NOT IN”子句中使用逗号分隔的字符串列表作为 pl/sql 存储的函数参数