PL / SQL函数从Jasper Server Report中调用两次

时间:2017-06-16 09:58:17

标签: oracle plsql jasper-reports jasperserver

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

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

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

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

我的部分报告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"/>
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

我的PL / SQL功能是:

-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
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
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

我运行JasperReports Server Community 6.3和Oracle SE 11.2.0.3.0。

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

谢谢你,亲切的问候

的Pawel

0 个答案:

没有答案