比如有50个表,每个表里面都有字段a我想批量更新50个表中字段a的值,如何写呢?多谢大家

解决方案 »

  1.   

    http://topic.csdn.net/t/20050712/15/4139483.html
      

  2.   

    本帖最后由 htl258 于 2010-07-16 11:07:31 编辑
      

  3.   


    DECLARE @tablename  VARCHAR(100)
    DECLARE Cur CURSOR  
    FOR
        SELECT table.name 
        FROM sysobjects as table join syscolumns as col on table.id = col.id
        WHERE table.xtype = 'u'  and col.name = 'a'
    OPEN  Cur  
    FETCH Cur INTO @tablename  
    WHILE @@Fetch_Status=0
    BEGIN
         Update @tablename  set a = 'value' 
        FETCH Cur INTO @tablename  
    END  
    CLOSE Cur  
    DEALLOCATE Cur  
      

  4.   

    不好意思,应该是DECLARE @tablename  VARCHAR(100)
    DECLARE Cur CURSOR  
    FOR
        SELECT [table].name 
        FROM sysobjects as [table] join syscolumns as col on [table].id = col.id
        WHERE [table].xtype = 'u'  and col.name = 'a'
    OPEN  Cur  
    FETCH Cur INTO @tablename  
    WHILE @@Fetch_Status=0
    BEGIN
         Update @tablename  set a = 'value' 
        FETCH Cur INTO @tablename  
    END  
    CLOSE Cur  
    DEALLOCATE Cur  
      

  5.   

    为什么提示我 必须输入表变量@tablename 呢?
      

  6.   

    1.可以另外建一个表,存储A字段(要求唯一),然后在其上面建个主键,然后在这50个表上加上外键,就可以进行级联更新(on update cascade)
    2.用循环,循环table name 也可以做
      

  7.   

    第一种方式好些,支持随机更改,然后由sql自己去处理