你没有commit.
CREATE OR REPLACE PROCEDURE "UPDATE_RWB_SFWRW_NULL" (xh IN NUMBER)
AS
BEGIN
   UPDATE t_rwb
      SET t_rwb.sfwrw = 0
    WHERE t_rwb.xh = xh;
   commit; --!!!
END;

解决方案 »

  1.   

    CREATE OR REPLACE PROCEDURE "UPDATE_RWB_SFWRW_NULL" (xh IN NUMBER)
    AS
    BEGIN
       UPDATE t_rwb
          SET sfwrw = 0
        WHERE t_rwb.xh = xh;
    END update_rwb_sfwrw_null;
    执行之后t_rwb.sfwrw的值全部变成了0。
    并没有只更新XH相同的记录。好象参数没起作用。
      

  2.   

    哈哈,try:
    CREATE OR REPLACE PROCEDURE "UPDATE_RWB_SFWRW_NULL" (ixh IN NUMBER)
    AS
    BEGIN
       UPDATE t_rwb
          SET sfwrw = 0
        WHERE xh = ixh;
    END update_rwb_sfwrw_null;
      

  3.   

    按lianhg(lianhg)的该就可以了。可是我以前的系统用的全是XH。有没有什么办法指明WHERE t_rwb.xh = xh里的xh是一个输入参数。比如INTERBASE里用:XH表示参数。
      

  4.   

    你的脚本里还应注意一个问题:
    输入参数是否为空的判断。如果为空的话update不会更新任何行,并且有异常。
    应为
    CREATE OR REPLACE PROCEDURE UPDATE_RWB_SFWRW_NULL (xh IN NUMBER)
    AS
    BEGIN
       if xh is null then
          return ;
       end if;
       UPDATE t_rwb
          SET sfwrw = 0
        WHERE t_rwb.xh = xh;
    END update_rwb_sfwrw_null;