比如 STRING QSTR1="UPDATE TB1 SET A='1' WHERE B='1'";
     STRING QSTR2="UPDATE TB2 SET C='2' WHERE D='2'";
这分别是2个更新的SQL语句 现在我想用一个STRING 实现同时更新TB1与TB2,该怎么写?
     STRING QSTR="UPDATE TB1 SET A='1' WHERE B='1';UPDATE TB2 SET C='2' WHERE D='2'";可以么?

解决方案 »

  1.   

    drop table TB1
    create  table TB1
    (
    A  varchar(20),
    B  varchar(20)
    )
    drop table TB2
    create table TB2
    (
    C  varchar(20),
    D  varchar(20)
    )declare @string varchar(4000)
    set  @string='update TB1  SET A=''1'' WHERE B=''1'''
    set  @string=@string+'  '
    set  @string=@string+'UPDATE TB2 SET C=''2'' WHERE D=''2'''
    exec(@string)
      

  2.   

    1. 一条SQL语句不能同时更新两个表
    2. 可以向DBMS提交一个批处理,所以你的想法可以实现
      

  3.   

    如果是sql 2005,使用公共表达式cte!
      

  4.   

    CREATE proc [Del]
    as 
    begin tran
     UPDATE TB1 SET A='1' WHERE B='1'
    if @@error <> 0
     begin 
    rollback tran
    return
     end
     UPDATE TB2 SET C='2' WHERE D='2'
     if @@error <> 0
     begin
    rollback tran
    return
     end
    commit tran