set @sql = 'select 100'
Exec sp_executesql @sql,N'@count int output',@count output
set @count=@count+1
select @count代码如上,我只想把@sql的执行结果存入@count,以便在存储过程中继续使用。
但是上面的存储过程执行后,会有两个记录集,第一个显示100,第二个为NULL,
这是怎么回事呢?用这种方法怎么返回101?

解决方案 »

  1.   


    DECLARE @sql NVARCHAR(100);
    DECLARE @count INT;
    set @sql = 'select @count=100'
    Exec sp_executesql @sql,N'@count int output',@count output
    set @count=@count+1
    select @count 
      

  2.   

    DECLARE @count INT
    select @count=100
    pint @count 这才是付值呀
    就是变量域,你用了字符串执行后,他的使用域,只能在哪一个字符域里,你要是再定义一个字符船,想引用他是不可以的
      

  3.   

    DECLARE @SQL NVARCHAR(4000)
    set @sql =N'select @count=100' 
    DECLARE @count INT 
    Exec sp_executesql @sql,N'@count int output',@count output 
    set @count=@count+1 
    select @count 
                
    ----------- 
    101(所影响的行数为 1 行)