如何从BI Publisher报表中调用存储过程?

时间:2019-05-13 05:20:54

标签: sql plsql bi-publisher

我有一个存储过程,我想从BI报表中调用它。我的目的只是执行该过程。我不希望报告中有任何显示输出。只是执行。

3 个答案:

答案 0 :(得分:0)

您不能从select语句调用过程。但是您可以在select语句中使用函数,也可以从函数中调用过程。

尝试创建一个调用该过程的函数。然后在您的BI Publisher select语句之一中使用该功能。

这可以提供一些其他指导: oracle call stored procedure inside select

您需要在函数中提供一些输出。您可以使它成为“成功”或简单的硬编码,但是请确保将异常从过程传递到函数,然后从该异常传递回select语句。

答案 1 :(得分:0)

在数据定义中,您可以在报表触发对象之前或之后调用过程。

例如,它在xml数据定义中的after report触发器中调用一个名为xxcb_cixref_burst_pkg.AfterReport()的程序。

<dataTrigger name="afterReport" source="xxcb_cixref_burst_pkg.AfterReport()"/> 

或者例如,在6i Oracle Report中,您可以在after report触发器中添加类似这样的内容以调用突发程序:

function AfterReport return boolean is
 req_id     number;
begin

req_id := FND_REQUEST.SUBMIT_REQUEST ('XDO',
'XDOBURSTREP',
'',
'',
FALSE,
'Y',
fnd_global.conc_request_id,
'Y',
chr(0),'', '', '', '', '', '',
'', '', '', '', '', '', '', '', '', '',
'', '', '', '', '', '', '', '', '', '',
'', '', '', '', '', '', '', '', '', '',
'', '', '', '', '', '', '', '', '', '',
'', '', '', '', '', '', '', '', '', '',
'', '', '', '', '', '', '', '', '', '',
'', '', '', '', '', '', '', '', '', '',
'', '', '', '', '', '', '', '', '', '',
'', '', '', '', '', '', '', '', '', '');

if req_id = 0 then
    srw.message(100,'Failed to submit bursting program');
end if;

SRW.USER_EXIT('FND SRWEXIT');
return (TRUE);
end;

答案 2 :(得分:0)

经过一些研发,我找到了解决方案,只需在您的BI报告中创建一个组并将代码添加为

UNION ALL