declare @result nvarchar(1000)
declare @count int
set @count=10
set @result='select top '+cast(@count as varchar)+' * from CH_FRM_Users'
exec(@result)
把括号里的单引号去掉啊
不知道你的数据库版本多少.
如果版本比较新的话, 那个 top 后面的数字, 可以不用 动态 SQL 来处理的。
下面是一个例子。
下面的语句,取前 10条记录数.
DECLARE @n AS BIGINT
SET @n = 10
SELECT
TOP (@n)
ROW_NUMBER() OVER (ORDER BY SUM(SALE_MONEY) DESC) AS NO,
SALE_DATE,
SUM(SALE_MONEY) AS SUM_MONEY
FROM
SALE_REPORT
GROUP BY
SALE_DATE
ORDER BY
SUM(SALE_MONEY) DESC
下面的语句,取前 1.1% 的记录数.
DECLARE @p AS FLOAT
SET @p = 1.1
SELECT
TOP (@p) PERCENT
ROW_NUMBER() OVER (ORDER BY SUM(SALE_MONEY) DESC) AS NO,
SALE_DATE,
SUM(SALE_MONEY) AS SUM_MONEY
FROM
SALE_REPORT
GROUP BY
SALE_DATE
ORDER BY
SUM(SALE_MONEY) DESC
如果数据库的版本比较低, 不得已 要使用 动态 SQL
那么可以手动做一下数据类型的转换
也就是 alex_hy 回答的那个样子
用 cast(@count as varchar) 替换掉你原来的那个 @count