当我运行以下代码时,它会给我以下错误:
ORA-00905:缺少关键字
ORA-06512:第4行
declare
v_file varchar2(100):= 'samplefile.txt';
begin
execute immediate 'create table ext_tab2 (
mprn char(10))
ORGANIZATION EXTERNAL (
TYPE ORACLE_LOADER
DEFAULT DIRECTORY IMPORT
ACCESS PARAMETERS (
RECORDS DELIMITED BY NEWLINE
FIELDS TERMINATED BY '||','||'
(mprn char(10)))
LOCATION ('||v_file||')
)
PARALLEL 5
REJECT LIMIT UNLIMITED';
end;
任何人都能告诉我错误在哪里吗?
答案 0 :(得分:3)
您需要在逗号分隔符值周围包含转义引号:
FIELDS TERMINATED BY '''||','||'''
或稍微简单一点:
FIELDS TERMINATED BY '',''
以及文件名:
LOCATION ('''||v_file||''')
所以放在一起:
declare
v_file varchar2(100):= 'samplefile.txt';
begin
execute immediate 'create table ext_tab2 (
mprn char(10))
ORGANIZATION EXTERNAL (
TYPE ORACLE_LOADER
DEFAULT DIRECTORY IMPORT
ACCESS PARAMETERS (
RECORDS DELIMITED BY NEWLINE
FIELDS TERMINATED BY '''||','||'''
(mprn char(10)))
LOCATION ('''||v_file||''')
) PARALLEL 5 REJECT LIMIT UNLIMITED';
end;
/
anonymous block completed
desc ext_tab2
Name Null Type
---- ---- --------
MPRN CHAR(10)
如果您有动态语句问题,那么显示生成的语句通常很有用(例如使用dbms_output
);像缺失空格这样的简单错误通常更加明显,当它不那么明显时,您可以手动运行语句以获得更具体或有用的错误 - 指向SQL中错误的点,而不是{ {1}}。