我有一个存储过程,我在其中创建一个表变量,然后尝试对该表变量执行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
变量很复杂,我需要使用变量和
执行查询。
有没有办法我仍然可以使用变量执行我的存储过程?任何其他 欢迎提出建议。
答案 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;