0

如何在 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 时转换失败。

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

4

1 回答 1

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:“关于学习语法的建议”除了在线书籍之外,我真的没有其他书籍,但您应该阅读动态 SQL 的诅咒和祝福以了解为什么QUOTENAME重要。

于 2013-01-06T15:35:13.327 回答