日期:2014-05-17  浏览次数:20809 次

存储过程问题,请高手看看是什么情况?
有这么一个练习题:
创建存储过程,输入员工薪水范围,返回员工工号、姓名、薪水结果集,结果集按员工薪水升序排列?
create or replace 
procedure pro_emp(v_sal1 number,v_sal2 number)
as 
v_id number;
v_name varchar2(30);
v_salary number;
cursor cur_emp is
select e.empno,e.ename,e.sal from emp e where e.sal between v_sal1 and v_sal2 order by e.sal;
begin
open cur_emp;
loop
fetch cur_emp into v_id, v_salary,v_name;
dbms_output.put_line(v_id||' '||v_salary||' '||v_name);
exit when cur_emp %notfound;
end loop;
end;


创建编译成功后,当输入员工薪水范围不存在的时,调用存储成功;
call pro_emp (100,700) 成功。

但是当输入员工薪水范围存在时,存储就出错了;错误如下
在行 1 上开始执行命令时出错:
call pro_emp(100,800)
错误报告:
SQL 错误: ORA-06502: PL/SQL: 数字或值错误 : character to number conversion error
ORA-06512: 在 "SCOTT.PRO_EMP", line 11
06502. 00000 -  "PL/SQL: numeric or value error%s"
*Cause:    
*Action:

请高手看看是什么情况?

------解决方案--------------------
select e.empno,e.ename,e.sal from emp  

fetch cur_emp into v_id, v_salary,v_name;

列名顺序有问题