如何从BI发布者报告中调用存储过程



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

您无法从选择语句调用过程。但是您可以在Select语句中使用函数,并且可以从函数调用一个过程。

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

这可以提供一些其他指导:Oracle调用存储的过程Select

您需要在功能中提供一些输出。您可以将它是"成功"或简单的硬编码的内容,但请确保将一个例外从该过程传递给函数,然后从该过程中回到Select语句。

r&D,我找到了解决方案,只需在您的BI报告中创建一个组,然后将代码添加为

DECLARE
type refcursor is REF CURSOR;
xdo_cursor refcursor;
BEGIN
OPEN :xdo_cursor FOR
select 1 from dual;
<<Procedure name>>;
END;

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

例如,这在XML数据定义中的After Report触发中调用了一个名为xref_burst_pkg.AfterReport()的程序。

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

或6i Oracle报告中,您可以在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;

最新更新