如何撤消创建小写表名的sqlplus

时间:2014-03-28 19:28:40

标签: sql oracle

太神奇了!多么糟糕的失败可能发生在一个令人敬畏的exe XD

如何创建此错误:

cd "c:\new folder\"
sqlplus ABC/abc@10.0.10.12:1530/ALPHABET
@somefile.sql
;
commit;
exit

在somefile.sql中:

 CREATE TABLE "ABC"."ALL_NORMALIDS_sqlldr" 
 (  
 "OID" NUMBER(6,0), 
 "NODE" VARCHAR2(50), 
 "TRANSTYPE" VARCHAR2(30), 
 "CREATED" DATE, 
 "UPDATED" DATE)

结果是

 Table Created.

之后尝试将内容插入表中后,注意到我甚至无法选择它(在sqlplus或sqldeveloper中)

试过各种各样的事情:

select * from ALL_NORMALIDS_sqlldr;
seoect * from ALL_NORMALIDS_SQLLDR;

 ERROR at line 1:
 ORA-00942: table or view does not exist

但是它在sqldeveloper的表列表中确实存在 也找到了:

 select *
 from all_objects
 where object_type in ('TABLE','VIEW')
 and object_name = 'ALL_NORMALIDS_sqlldr'

无法删除,无法覆盖(通过以前的create table语句)

anywho 后来找到解决方案:

表可以包含小写字母!!! 但他们需要引用!!!

 select * from "ALL_NORMALIDS_sqlldr" 

工作!!!

 -- i decided to open the case for others who faced something like this :)
 -- have a nice day!

1 个答案:

答案 0 :(得分:1)

一个简单的重命名命令应该可以解决问题。这是在Oracle 10G版本上测试的。应该适用于Oracle 10G以上的所有版本。

rename "ALL_NORMALIDS_sqlldr" to ALL_NORMALIDS_SQLLDR