Sql 以下代码使用外部表时出错

Sql 以下代码使用外部表时出错,sql,oracle,plsql,Sql,Oracle,Plsql,当我运行下面的代码时,它给出了以下错误: ORA-00905:缺少关键字 ORA-06512:在第4行 有人能告诉我错误在哪里吗?您需要在逗号分隔符值周围包含转义引号: FIELDS TERMINATED BY '''||','||''' 或者更简单一点: FIELDS TERMINATED BY '','' 以及围绕文件名: LOCATION ('''||v_file||''') 因此,综合起来: declare v_file varchar2(100):= 'samplefile.tx

当我运行下面的代码时,它给出了以下错误:

ORA-00905:缺少关键字
ORA-06512:在第4行


有人能告诉我错误在哪里吗?

您需要在逗号分隔符值周围包含转义引号:

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_输出
)通常很有用;像缺少空格这样的简单错误通常更为明显,当不太明显时,您可以手动运行语句以获得更具体或更有用的错误-指向SQL中的错误点,而不是
executeimmediate

我还需要一个帮助。如果我想在上面的代码中给出filepath,以便在特定路径中生成日志和坏文件。我该如何做。@y2j-with。有一个例子,我在代码中的两个位置都将MPRN的数据类型更改为整数,现在“samplefile.txt”包含abcd、efgh、ikhgjk等数据。。。。之后,当我运行上述代码时,数据被插入为11234113344322444。你能告诉我为什么会这样吗????
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)