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

报出必须说明标识符 'UDP_EMP'错误,高手快来啊
建立表如下:
create   table   emp(ename   varchar2(100),sal   number(6,2))
insert   into   emp   values( 'scott ',3000)

建立存储过程如下:
create   or   replace   procedure   upd_emp(v_ename   varchar2,v_sal   number)   is
e_no_row   exception;
begin
    update   emp   set   sal=v_sal   where   ename=v_ename;
    if   sql%notfound   then
          raise   e_no_row;
          end   if;
        exception
        when   e_no_row   then  
                  raise_application_error(-20004, '该订单不存在 ');
end   upd_emp;

存储过程就是完成对表记录的更新操作,如果没有要更新的记录,就返回该订单不存在。

执行存储过程如下:
exec   udp_emp( 's ',111)

然后就报错了,错误如下:
SQL>   exec   udp_emp( 's ',111)

begin   udp_emp( 's ',111);   end;

ORA-06550:   第   1   行,   第   7   列:  
PLS-00201:   必须说明标识符   'UDP_EMP '
ORA-06550:   第   1   行,   第   7   列:  
PL/SQL:   Statement   ignored

请教各位高手,怎么解决这个问题

------解决方案--------------------
楼主我试了一下是可以的,你的pl/sql developer版本是多少啊?还有oracle的版本。
------解决方案--------------------
SQL> exec test_emp( 's ',111);

begin test_emp( 's ',111); end;

ORA-20004: 该订单不存在
ORA-06512: at "TEST_UNI_CARD.TEST_EMP ", line 10
ORA-06512: at line 1
------解决方案--------------------
建议lZ重新书写一下,并加上用户名自动提示写出,这样就可以了,如果手动写出来就会出错,不知道这个区别在哪儿?
------解决方案--------------------
创过程的脚本执行成功了没?

------解决方案--------------------
楼主粗心了。
create or replace procedure upd_emp(v_ename varchar2,v_sal number) is

你过程的名字是upd_emp
而你执行的是udp_emp( 's ',111) 当然报错了。