当前位置: 代码迷 >> SQL >> oracle sql查询的时分命名要注意
  详细解决方案

oracle sql查询的时分命名要注意

热度:94   发布时间:2016-05-05 14:34:09.0
oracle sql查询的时候命名要注意

写存储过程的时候:

create or replace procedure tt(id in varchar,t_name out varchar) is
begin
select d.t_name into t_name from demo_table d where d.id = id;
end tt;

?

使用java语言调用,出现了如下错误:

Exception in thread "main" java.sql.SQLException: ORA-01422: 实际返回的行数超出请求的行数

仔细查询了许久,没有发现什么错误,id是主键列,不可能出现重复的情况,

在pl sql 中用下面的这条语句测试,

select * from demo_table t where t.id = id;

?

查询并不报错,并且出来的结果是demo_table的所有的信息。

终于发现了问题,原来,在数据库眼里,"t.id =id",两个id是同一个东东,只不过一个是用别名点出来的,一个是原生态的,难怪查询出了多条的信息!

更改了一下id的名称,改为t_id,立刻就ok了!

  相关解决方案