我想更新一个表里的字段,去执行 update mytable set f1=myclss('F1'.'F2')
我执行了一会儿,还没返回执行完毕,我想去查看有没有已经更新了,结果查询结果为空。于是我想 MSSQL里面有没有办法 UPDATE 语句一条一条执行。我这里有一个ORACLE的跪求MSSQL版本的。  function getSJSTEP3_B_comcode return smallint is
    p_mycode varchar2(32);
  begin
  
    for c in (select rowid, CONTRACTNO --  VARCHAR2(32)                           
                from SJSTEP3_B
               where 1 = 1
                 and mycode is null) loop
      select mycode 
        into p_mycode 
        from sjstep1
       where contractno = c.CONTRACTNO
         and rownum <= 1;
      update sjstep3_b set mycode = p_mycode where rowid = c.rowid;      commit;
    
    end loop;
    return 1;
  
  end;请看红色字体部分,这里会更新一笔 然后就提交我想知道的是MSSQL里面有木有。 

解决方案 »

  1.   

    ORACLE函数里面可以更新?貌似MS SQL中不行。你的数据量非常大吗?更新完在查看不就可以了。可以这样declare @i int;set @i=1
    while(@i<(select max(id) from tablename))
    begin
    update tablename set col='a'+ltrim(@i) where id=@i
    set @i=@i+1
    end
      

  2.   

    update mytable set f1=myclss('F1'.'F2')SQL 里有 myclss 这个东东 ? 还是楼主定义的函数。一条一条更新估计更慢吧!那样子不适合SQL。
      

  3.   

    UPDATE在SQL SERVER里面可以理解为一个事务,要么提交,要么回滚
      

  4.   

    myclass()这个是我自己定义的一个函数。 目的是 根据括号里面的两个参数 去查询一个值 返回回来。这个不是重点。
    重点是,如果让MSSQL 更新一行记录后,就提交。 然后 再执行第二条。
    现在的情况是,MSSQL会全部更新完毕之后一次提交。两个方式的最终结果时间相差很多的。
      

  5.   

    现在这个UPDATE 的语句已经执行了32分钟了。依然还是  正在执行查询。
      

  6.   

    update mytable set f1=myclss('F1'.'F2')怎么是.号!update mytable set f1 = dbo.myclss('F1','F2')这样更新吧!  游标更慢了,虽然可以一条一条更新!
      

  7.   

    要数据没问题
    TALBE1
    BIZYEARMONTH,POLICYNO,SCODE,JCODE
    201001      ,2232432 ,     ,
    201001      ,2232433 ,     ,
    201001      ,2232434 ,     ,
    201001      ,2232435 ,     ,
    201001      ,2232436 ,     ,talbe2
    BIZYEARMONTH,POLICYNO,SCODE,JCODE
    201001      ,2232432 , A1  , B2
    201001      ,2232433 , A2  , B3
    201001      ,2232434 , A2  , B5
    201001      ,2232435 , A3  , B9
    201001      ,2232436 , A9  , B1
    看吧,就是把TABLE2里面的数据 写到TABLE1里面 简单吧。
      

  8.   

    恩恩  8楼说的对  update mytable set f1 = dbo.myclss('F1','F2')
    里面是逗号不是点
    谢谢指出。
      

  9.   

    另外回1楼的,不是函数更新,函数只是获取值。
    另外在ORACLE里面这个叫PKG其实我也不是清楚,别人写过的 我参考下修改了
    确实这样执行会快很多。然后可以通过 SELECT COUNT(FLG) from talbe where flg<>''
    来获取现在更新了多少条。
      

  10.   

    有没有人知道 MSSQL里面游标怎么写啊