为变量语句的结果赋值变量

时间:2013-01-06 15:29:39

标签: sql sql-server-2008

如何在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。

任何有关学习语法的建议都会有用。谢谢!

1 个答案:

答案 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很重要。