if sql%found then起不了作用的,因为如果没有找到数据会触发DATA_NOT_FOUND异常,这种情况SELECT之后的语句将不会被执行

解决方案 »

  1.   

    存储过程里的问题一楼已经说了,调用的改成这样:
    declare 
    num number;
    name varchar(10);
    begin
    num:=&部门编号;
    name:=&姓名;
    find_emp(num,name);
    end;
    /
      

  2.   

    create or replace procedure find_emp(emp_no  number,emp_name  varchar2) is
    e_mpname varchar2(20);
    begin
    select ename into e_mpname 
    from scott.emp
    where empno=emp_no and
    substr(ename,1,1)=substr(emp_name,1,1);
    dbms_output.put_line('此员工姓名为:'||e_mpname);
    exception
    when no_data_found then
    dbms_output.put_line('此员工不存在');
    end;
    end find_emp;