我是用触发器调用下面的procedure的。
  dbms_output.put_line里面的内容都打印出来了,但就是下面一句update却总是修改不成功。
我根据dbms_output.put_line打印出来的log,手工编写update时,是可以执行成功。
例如:
log如下:
2: T00HP017ID=6000   ORG_NAME=1chufaqi  ORG_CODE=54   T00HP003ID=   T00HP004ID=手工编写的update语句如下:
update T00HZ007  set ORG_CODE='54',ORG_NAME='1chufaqi',T00HP003ID='', T00HP004ID=''where T00HP017ID='6000';procedure update_hz007(T00HP017ID in  T00HP017.T00HP017ID%TYPE,
    ORG_CODE in out T00HP017.ORG_CODE%TYPE,
    ORG_NAME in out T00HP017.ORG_NAME%TYPE,
    T00HP003ID in out T00HP017.T00HP003ID%TYPE,
    T00HP004ID in out T00HP017.T00HP004ID%TYPE)
  is
  begin
    dbms_output.put_line('2: T00HP017ID='||T00HP017ID||'  ORG_CODE='||ORG_CODE||'   T00HP003ID='||T00HP003ID||'   T00HP004ID='||T00HP004ID);   
    
    update T00HZ007  set ORG_CODE=ORG_CODE,ORG_NAME=ORG_NAME,T00HP003ID=T00HP003ID, T00HP004ID=T00HP004ID where T00HP017ID=T00HP017ID;
  end update_hz007;

解决方案 »

  1.   

    procedure update_hz007(p_T00HP017ID in T00HP017.T00HP017ID%TYPE,
      p_ORG_CODE in out T00HP017.ORG_CODE%TYPE,
      p_ORG_NAME in out T00HP017.ORG_NAME%TYPE,
      p_T00HP003ID in out T00HP017.T00HP003ID%TYPE,
      p_T00HP004ID in out T00HP017.T00HP004ID%TYPE)
      is
      begin
      dbms_output.put_line('2: T00HP017ID='||p_T00HP017ID||' ORG_CODE='||p_ORG_CODE||' T00HP003ID='||p_T00HP003ID||' T00HP004ID='||p_T00HP004ID);   
        
      update T00HZ007 set ORG_CODE=p_ORG_CODE,ORG_NAME=p_ORG_NAME,T00HP003ID=p_T00HP003ID, T00HP004ID=p_T00HP004ID where T00HP017ID=p_T00HP017ID;
      end update_hz007;
      

  2.   

    入参名和字段名重了
    procedure update_hz007(i_T00HP017ID in T00HP017.T00HP017ID%TYPE,
      i_ORG_CODE in out T00HP017.ORG_CODE%TYPE,
      i_ORG_NAME in out T00HP017.ORG_NAME%TYPE,
      i_T00HP003ID in out T00HP017.T00HP003ID%TYPE,
      i_T00HP004ID in out T00HP017.T00HP004ID%TYPE)
      is
      begin
      dbms_output.put_line('2: T00HP017ID='||i_T00HP017ID||' ORG_CODE='||i_ORG_CODE||' T00HP003ID='||i_T00HP003ID||' T00HP004ID='||i_T00HP004ID);   
        
      update T00HZ007 set ORG_CODE=i_ORG_CODE,ORG_NAME=i_ORG_NAME,T00HP003ID=i_T00HP003ID, T00HP004ID=i_T00HP004ID where T00HP017ID=i_T00HP017ID;
      end update_hz007;
      

  3.   


    --改就不改了 把你的过程的参数名不要跟字段名字一模一样 ,同理过程体中的语句也的改成对应的
    --没有提交
    procedure update_hz007(T00HP017ID in T00HP017.T00HP017ID%TYPE,
      ORG_CODE in out T00HP017.ORG_CODE%TYPE,
      ORG_NAME in out T00HP017.ORG_NAME%TYPE,
      T00HP003ID in out T00HP017.T00HP003ID%TYPE,
      T00HP004ID in out T00HP017.T00HP004ID%TYPE)
      is
      begin
      dbms_output.put_line('2: T00HP017ID='||T00HP017ID||' ORG_CODE='||ORG_CODE||' T00HP003ID='||T00HP003ID||' T00HP004ID='||T00HP004ID);   
        
      update T00HZ007 set ORG_CODE=ORG_CODE,ORG_NAME=ORG_NAME,T00HP003ID=T00HP003ID, T00HP004ID=T00HP004ID where T00HP017ID=T00HP017ID;
     commit; --没有提交
      end update_hz007;