使用表变量从SQL Server中选择语句时出现语法错误

时间:2012-10-24 16:10:10

标签: sql-server sql-server-2008

我有一个存储过程,我在其中创建一个表变量,然后尝试对该表变量执行select,但输出会引发错误的语法错误。

我的存储过程(简化)如下:

CREATE PROCEDURE [dbo].[spGetLog] 
AS
  SET NOCOUNT ON;

  Declare @Table table (ID int identity(1,1), 
                        Node varchar(100)
                       )

  insert into @Table(Node) values ('employee')

  Declare @sqlquery AS NVARCHAR(1000)

  SET @sqlquery = 'select * from @Table;'
  EXEC (@sqlquery)

给出错误 -

  

'@Table'附近的语法不正确

实际上我的@sqlquery变量很复杂,我需要使用变量和 执行查询。

有没有办法我仍然可以使用变量执行我的存储过程?任何其他 欢迎提出建议。

1 个答案:

答案 0 :(得分:0)

正如他在评论中提到的David W,如果你想要在你的EXEC范围内可见的东西,只需使用临时表(不是表变量):

CREATE TABLE #Table (ID int identity(1,1), 
                    Node varchar(100)
                   )
insert into #Table(Node) values ('employee')

Declare @sqlquery AS NVARCHAR(1000)

SET @sqlquery = 'select * from #Table;'
EXEC (@sqlquery)

DROP TABLE #Table;