我有一个存储过程,我想从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;