写存储过程的时候:
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;
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了!