保存查询字符串结果变量在SQL Server
我有这个疑问(这是我的查询的一个切片)保存查询字符串结果变量在SQL Server
DECLARE @Count varchar(max)
SET @Count = ('SELECT TOP 1 COUNT(Id) FROM ' + QUOTENAME(@Tbl))
EXEC (@Count)
DECLARE @CalRemainPage int = convert(int, @Count) - (3 * 15)
,当我跑我的查询我从这片得到这个错误
当将varchar值'SELECT TOP 1 COUNT(Id)FROM [Sample_Work]'转换为数据类型int时,转换失败。
我知道我的问题是@count
结果,把@count
字符串,而不是这个
DECLARE @CalRemainPage int = convert(int, @Count) - (3 * 15)
结果如何节省@count
查询的结果,并且在其他地方使用@count
如顶样本?
谢谢
这不是正确的做法。而不是Exec
使用SP_executesql
来执行您的动态SQL。
在SP_executesql
中,您可以声明变量为OUTPUT parameter
,您可以在动态查询之外使用它。尝试这样的事情。
DECLARE @Count INT,
@Tbl VARCHAR(20)='jointest',
@sql NVARCHAR(max)
SET @sql = ('SELECT TOP 1 @Count= COUNT(ID) FROM '+ Quotename(@Tbl))
EXEC Sp_executesql
@sql,
N'@Count int output',
@count output
DECLARE @CalRemainPage INT= @Count - (3 * 15)
感谢你的帮助,但我想试试这 DECLARE CalRemainPage INT = SQL - (3 * 15) 当我改变计数为sql我得到同样的错误 – 2014-11-23 07:12:13
@ SH.Developer你不应该那样做。计数已经出现在@计数变量,那么为什么你想'@ sql'那里 – 2014-11-23 07:14:06
我想从(3 * 15)Id的减法计数从Id获得从sql – 2014-11-23 07:19:55
TOP1计回报INT所以你有这样的错误 – SK2185 2014-11-23 06:01:49