在使用oracle数据库时,对oracle中的外部表的操作只能够进行select操作,不能够进行delete、update,insert into操作。下面分别对在外部表上的dml(除select外)语句进行了测试,以此加深印象。
测试前的准备事项:
1.用sys用户向创建外部表的用户(以scott用户为例)进行授权操作(让该用户有创建directory的权利)。
grant create any directory to scott;
2.让scott用户创建directory目录:
create or replace directory utl_scott_dir as 'c:\utl_scott_dir';
3.在计算机的c盘下创建文件夹utl_scott_dir.
4.在utl_scott_dir文件夹下创建外部文件dept.txt
文件格式如下:
10,ACCOUNTING,NEW YORK
20,RESEARCH,DALLAS
30,SALES,CHICAGO
40,OPERATIONS,BOSTON
注意:文件格式可以和上面的不一致,但如果修改了文件格式,那么在下边的创建外部表时的相应地方也要修改相关信息。
SQL> create table olddept (
2 deptno number,dname char(20),loc char(20))
3 organization external(
4 type oracle_loader
5 default directory utl_scott_dir
6 access parameters
7 (
8 records delimited by newline
9 badfile 'bad_emp'
10 logfile 'log_emp'
11 fields terminated by ','--外部文件字段间的分隔符是','号,如果在外--部文件中修改了字段间的分隔符,那么在此处也应做相应修改。
12 (
13 deptno char,
14 dname char,
15 loc char
16 ))
17 location ('dept.txt'))
18 parallel 5
19 reject limit 200
20 /
表已创建。
已用时间: 00: 00: 00.01
SQL> select * from olddept;
DEPTNO DNAME LOC
---------- -------------------- --------------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
4 OPERATIONS BOSTON
已用时间: 00: 00: 00.37
SQL> delete from olddept;
delete from olddept
*
第 1 行出现错误:
ORA-30657: 操作在外部组织表上不受支持
已用时间: 00: 00: 00.00
SQL>
update olddept set dname='dddd' where deptno=10
*
第 1 行出现错误:
ORA-30657: 操作在外部组织表上不受支持
已用时间: 00: 00: 00.00
SQL> insert into olddept values('20','dddd','beijing');
insert into olddept values('20','dddd','beijing')
*
第 1 行出现错误:
ORA-30657: 操作在外部组织表上不受支持
已用时间: 00: 00: 00.00
测试前的准备事项:
1.用sys用户向创建外部表的用户(以scott用户为例)进行授权操作(让该用户有创建directory的权利)。
grant create any directory to scott;
2.让scott用户创建directory目录:
create or replace directory utl_scott_dir as 'c:\utl_scott_dir';
3.在计算机的c盘下创建文件夹utl_scott_dir.
4.在utl_scott_dir文件夹下创建外部文件dept.txt
文件格式如下:
10,ACCOUNTING,NEW YORK
20,RESEARCH,DALLAS
30,SALES,CHICAGO
40,OPERATIONS,BOSTON
注意:文件格式可以和上面的不一致,但如果修改了文件格式,那么在下边的创建外部表时的相应地方也要修改相关信息。
SQL> create table olddept (
2 deptno number,dname char(20),loc char(20))
3 organization external(
4 type oracle_loader
5 default directory utl_scott_dir
6 access parameters
7 (
8 records delimited by newline
9 badfile 'bad_emp'
10 logfile 'log_emp'
11 fields terminated by ','--外部文件字段间的分隔符是','号,如果在外--部文件中修改了字段间的分隔符,那么在此处也应做相应修改。
12 (
13 deptno char,
14 dname char,
15 loc char
16 ))
17 location ('dept.txt'))
18 parallel 5
19 reject limit 200
20 /
表已创建。
已用时间: 00: 00: 00.01
SQL> select * from olddept;
DEPTNO DNAME LOC
---------- -------------------- --------------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
4 OPERATIONS BOSTON
已用时间: 00: 00: 00.37
SQL> delete from olddept;
delete from olddept
*
第 1 行出现错误:
ORA-30657: 操作在外部组织表上不受支持
已用时间: 00: 00: 00.00
SQL>
update olddept set dname='dddd' where deptno=10
*
第 1 行出现错误:
ORA-30657: 操作在外部组织表上不受支持
已用时间: 00: 00: 00.00
SQL> insert into olddept values('20','dddd','beijing');
insert into olddept values('20','dddd','beijing')
*
第 1 行出现错误:
ORA-30657: 操作在外部组织表上不受支持
已用时间: 00: 00: 00.00