Oracleforms 如何在oracle窗体中使用post查询计算多条记录

Oracleforms 如何在oracle窗体中使用post查询计算多条记录,oracleforms,Oracleforms,我在Oracle数据库中排序了多个数据类型记录。我试图计算它们以得到结果,我想在显示项上显示它 我没有创建数据库项属性:否;和数据类型:number 我在数据块上尝试了post查询触发器,然后编写了触发器: BEGIN SELECT sal + allow1 + allow2 INTO :display_item1 FROM employees EXCEPTION WHEN no_data_found THEN :all_allow := 0;

我在Oracle数据库中排序了多个数据类型记录。我试图计算它们以得到结果,我想在显示项上显示它

我没有创建数据库项属性:否;和数据类型:number

我在数据块上尝试了post查询触发器,然后编写了触发器:

BEGIN
    SELECT sal + allow1 + allow2
    INTO   :display_item1
    FROM   employees
EXCEPTION
    WHEN no_data_found THEN
      :all_allow := 0;;
END;
我弄错了

frm-40735;查询后触发器引发未处理的异常ORA-01422


只能在项目中选择一行。在本例中,ora-01422表示您得到的行数超过1行

触发器post查询为每一行触发,因此如果希望每一行都发生这种情况,只需对该行进行计数,而不是对所有行一起进行计数


如果您真的需要对所有这些行进行计数,您可以使用SUM函数或其他函数。

如果我理解正确,您希望有一个项目显示表中三个不同列的总数,这就是我应该做的。为列sal、allow1和allow2创建三个隐藏项。对于隐藏项,我指的是没有指定画布的数据库项(也称为空画布项)。然后,我创建一个要显示给用户的无数据库项。对于该项,我将计算模式属性设置为公式,将公式属性设置为“:my_block.sal+:my_block.allow1和my_block.allow2”

或者,如果我们可以将其称为“公式”项,您可以使用Post查询触发器填充,但仍然需要将所有三列返回到单独的项中。我不喜欢使用摘要项,因为它在表单中的含义略有不同

如果不想这样做,也可以在from子句上构建块,然后直接在sql中进行计算

另一个解决方案应该是创建一个数据库侧视图来进行计算,并基于视图而不是表创建表单块。顺便说一句,这是一种创建表单的好方法,可以将表单本身与基础表分离。这使您可以自由更改数据库结构,而不会使表单无效

许多可能性取决于你的需要,但我个人应该选择公式项目