ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ORA-01790 错误处理

ORA-01790 错误处理

原创 Linux操作系统 作者:pingley 时间:2012-04-01 11:29:17 0 删除 编辑
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/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 聚集函数之rollup
请登录后发表评论 登录
全部评论

注册时间:2012-02-06

  • 博文量
    169
  • 访问量
    715348