我是按照书上的例题做的存储过程,为什么数据查不出来呢?
存储过程:create or replace procedure emp_proc (empno number)
as
empname varchar2(20);
begin
select ename into empname from emp where empno = empno;
dbms_output.put_line('雇员姓名是:' || empname);
exception
when no_data_found then
dbms_output.put_line('雇员编号未找到');
end emp_proc;
/执行后:
SQL> execute emp_proc(7900);
BEGIN emp_proc(7900); END;*
ERROR at line 1:
ORA-01422: exact fetch returns more than requested number of rows
ORA-06512: at "MICHAEL.EMP_PROC", line 5
ORA-06512: at line 1出现了这个问题,在书上是可以把结果显示出来的,是不是在建存储过程的时候还要授权?......真的是不太明白
请各位高手帮帮我啊!
存储过程:create or replace procedure emp_proc (empno number)
as
empname varchar2(20);
begin
select ename into empname from emp where empno = empno;
dbms_output.put_line('雇员姓名是:' || empname);
exception
when no_data_found then
dbms_output.put_line('雇员编号未找到');
end emp_proc;
/执行后:
SQL> execute emp_proc(7900);
BEGIN emp_proc(7900); END;*
ERROR at line 1:
ORA-01422: exact fetch returns more than requested number of rows
ORA-06512: at "MICHAEL.EMP_PROC", line 5
ORA-06512: at line 1出现了这个问题,在书上是可以把结果显示出来的,是不是在建存储过程的时候还要授权?......真的是不太明白
请各位高手帮帮我啊!
书上的例子都能运行出来的,到了我机器上就不行了,是不是还要在配置一下?>
EMP表下没有多条重复的记录啊
select ename into empname from emp where empno = empno;
建议用法如下:
select ename into empname from emp where empno = empno and rownum<2;
确保返回值唯一,如果要多行返回,可以直接用显示游标来循环输出
这个语句有问题,系统无法区分出empno是变量,而是把它当作字段名处理了。你需要修改过程,把变量empno改名如v_empno。
总结:
我在SQLPLUS里直接用EXECUTE命令执行不可以,显示不出结果来
必须要在前面加上SET SERVEROUTPUT ON 才可以
我在PLSQL里执行EXECUTE命令不可以
要用begin
.......
end 这个语法格式才可以把结果显示出来
我不得不承认我是一个菜鸟!