create table USERINFO2
(
  USER_ID   CHAR(32) not null,
  USER_CODE VARCHAR2(32) not null,
  PASSWORD  CHAR(32) not null,
  USER_NAME VARCHAR2(50) not null
)insert into userinfo2 values('001','aaa','555','ycyc');
insert into userinfo2 values('002','bbb','666','iuiu');
insert into userinfo2 values('003','ccc','777','lolo');
insert into userinfo2 values('004','ddd','888','lyly');
insert into userinfo2 values('005','eee','999','lili');
insert into userinfo2 values('006','fff','1010','hyhy');
select * from userinfo
create or replace procedure updateName
(userId in varchar2)
as
  begin
      update userinfo2 set user_name='xuye' where user_id = userId;
      
  end;
  
  
  exceute updateName('001');
/*报错:ora-00933:sql命令未正确结束
  请问这是什么问题?*/

解决方案 »

  1.   

    select * from userinfo  后面没有加 ;
      

  2.   

    toad 中测试begin
    updateName('001');
    end;--
    (userId in varchar2)
      USER_ID   CHAR(32) not null,
    这两个类型不一样,你的更新不会执行
      

  3.   

    icedut(冰-装修终于结束了) 
    说的很有道理
    我测试了没有错误,。不过没有执行更新操作
    类型不匹配的问题
      

  4.   

    create or replace procedure updateName
    (userId in char)
    as
      begin
          update userinfo2 set user_name='xuye' where user_id = userId;
          
      end;
    这样在试一下
      

  5.   

    http://community.csdn.net/Expert/topic/5718/5718821.xml?temp=.9527857