遇到客戶使用SQL Server創建一個View
使用 Select * From View@DBLink時可以正常查詢
但是指定欄位名稱時
就會報錯ORA-00904 invalid column name 無效的ID
欄位的名稱是TAX_RATE跟TAX_RULE,應該不是保留字(Reserved Word)
使用PL SQL Developer查詢時發現這兩個欄位變成小寫(View裡是大寫)
於是死馬當活馬醫
把SQL Server創建View的語法,指定欄位為"TAX_RATE"跟"TAX_RULE"
在Oracle環境下就可以正常查詢了
關於Column在Oracle是有限制的,條件如下
Action Enter a valid column name. A valid column name must begin with a letter, be less than or equal to 30 characters, and consist of only alphanumeric characters and the special characters $, _, and #. If it contains other characters, it must be enclosed in double quotation marks. It may not be a reserved Word.
所以Create Table時如果有用到關鍵字需要用雙引號標起來,不然會報錯
create table t
( "USER" VARCHAR2(10) )
查詢的時候也有影響
SQL> show user
User is "phoenix"
SQL> insert into t values('abc');
1 row inserted
SQL> select * from t;
USER
----------
abc
SQL> select user from t;
USER
------------------------------
PHOENIX
SQL> select user,"USER" from t;
USER USER
------------------------------ ----------
PHOENIX abc
另外Oracle傾向於將Column字母轉換爲大寫字母,SQL Server則對大小寫更加敏感。
這就是最有可能造成ORA-00904 invalid column name的原因。
其他狀況可參考 http://tc.wangchao.net.cn/bbs/detail_1775447.html
訂閱:
張貼留言 (Atom)
-
以下來源網址:http://blog.csdn.net/papaya14/article/details/7638428 -----------(以下僅簡體轉正體,未更動內容一絲分毫) Form的Trigger的優先順序是從item,到block,到form級別,如果另外設...
-
屏東萬金天主堂 屏東縣萬巒鄉萬金村萬興路24號 訂房專線:(08)7830955 聖堂電話:(08)7832005 潘世華先生 網址:http://www.catholic.org.tw/bankin/bankim/center.htm http...
-
遇到客戶使用SQL Server創建一個View 使用 Select * From View@DBLink時可以正常查詢 但是指定欄位名稱時 就會報錯ORA-00904 invalid column name 無效的ID 欄位的名稱是TAX_RATE跟TAX_RULE,...
沒有留言:
張貼留言