Oracle Forms:某些行上的特定列未在数据库中存储值?

Oracle Forms: have a specific column on some rows not store a value in the database?

要求

这里是简化的要求。最终目标是能够显示有关项目的数据,或使用保存的数据打印标签。正在 Oracle Forms Builder

中创建解决方案

问题

我们不希望表单将 SQL 派生值保存到 table。

有没有办法让某些行上的特定列不在数据库中存储值?这些将是包含 SQL 派生值的行,这些派生值显示在禁用的值单元格中,并在查询项目或分配属性时派生。

这是可能的,但您确实应该为您的表单实施 table 处理程序,而不是依赖 Oracle 表单为您执行 DML。

"implement table handlers",我的意思是,将块的“DML Data Target Type”属性设置为“Use Transactional Triggers”。

然后,为您的块编写 ON-INSERTON-UPDATE 等触发器以调用 PL/SQL(传递适当的值以从您的块插入、更新等)。

在您的 PL/SQL 中,您可以将每一列准确地插入到您想要的位置和方式,或者根本不插入一列,这就是您想要的。

如果您使用的是 Oracle 电子商务套件,请参阅 Oracle 应用程序开发人员指南 第 10 章 ("Using PL/SQL in Oracle E-Business Suite: Coding Item, Event, and Table Handlers")。