印象中,ORACLE的Table Name, Column Name都是不分大小寫的。不過今天我摔了第二次,決心把這個Tip寫下來...

建Oracle Table,大部分我會徒手寫CREATE TABLE Script,偶爾偷懶會用Aqua Data Studio。今天用想驗證Transaction,於是用Aqua Data Studio的管理UI建了一個Table: Jeffrey。資料表建出來了,UI上看得到,但SELECT * FROM Jeffrey卻一直得到ORA-00942: table or view does not exist的訊息。

印象中之前似乎遇過一次,但原因、解法完全不記得了。求救同事,她檢查Table Create Script看到以下寫法:
CREATE TABLE "Jeffrey"
(
  "EmpNo"  NUMBER(3)                            NOT NULL,
  "Name"   VARCHAR2(16 BYTE)                    NOT NULL
)

這下子我全都想起來了,原來使用Aqua Data Studio建立資料表時,會忠實地保留使用者輸入的大小寫,等於在下指令時,用雙引號包住Table Name, Column Name。一般指令中,未包雙引號的名稱則會一律轉成大寫,所以SELECT * FROM Jeffrey其實會去找名為"JEFFREY"的資料表,因而擦身而過。

這問題以前遇過一次,偷懶沒記下來的結果是很久之後又花了時間摸索第二次(雖然這次有貴人相助,很快得到答案,但還是花了時間),That's why you see this post.


Comments

Be the first to post a comment

Post a comment