以上情况除了使用SQL SERVER本身的存储过程还有什么好的办法实现啊.

解决方案 »

  1.   

    哦,上面的存储过程发错了,应该是:
    CREATE PROCEDURE ts_gx  AS 
    declare @sjhrk char(12) , @sjhrka varchar (12) ,  @lr varchar (200)
    declare ts_gx cursor
    for 
    select   SJHRK from ts   
    open ts_gx
    fetch next from ts_gx  into @sjhrk
    while @@fetch_status=0
    begin
    select @sjhrk=sjhrk  from tsg_tsgc where sjhrk=@sjhrk 
    select @lr=title from tsg_tsgc where sjhrk=@sjhrk
    select @sjhrka=sjhrk from ts  where sjhrk=@sjhrk
    if @sjhrk=@sjhrka
    begin
    --select * from ts
    update ts  set 正标题=@lr where sjhrk=@sjhrka
    end
    fetch next from  ts_gx  into  @sjhrk
    end
    close ts_gx
    deallocate ts_gx
    GO
      

  2.   

    好像不需要使用游标吧?只是update 的话看这个:update a set 正标题 = title 
    from ts a 
    join ts_gx b on a.sjhrk=b.sjhrk
    -------
    不知是不是你要表示的意思:
    即根据ts_gx表的title 列更新 ts 表的 正标题 列
      

  3.   

    update a set 正标题=b.title from ts a,tsg_tsgc b where a.sjhrk=b.sjhrk
      

  4.   

    ts_gx這個表不能掉吧。Update
    ts
    set 
    正标题 = tsg_tsgc.title
    From
    ts
    Inner Join
    tsg_tsgc
    On ts.sjhrk = tsg_tsgc.sjhrk
    Inner Join
    ts_gx
    On ts_gx.sjhrk = tsg_tsgc.sjhrkOrUpdate
    ts
    set 
    正标题 = tsg_tsgc.title
    From
    ts, tsg_tsgc, ts_gx
    Where ts.sjhrk = tsg_tsgc.sjhrk
    And ts_gx.sjhrk = tsg_tsgc.sjhrk
      

  5.   

    看存儲過程,似乎用上了這個表。以下是用別名的方式
    Update
    ts
    set 
    正标题 = tsg_tsgc.title
    From
    ts A
    Inner Join
    tsg_tsgc B
    On A.sjhrk = B.sjhrk
    Inner Join
    ts_gx C
    On B.sjhrk = C.sjhrk或者Update
    ts
    set 
    正标题 = tsg_tsgc.title
    From
    ts A, tsg_tsgc B, ts_gx C
    Where A.sjhrk = B.sjhrk
    And B.sjhrk = C.sjhrk
      

  6.   

    现在问题是:只能更一部分数据,有一部份无法更,请各位高人指点一下
    --------
    可能加了ts_gx 這個表的原因。試試xiaoku(野蛮人(^v^)) 和红尘的方法
      

  7.   

    update a set 正标题=b.title from ts a,tsg_tsgc b where a.sjhrk=b.sjhrk