本人写了一个存储过程,代码如下:
Create or replace procedure sp_pro10(empNo in number,empName out varchar2) is
begin
select distinct ename into empName from emp where empno = empNo;
end;
然后再调用这个过程
SQL>var ename varchar(50)
SQL>exec sp_pro10(7788,:ename);
结果出现以下的错误:
ORA-01422: 实际返回的行数超出请求的行数、
但我用select disctinct ename from emp where empno = 7788;查出来的记录就只有一条啊,郁闷死了。
Create or replace procedure sp_pro10(empNo in number,empName out varchar2) is
begin
select distinct ename into empName from emp where empno = empNo;
end;
然后再调用这个过程
SQL>var ename varchar(50)
SQL>exec sp_pro10(7788,:ename);
结果出现以下的错误:
ORA-01422: 实际返回的行数超出请求的行数、
但我用select disctinct ename from emp where empno = 7788;查出来的记录就只有一条啊,郁闷死了。
begin
select distinct name into empName from stu where greadeid = empNo;
end;执行过程:
SQL> var ename varchar2(10);
SQL> exec sp_pro10(4,:ename);
PL/SQL procedure successfully completed
ename
---------
Name4没有出现类似情况SQL> exec sp_pro10(1,:ename);ORA-01422: 实际返回的行数超出请求的行数
ORA-06512: 在 "SOC.SP_PRO10", line 3
ORA-06512: 在 line 2查询结果为返回多条记录,所以猜测你应该是返回了多条记录,建议改别的数据
多次进行测试一下。
修改为select distinct ename into empName from emp where empno = empNo and rownum=1;
返回的是多个值,怎样插入到一个变量中呢?