2014-03-28 53 views
-1

這太神奇了!如何洙多失敗可能發生在一個真棒EXE XD如何撤消sqlplus創建的小寫表名

如何創建此錯誤:

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

結果是

Table Created. 

cd "c:\new folder\" 
sqlplus ABC/[email protected]:1530/ALPHABET 
@somefile.sql 
; 
commit; 
exit 

的somefile.sql內

後來試圖插入表中的東西后,發現我甚至不能選擇它(在sqlplus或sqldeveloper中)

試過各種:

select * from ALL_NORMALIDS_sqlldr; 
seoect * from ALL_NORMALIDS_SQLLDR; 

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

,但它並apear的SQLDeveloper :)
的表列表中還發現,有:

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

無法刪除,不能覆蓋(由以前的創建表語句)

anywho 後來發現解決方案:

表格可以包含小寫字母! 但他們需要引用!

select * from "ALL_NORMALIDS_sqlldr" 

作品!!!

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

這在Oracle中是非常標準的行爲。由於您使用雙引號「」「創建了表,因此您現在需要在SELECT語句中使用引號。列也是如此。 – abhi

+0

這就是SQL標準要求帶引號的標識符工作的方式,並且在Oracle手冊中有詳細記錄:http://docs.oracle.com/cd/E11882_01/server.112/e26088/sql_elements008.htm#i27561 –

回答

1

一個簡單的重命名命令應該做的伎倆。這在Oracle 10G版本上進行了測試。應該在Oracle 10G以上的所有版本中工作。

rename "ALL_NORMALIDS_sqlldr" to ALL_NORMALIDS_SQLLDR