以前搞点存储过程的,热度过了以后都不知道当时为什么用exec sp_excutesql @sql,N'@count int output',@count output
这样的语句了,只记得当时是用exec @sql 解决不了的时候才用到。
是不是有输出参数的就必须用第一种的?

解决方案 »

  1.   

    在存储过程中用 exec sp_excutesql 这样的语句,所执行的程序与存储过程不是同一批处理(甚至不是同一个连接),因此,如果在语句中用到了变量,则要以参数的形式传入传出,否则,在那个批中找不到变量,这儿的@count 就是一个传出参数,在@sql 后面,跟一个N'@count int output' 表示在 @sql 里使用到的变量 @count 要在批中先行定义一下,并且定义为传出参数.
      

  2.   

    原因在这里http://msdn.microsoft.com/zh-cn/library/ms175170(v=sql.105).aspx
      

  3.   

    http://www.cnblogs.com/wanyuan8/archive/2011/11/09/2243483.html
    这才是精髓