Oracle 指定別名"A" or"a"造成的問題
今天遇到一個奇怪的問題: 本來打算給一個資料檢查的檢視做一個參數列.
SQL>create table d_data_look_over as select distinct upper(table_name) "table_name" from dw_log where start_date>trunc(sysdate-10);
SQL> table created
SQL> select table_name from d_data_look_over ;
select table_name from d_data_look_over
ORA-00904: "table_name": invalid identifier 報無效的識別符號.
在其他資料庫下進行測試 沒有發現異常
百思不得其解,難道資料庫出了問題? 但是執行下面的語句又是正常的
SQL>select * from d_data_look_over;
SQL>36 rows selected
無意之間仔細檢查建立表的語句,發現別名指定為小寫的"table_name"
SQL>select "table_name" from d_data_look_over;
SQL>36 rows selected
這樣是可以正常查詢的
將這個表刪除之後重新建了一次 並且將引號中的別名改為大寫
SQL>create table d_data_look_over as select distinct upper(table_name) "TABLE_NAME" from dw_log where start_date>trunc(sysdate-10);
SQL> table created
SQL> select table_name from d_data_look_over;
SQL>36 rows selected
可以正常查詢沒有問題.
end;
ps: 有時候字元問題確實能對初學者造成很大的困惑,昨天一個客戶在QQ上說他寫的一個儲存過程無論如何也無法編譯成功,於是我讓他把指令碼傳過來,仔細檢視之後沒有發現問題,語句也完全是正常的,但是一直提示execute immediate這一行有問題,無意之間將這一行前面的空格刪除之後 居然編譯成功了 compiled successfully.之後考慮報錯之由於前面的空格是中文全形空格造成的,刪除了這個全形空格 自然也就不再報錯了. 經過測試發現果然如此,中文輸入法下也是正常的 但是切換為全形之後輸入的空格就被認為是字元,從而無法成功編譯.
後記:發用這個方法可以實現使用Oracle的保留字作為欄位
例如:
SQL>create table zyp (LEVEL number(1),
SQL> COLUMN varchar2(10));
ORA-00904:無效的識別符號.
SQL>create table zyp ("LEVEL" number(1),
SQL> "COLUMN" varchar2(10));
Table created
但是要注意在檢視的時候 需要加上"LEVEL" 必須為大寫,否則會報錯.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12216142/viewspace-524649/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- recyclebin造成的問題分析
- MySQL DELETE 表別名問題MySqldelete
- 解決實名軟體造成的 XP系統崩潰問題(轉)
- delete 語句帶別名問題.delete
- mysql 字符集造成的效能問題MySql
- ORACLE資料檔名導致的奇怪問題Oracle
- Django-ORM 之指定欄位別名DjangoORM
- Dynamic Parameters造成的linked server效能問題Server
- Oracle資源正忙,要求指定NOWAIT——Oracle解鎖問題OracleAI
- 【ERROR】儲存鏈路問題造成oracle錯誤,ora-600[4193] 問題處理ErrorOracle
- win下oracle監聽日誌過大造成的連線超時問題Oracle
- 歸檔目錄空間不足造成的問題
- FrameLayout裡有CardView造成的顯示順序問題View
- SGA設定過大造成的系統效能問題
- SQL*Net more data to client 等待事件造成的效能問題SQLclient事件
- oracle資料庫名和例項名的區別Oracle資料庫
- Oracle日期型別操作幾個問題Oracle型別
- Oracle修改主機名問題解決案例一則Oracle
- Oracle獲取所有表名資訊和獲取指定表名欄位資訊Oracle
- 修改計算機名後導致Oracle無法訪問的問題修復計算機Oracle
- Java解決遞迴造成的堆疊溢位問題Java遞迴
- 使用git修復線上指定版本的問題Git
- chatGPT問答之 Webpack 5 多入口打包如何指定打包檔名規定的檔名ChatGPTWeb
- Excel下載的檔名問題Excel
- 關於 maatwebsite/excel 匯出不能識別中文檔名稱的問題WebExcel
- Oracle - 資料庫名、例項名、服務名、ORACLE_SID 的說明和區別Oracle資料庫
- 使用別名訪問MSSQL ExpressSQLExpress
- Oracle日期型別操作幾個問題(二)Oracle型別
- AIX 上VMO設定不當造成的資源不足的“問題”AI
- Vue 重複使用同一元件造成的問題Vue元件
- Python原始檔一行字元過長造成的問題Python字元
- 【故障公告】取代 memcached 的 redis 出現問題造成網站故障Redis網站
- 資料檔案offline後unusable索引造成的問題索引
- 資料庫連線沒有釋放造成的奇怪問題資料庫
- 關於Ibatis 轉換 oracle date型別的問題BATOracle型別
- kafka指定key進行分割槽遇到的問題Kafka
- 問題No property 屬性名 found for type 類名
- v-if與v-show造成部分元素丟失的問題——v-if複用元素問題