以下代码中的错误

时间:2015-06-02 10:02:02

标签: sql oracle plsql

我有两个程序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.

0 个答案:

没有答案