create table tb_cleint_qylx
(
 id int not null,
 qylx_id varchar2(10)  primary key,
 qylx_lxmc varchar2(50),
 qylx_bz varchar2(50)
);
 
create or replace procedure pro_qylx_update
 (id varchar2,
  qylx varchar2,
  bz varchar2,
  result out int
 )
 as
  num int;
 begin
    select count(*) into num from tb_client_qylx where upper(qylx_id)=upper(id);
  if(num>0) then
    update tb_client_qylx set qylx_lxmc=qylx,qylx_bz=bz where upper(qylx_id)=upper(id);
    if(sql%rowcount>0) then
       result:=1;
    else
       result:=0;
    end if;
   else
    result:=0;
  end if;
 end pro_qylx_update;
执行存储过程,记录没有被修改!
请大家帮助帮助!

解决方案 »

  1.   

    恐怕你这个是不能修改成功了。
    除非你自动Commit
      

  2.   

    此问题我已经解决。
    commit也不能修改,
    后来,我改了存存过程,如
    create or replace procedure pro_qylx_update 
     (v_id varchar2, 
      qylx varchar2, 
      bz varchar2, 
      result out int 
     ) 
     as 
      num int; 
     begin 
        select count(*) into num from tb_client_qylx where upper(qylx_id)=upper(v_id); 
      if(num>0) then 
        update tb_client_qylx set qylx_lxmc=qylx,qylx_bz=bz where upper(qylx_id)=upper(v_id); 
        if(sql%rowcount>0) then 
           result:=1; 
           commit;
        else 
           result:=0; 
        end if; 
       else 
        result:=0; 
      end if; 
     end pro_qylx_update; 我认为是存储过程中的id有问题,可以与表的id有冲突。
    修改以后就可以了!