ORA-01790 錯誤處理

pingley發表於2012-04-01
ORA-01790 錯誤處理
今天在練手的時候出現了一個ORA-01790 的錯誤,決定把他寫下來保留起來。
先來建立兩張測試用的簡單的表。
SQL> create table test01 (id number(3),name varchar2(12));
Table created.
SQL> create table test02 (id varchar2(6),name varchar2(12));
Table created.
分別插入一條記錄用來測試。
SQL> insert into test01 values (100,'baidu');
1 row created.
SQL> insert into test02 values ('101','sina');
1 row created.
SQL> commit;
Commit complete.
執行帶union 或者union all 的語句。
SQL> select id,name from test01
  2  union 
  3  select id,name from test02;
select id,name from test01
       *
ERROR at line 1:
ORA-01790: expression must have same datatype as corresponding expression
出現上述錯誤的原因是因為 test01 中的id 列的定義是number,而test02 中id 列的定義
是varchar2。所以在union 或者union all 的時候造成了資料型別不一致。出現上述錯誤應該根據不同的情況使用不同型別轉換函式,比如to_char,to_number,to_date
改寫上面的語句:
SQL> select to_char(id) as id,name from test01
  2  union 
  3  select id,name from test02;
ID                                       NAME
---------------------------------------- ------------
100                                      baidu
101                                      sina

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26110315/viewspace-720134/,如需轉載,請註明出處,否則將追究法律責任。

相關文章