LouisXIV(夜游神) 请进来接分,上次没能给分,现在补上.

解决方案 »

  1.   

    declare @str nvarchar(4000)
    declare @i int
    set @str = 'select @i = count(*) from jizhan'
    exec sp_executesql @str,N'@i int out',@i out
    select @i
    ----------------------------
    就是刚才呀!
    以上是您给我的答案,我那个贴子没有分.一定要补上呀,呵呵.
    还有:顺便再请教一下,
    N'@i int out' 为什么前面必须加上N呢?而且要用单引号引起来.??
    可是 @i out 就不能用单引号括起来,前面也不能加N,这两个不都是参数吗?
    为何不一致呀?
    谢谢指教.
      

  2.   

    sp_executesql的参数一定要Unicode,所以前面要加个N,至于后面的问题写成下面这样更容易理解declare @str nvarchar(4000)
    declare @a int
    set @str = 'select @i = count(*) from jizhan'
    exec sp_executesql @str,N'@i int out',@a out
    select @a事实上,@i是用于宣言@str里那个变量,而@a才是最后输出的目标
      

  3.   

    sp_executesql的参数一定要Unicode,所以前面要加个N,
    -------------------------
    我就是为这一句不解,因为@a out 也是参数呀,是不是这个不是您说的参数呀?
    您指的是出现在sql语句中的变量,是这样吗?