declare @sql Nvarchar(100)
set @sql='select top @count from testtable'
exec sp_executesql @sql,N'@count varchar(10)',@count='10'大家帮忙看下这句为什么不能执行?

解决方案 »

  1.   

    declare @sql Nvarchar(100)
    set @sql='select top + @count from testtable'
    exec sp_executesql @sql,N'@count varchar(10)',@count='10'
    这里面加‘+’也不对。
      

  2.   


    DECLARE @count INT 
    SET @count = 10 
    SELECT TOP @count FROM testable-- 以上语句能执行吗?  不能, 因为 SELECT 里面的字段名不能用变量代替.  你犯的是同一错误.
    -- 可以改成这样DECLARE @count INT , @SQL varchar(max) 
    SET @count = 10 
    SET @SQL = 'SELECT TOP ' + @count + ' FROM testtable' EXEC(@SQL)
      

  3.   

    declare @sql Nvarchar(100)
    set @sql='select top (@count) ID from  testtable'
    exec sp_executesql @sql,N'@count int',@count='10'
      

  4.   

    declare @sql Nvarchar(100)
    set @sql='select top (@count) ID from  testtable'
    exec sp_executesql @sql,N'@count int',@count='10'
      

  5.   

    呵呵,谢谢,不过我想用sp_executesql,支持定义输入输出变量的,4,5楼的就可以。