关于sp_executesql的问题

习惯性蹭分 2013-06-27 07:01:19

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

大家帮忙看下这句为什么不能执行?
...全文
186 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
习惯性蹭分 2013-07-12
  • 打赏
  • 举报
回复
引用 3 楼 u010933793 的回复:

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)
呵呵,谢谢,不过我想用sp_executesql,支持定义输入输出变量的,4,5楼的就可以。
---涛声依旧--- 2013-06-28
  • 打赏
  • 举报
回复
declare @sql Nvarchar(100) set @sql='select top (@count) ID from testtable' exec sp_executesql @sql,N'@count int',@count='10'
中国风 2013-06-27
  • 打赏
  • 举报
回复
declare @sql Nvarchar(100)
set @sql='select top (@count) ID from  testtable'
exec sp_executesql @sql,N'@count int',@count='10'
BzTech_123 2013-06-27
  • 打赏
  • 举报
回复

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)
习惯性蹭分 2013-06-27
  • 打赏
  • 举报
回复
引用 1 楼 SmithLiu328 的回复:
@count 动态SQL变量前后加+
declare @sql Nvarchar(100) set @sql='select top + @count from testtable' exec sp_executesql @sql,N'@count varchar(10)',@count='10' 这里面加‘+’也不对。
KevinLiu 2013-06-27
  • 打赏
  • 举报
回复
@count 动态SQL变量前后加+

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧