我有一个存储过程,我想从BI报表中调用它。我的目的只是执行该过程。我不希望报告中有任何显示输出。只是执行。
答案 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