这里我们假设sql1;sql2都是标准的sql语句情况一:
在sql编辑器中
sql1
sql2
-----按f5执行的话,这样是可以正确执行的,这个应该谁都知道了。。哈哈情况二:
在.net中
SqlComm.CommandText = sql1+";"+sql2;
SqlComm.ExecuteNonQuery();---这样也是可以执行的。。问题是
SqlComm.CommandText = sql1+";go;"+sql2;
SqlComm.ExecuteNonQuery();---这样就不行了,因为在sql编辑器中必须如下形式才可以正确执行
sql1
go
sql2--也就是说go必须是单独的一行我试了一种解决方案
SqlComm.CommandText = sql1+"\ngo\n"+sql2;我试着加上换行符,这样还是不行。。真的急啊
请高人出山指点小弟一下,谢啦

解决方案 »

  1.   

    “go”不是T-SQL命令。所谓“sql编辑器”(例如查询分析器)是根据单行的go把命令拆分成不同的批处理分开发送给数据库系统的,不是合并成一个。如果早知道这个道理,你就不会钻进牛角尖里了。
      

  2.   

    go不是标准Sql命令,不能在应用程序中添加,用分号就可以了
    如果想实现同样的功能,也可以使用存储过程
      

  3.   

    加分号应该是可以执行的
    分号表示一句结束.问题是你的SqlCommand用的对不对
      

  4.   

    变量、事务等都可以跨批处理命令,例如你可以写:SqlComm.CommandText = "declare @a int begin trans "+sql1;
    SqlComm.ExecuteNonQuery();
    SqlComm.CommandText = sql2+" commit trans";  //还可以在里边使用@a变量
    SqlComm.ExecuteNonQuery();这都是可以的,后一个批命令只要是在同一个数据库会话,环境信息就是连续的。
      

  5.   

    谢谢楼上的兄弟。。不过你们可以认真看一下我的贴子
    http://community.csdn.net/Expert/TopicView3.asp?id=5565393
    有时候是一定要先执行go的
      

  6.   

    当你看到你在查询分析器中的go的时,使用ADO.NET就要把go前面的东西作为一个批命令立刻提交,后边的再另行提交。这个编程方法是与“go”完全对应、完全等价的做法,没有任何问题。例如假设你在sql1中创建了一个存储过程,那么你需要如此来达到查询分析器上的go指令的目的。
      

  7.   

    谢谢楼上的兄弟。。不过你们可以认真看一下我的贴子
    http://community.csdn.net/Expert/TopicView3.asp?id=5565393
    有时候是一定要先执行go的