如何在oracle表单中使用后查询计算多条记录



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

I did database item property: no;数据类型:number

我尝试了post-query trigger on datablock,然后我写了触发器:

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

我得到了错误

纳- 40735

;POST-QUERY触发器引发未处理异常ORA-01422

您只能在条目中选择1行。在本例中,ora-01422表示您有多于1行。

对每一行触发后置查询,所以如果你想对每一行都触发后置查询,那就只对那一行进行计数,而不是对所有行进行计数。

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

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

或者,您可以使用Post-Query触发器填充if我们可以称之为'formula'项目,但仍然需要将所有三列返回到单独的项目中。我不喜欢使用摘要项,因为它在表单内部的含义略有不同。

如果你不想这样做,你也可以在from子句上建立你的块,直接在sql中进行计算。

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

根据您的需要有很多可能性,但我个人更倾向于公式项。

最新更新