2015-05-26 59 views
0

這需要在sql plus中完成。在sqlplus中重命名名爲TYPE,LEVEL的列

嗨,我掙扎在我的表重命名兩列。它們被命名爲「TYPE」和「LEVEL」。

這需要在SQL加上也不例外要做。

下無法正常工作(在SQL Developer中壽的作品):

alter table client rename column level to clevel; 
alter table client rename column "level" to clevel; 
+1

「」level「與」LEVEL「不相同。詳情請參見本手冊:在SQL http://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements008.htm#SQLRF00223,我100%確定的最後一條語句做**不**工作開發者(其實它不會在任何SQL客戶端工作,因爲它是無效的SQL - 按照手冊中的記錄) –

回答

2

LEVEL是Oracle 關鍵字,雖然沒有保留。如果你想使用它作爲一個對象的名字,那麼你需要使用雙引號每當你指的是對象引號的標識符表示對象的名稱。

SQL> SELECT keyword, reserved FROM V$RESERVED_WORDS WHERE keyword='LEVEL'; 

KEYWORD      R 
------------------------------ - 
LEVEL       N 

SQL> 

也就是說,如果你使用關鍵字級別帶引號的標識符的原因,它會拋出一個錯誤:

SQL> CREATE TABLE t(level NUMBER); 
CREATE TABLE t(level NUMBER) 
       * 
ERROR at line 1: 
ORA-00904: : invalid identifier 

現在,每個文件約Database Object Names and Qualifiers,如果您使用創建對象雙引號,它變爲區分大小寫並且必須始終以與引用對象相同的方式使用。

例如,

SQL> CREATE TABLE t1("level" NUMBER); 

Table created. 

SQL> 
SQL> ALTER TABLE t1 RENAME COLUMN "level" to clevel; 

Table altered. 

SQL> 
SQL> CREATE TABLE t2("LEVEL" NUMBER); 

Table created. 

SQL> 
SQL> ALTER TABLE t2 RENAME COLUMN "LEVEL" to clevel; 

Table altered. 

SQL> 

最好不要使用關鍵字,並給予適當的命名約定。

SQL> CREATE TABLE t(clevel NUMBER); 

Table created. 

SQL> 
+0

這標誌着作爲答案,因爲這是問題的一個偉大的解釋,感謝您的拉利特·庫馬爾·乙 – Palcente

+0

@Palcente你歡迎! –

0

您也可以在sqlplus執行SQL腳本。只需保存你的聲明文件,然後使用以下命令:

@{file-path} 

參見本link