2

我有一个存储过程,我在其中创建了一个表变量,然后尝试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我拥有的变量很复杂,我需要使用一个变量并执行查询。

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

4

1 回答 1

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;
于 2012-10-24T16:37:53.387 回答