create or replace procedure p_emp(p_empno in number(4))
is
       p_ename emp.ename%type;
begin 
       select ename into p_ename from emp where empno=p_empno;
       insert into emp1(ename,empno)values(p_ename,p_empno);
       delete from emp where empno=p_empno;
       update emp1 set hiredate=sysdate where empno=p_empno;
       exception
              when NO_DATA_FOUND 
              then dbms_output.put_line("数据找不到!!!");
end;
执行的时候不抱错,但是左边存储过程的名称处打红叉,显示错误,请问是哪写错了,还是什么原因啊?我是在sql window下执行的。

解决方案 »

  1.   

    create or replace procedure p_emp(p_empno in number) --参数只能声明类型,不能指定长度
    is
      p_ename emp.ename%type;
    begin 
      select ename into p_ename from emp where empno=p_empno;
      insert into emp1(ename,empno)values(p_ename,p_empno);
      delete from emp where empno=p_empno;
      update emp1 set hiredate=sysdate where empno=p_empno;
      exception
      when NO_DATA_FOUND 
      then dbms_output.put_line('数据找不到!!!'); --字符串只能使用单引号
    end;
      

  2.   

    then dbms_output.put_line('数据找不到!!!'); --字符串只能使用单引号
    还真没注意过啊,这次记下了
      

  3.   

    上面的问题已经解决,多谢。
    我是个新手,好多不会的,可以再请教个问题不?
    我想执行这个存储过程,直接输入exec p_emp(7369);提示ORA:00900-无效sql语句。应该怎样调用这个存储过程啊?