Oracle 从Jasper服务器报表调用两次PL/SQL函数

Oracle 从Jasper服务器报表调用两次PL/SQL函数,oracle,plsql,jasper-reports,jasperserver,Oracle,Plsql,Jasper Reports,Jasperserver,我有一个从Oracle PL/SQL函数中选择数据的报告。此函数执行一个相当复杂的逻辑,并将一个表返回给查询执行器(JasperServer) 如果我仅通过单击报告名称从JasperServer运行此报告,它运行良好,并按预期返回结果,如果我从JasperSoft Studio运行此报告,也是如此 但是,如果我设置了一个调度器,并且报告在给定的时间从调度器运行,它也会运行良好并返回正确的结果,但是PL/SQL函数在Oracle数据库上执行了两次。我可以看到它,因为该函数在数据库中生成日志消息(两

我有一个从Oracle PL/SQL函数中选择数据的报告。此函数执行一个相当复杂的逻辑,并将一个表返回给查询执行器(JasperServer)

如果我仅通过单击报告名称从JasperServer运行此报告,它运行良好,并按预期返回结果,如果我从JasperSoft Studio运行此报告,也是如此

但是,如果我设置了一个调度器,并且报告在给定的时间从调度器运行,它也会运行良好并返回正确的结果,但是PL/SQL函数在Oracle数据库上执行了两次。我可以看到它,因为该函数在数据库中生成日志消息(两次)。第二次执行在第一次执行完成后立即开始。在从表、视图或其他函数中进行选择时,我从未遇到过这种情况。只有在计划报告或“在后台运行…”时才会发生这种情况

有人知道为什么会发生这种情况吗?这种行为的原因可能是什么

下面是我报告XML的一部分

-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
<queryString language="SQL">
<![CDATA[SELECT (TRUNC(SYSDATE) - to_number(TO_CHAR(sysdate, 'd')) - 6) week_start,
  (TRUNC(SYSDATE)      - to_number(TO_CHAR(sysdate, 'd')) + 1 - 1/24/3600) week_end,
  b15.subrepid,
  b15.subrepname,
  b15.numof,
  b15.volume,
  b15.revenue
    FROM TABLE(bs01.TEST_XBTOP_P_reports.bsr015()) b15]]>
</queryString>
    <field name="WEEK_START" class="java.sql.Timestamp"/>
    <field name="WEEK_END" class="java.sql.Timestamp"/>
    <field name="SUBREPID" class="java.lang.String"/>
    <field name="SUBREPNAME" class="java.lang.String"/>
    <field name="NUMOF" class="java.math.BigDecimal"/>
    <field name="VOLUME" class="java.math.BigDecimal"/>
    <field name="REVENUE" class="java.math.BigDecimal"/>
    <sortField name="SUBREPID"/>
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
我运行JasperReports服务器社区6.3和Oracle SE 11.2.0.3.0

任何想法都会得到更多的赞赏

谢谢你和亲切的问候


Pawel

看起来调度程序对报告进行了两次调整。你有调度程序运行的日志吗?我看不到调度程序日志-你知道它们在哪里吗?我刚刚注意到我的报告生成两个文件,HTML和Excel,然后它们运行SQL查询两次。如果我只生成一种输出格式,那么SQL只运行一次。但是,当我指定4种输出格式(例如Html、Excel、PDF、CSV)时,SQL仍然只运行两次,而不是四次。这是预期的吗?
如果我只生成一种输出格式,那么SQL只运行一次。但是,当我指定4种输出格式(例如Html、Excel、PDF、CSV)时,SQL仍然只运行两次,而不是四次。这是预期的吗?
-看起来像是服务器端的某种优化<代码>我刚刚注意到我的报告生成了两个文件,HTML和Excel,然后它们运行了两次SQL查询。-如果与4个导出器的情况相比,看起来很奇怪。请尝试启用其他日志记录(log4j.properties)。另一种方法是查看源代码您使用的是什么版本的JR?
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
CREATE OR REPLACE PACKAGE body TEST_XBTOP_P_reports
AS
  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  FUNCTION bsr015
    RETURN xbtop_y_bsr015_tab
  AS
    r_tab xbtop_y_bsr015_tab := xbtop_y_bsr015_tab();
    subrepid              CHAR(2);
    subrepname            CHAR(35);
    numof                 NUMBER;
    volume                NUMBER;
    revenue               NUMBER ;
    systimestamp_hostname VARCHAR2(200 CHAR);
  BEGIN
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --