PROCEDURE submit_and_wait_load_request( p_import_request_id IN NUMBER,
p_file_name IN VARCHAR2,
p_error_code OUT NUMBER,
p_error_message OUT VARCHAR2 )
IS
v_conc_request_id NUMBER;
v_phase VARCHAR2(100);
v_status VARCHAR2(100);
v_dev_phase VARCHAR2(100);
v_dev_status VARCHAR2(100);
v_message VARCHAR2(2000);
v_wait_outcome BOOLEAN;
BEGIN
-- 提交载入请求
v_conc_request_id := fnd_request.submit_request
( application => 'CPO',
program => 'QPOORDLOAD',
description => NULL,
start_time => NULL,
sub_request => FALSE,
argument1 => p_import_request_id,
argument2 => p_file_name );
IF v_conc_request_id = 0 THEN
ROLLBACK;
p_error_code := 2;
p_error_message := '提交数据载入的并发请求失败';
RETURN;
END IF;
COMMIT;
-- 等待请求完成
v_wait_outcome := fnd_concurrent.wait_for_request
( request_id => v_conc_request_id,
interval => 10,
phase => v_phase,
status => v_status,
dev_phase => v_dev_phase,
dev_status => v_dev_status,
message => v_message );
IF upper(v_dev_phase) != 'COMPLETE' OR upper(v_dev_status) != 'NORMAL' THEN
delete_temp_data( p_import_request_id => p_import_request_id );
p_error_code := 2;
p_error_message := '载入数据失败,具体请见数据载入请求的日志信息。' ||
chr(10) || '请求标识 ' || to_char(v_conc_request_id);
ELSE
p_error_code := 0;
END IF;
END submit_and_wait_load_request;
p_file_name IN VARCHAR2,
p_error_code OUT NUMBER,
p_error_message OUT VARCHAR2 )
IS
v_conc_request_id NUMBER;
v_phase VARCHAR2(100);
v_status VARCHAR2(100);
v_dev_phase VARCHAR2(100);
v_dev_status VARCHAR2(100);
v_message VARCHAR2(2000);
v_wait_outcome BOOLEAN;
BEGIN
-- 提交载入请求
v_conc_request_id := fnd_request.submit_request
( application => 'CPO',
program => 'QPOORDLOAD',
description => NULL,
start_time => NULL,
sub_request => FALSE,
argument1 => p_import_request_id,
argument2 => p_file_name );
IF v_conc_request_id = 0 THEN
ROLLBACK;
p_error_code := 2;
p_error_message := '提交数据载入的并发请求失败';
RETURN;
END IF;
COMMIT;
-- 等待请求完成
v_wait_outcome := fnd_concurrent.wait_for_request
( request_id => v_conc_request_id,
interval => 10,
phase => v_phase,
status => v_status,
dev_phase => v_dev_phase,
dev_status => v_dev_status,
message => v_message );
IF upper(v_dev_phase) != 'COMPLETE' OR upper(v_dev_status) != 'NORMAL' THEN
delete_temp_data( p_import_request_id => p_import_request_id );
p_error_code := 2;
p_error_message := '载入数据失败,具体请见数据载入请求的日志信息。' ||
chr(10) || '请求标识 ' || to_char(v_conc_request_id);
ELSE
p_error_code := 0;
END IF;
END submit_and_wait_load_request;