我正在使用下面的代码使用外部表将数据插入到主表中,但出现以下错误
declare
v_file varchar2(50):= 'abc.txt';
v_badfile varchar2(50) := 'test.bad';
v_logfile varchar2(50) := 'test.log';
begin
execute immediate'create table ext_tab2 (
mprn number,
post_code varchar2(8),
house_no varchar2(8),
market_sector_flag varchar2(1),
ssc varchar2(3),
dcv number )
ORGANIZATION EXTERNAL (
TYPE ORACLE_LOADER
DEFAULT DIRECTORY IMPORT
ACCESS PARAMETERS (
RECORDS DELIMITED BY NEWLINE
LOAD WHEN
(mprn != BLANKS) AND
(post_code != BLANKS) AND
(house_no != BLANKS)
BADFILE IMPORT_PPM:'''||v_badfile||'''
LOGFILE IMPORT_PPM:'''||v_logfile||'''
FIELDS TERMINATED BY '''||','||'''
)
LOCATION ('''||v_file||''')
)
REJECT LIMIT UNLIMITED';
insert into table_1 select * from ext_tab2;
EXECUTE immediate' drop table ext_tab2';
end;
table1 与 ext_tab2 具有相同的列。我收到 ext_tab2 错误 - 表不存在。 任何人都可以帮我解决这个问题吗?
最佳答案
您正在动态创建表,因此当编译 PL/SQL block 时它还不存在。由于编译失败,因此任何语句都不会被执行。
如果必须动态创建表,则还必须动态引用它:
execute immediate 'insert into table_1 select * from ext_tab';
当然,您应该尽可能避免在运行时创建对象。
关于oracle - "table view does not exist"使用外部表时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28714083/