Your stored procedure concurrent program must have errbuf and retcode as the first two parameters. Use
- errbuf to return any error messages, and
- retcode to return completion status.
- 0 for success,
- 1 for success with warnings, and
- 2 for error.
Example
/*
This is sample PL/SQL concurrent program submits 10 sub-requests. The sub-requests are submitted one at a time. Each time a sub-request is submitted, the parent exits to the Running/Paused state, so that it does not consume any resources while waiting for the child request, to complete. When the child completes the parent is restarted. */
create or replace procedure parent (errbuf out varchar2,
retcode out number) is
i number;
req_data varchar2(10);
r number;
begin
--
-- Read the value from REQUEST_DATA. If this is the
-- first run of the program, then this value will be
-- null.
-- Otherwise, this will be the value that we passed to
-- SET_REQ_GLOBALS on the previous run.
--
req_data := fnd_conc_global.request_data;
--
-- If this is the first run, we'll set i = 1.
-- Otherwise, we'll set i = request_data + 1, and we'll
-- exit if we're done.
--
if (req_data is not null) then
i := to_number(req_data);
i := i + 1;
if (i < 11 ) then
errbuf := 'Done!';
retcode := 0 ;
return;
end if;
else
i := 1;
end if;
--
-- Submit the child request. The sub_request parameter
-- must be set to 'Y'.
--
r := fnd_request.submit_request('FND', 'CHILD',
'Child ' || to_char(i), NULL,
TRUE, fnd_conc_global.printer);
if r = 0 then
--
-- If request submission failed, exit with error.
--
errbuf := fnd_message.get;
retcode := 2;
else
--
-- Here we set the globals to put the program into the
-- PAUSED status on exit, and to save the state in
-- request_data.
--
fnd_conc_global.set_req_globals(conc_status => 'PAUSED',
request_data => to_char(i));
errbuf := 'Sub-Request submitted!';
retcode := 0 ;
end if;
return;
end;
No comments:
Post a Comment