日期:2014-05-17  浏览次数:20399 次

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

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