我有两个程序PROC1和PROC2 PROC2使用外部表概念将数据加载到表中。 在服务器
中生成BAD,LOG和DISCARD文件PROC1正在调用PROC2,然后再次返回PROC1,检查是否在服务器中生成了BAD / LOG / DISCARD文件。
create or replace PROC1
as
v_result_bad number ;
v_result_dsc number ;
v_directory_name varchar2(50) := 'xyz';
v_badfile varchar2(50) := 'ABC.bad';
v_discard varchar2(50) := 'ABC.dsc';
begin
----call the procedure to load data and generate bad/log/discard file
PROC2('abc.txt');
---------check for bad and discard file existence
v_result_bad := FILE_EXISTS(v_directory_name,v_badfile);
dbms_output.put_line(v_result_bad);
v_result_dsc := FILE_EXISTS(v_directory_name,v_discard);
dbms_output.put_line(v_result_dsc);
end PROC1;
----------------------------
create or replace PROC2 (file_name in varchar2)as
v_discard varchar2(100):= 'ABC.dsc';
v_badfile varchar2(100):= 'ABC.bad';
v_logfile varchar2(100):= 'ABC.log';
begin
execute immediate 'create table ext_tab_aci(
empid number,
emp_name varchar2(50),
dept varchar2(50)
)
ORGANIZATION EXTERNAL (
TYPE ORACLE_LOADER
DEFAULT DIRECTORY xyz
ACCESS PARAMETERS (
RECORDS DELIMITED BY NEWLINE
discardfile IMPORT_GDE:'''||v_discard||'''
BADFILE IMPORT_GDE:'''||v_badfile||'''
LOGFILE IMPORT_GDE:'''||v_logfile||'''
FIELDS TERMINATED BY '''||','||''' OPTIONALLY ENCLOSED BY '''||'"'||'''
(empid,
emp_name,
dept
)
)
LOCATION ('''||file_name||''')
)
REJECT LIMIT UNLIMITED;
end PROC2;
在PROC2中加载数据后,当它返回到PROC1时,它会检查是否生成了错误/丢弃文件。
“v_result_bad和v_result_dsc”的值变为0,即当它返回PROC1直到那时没有生成BAD / DISCARD。 proc1检查文件是否存在后生成这些文件 所以任何人都可以告诉我需要做什么,以便v_result_bad和v_result_bad值为1.我需要在proc1中做出哪些改动
当文件存在时,“v_result_bad和v_result_bad”变量将等于1,这些变量应返回1.