如何在Sql Server中为SELECT的结果分配变量?
这是我的尝试:
CREATE PROCEDURE x
AS
BEGIN
DECLARE @MyVar integer
DECLARE @sql nvarchar(150), @v nvarchar(50)
Set @v = 'mytable'
--SET @sql = 'SELECT INTO ' + @MyVar + 'count(*) FROM ' + @v
SET @sql = 'Set ' + @MyVar + '= SELECT count(*) FROM ' + @v
EXEC sp_executesql @sql
print @MyVar
END
将varchar值'Set'转换为数据时转换失败 输入int。
任何有关学习语法的建议都会有用。谢谢!
答案 0 :(得分:3)
您可以使用OUTPUT
参数sp_executesql
,如下所示。
DECLARE @MyVar INTEGER
DECLARE @sql NVARCHAR(MAX),
@v SYSNAME
SET @v = N'mytable'
SET @sql = N'SELECT @MyVar = count(*) FROM ' + QUOTENAME(@v)
EXEC sp_executesql
@sql,
N'@MyVar INT OUTPUT',
@MyVar = @MyVar OUTPUT
PRINT @MyVar
RE:“关于学习语法的建议”我除了books online之外没有其他人,但您应该阅读The Curse and Blessings of Dynamic SQL以了解为什么QUOTENAME
很重要。