2011-04-28 72 views
3

我处于动态创建表的情况。我基本上想知道是否有一种方法可以将子查询的结果用作INSERT INTO语句中的表格。子查询作为INSERT INTO语句中的表名称

我有一个使用动态SQL和表名的工作解决方案,但对于更复杂的插入可能会变得非常混乱。

下面是我的意思的例子。

INSERT INTO (SELECT name 
      FROM sys.objects 
      WHERE object_id = 914102297) 
+5

都能跟得上。如果您正在动态创建要插入到动态SQL中的表,那么这是唯一的方法。不过你可以使用'OBJECT_NAME'(914102297)'。 – 2011-04-28 16:05:11

+0

@Martin我得到'无效的对象名称'OBJECT_NAME''你认为你可以折腾我一个例子吗? – Jack 2011-04-28 16:22:36

+0

@Jack - 我的意思是不是从'sys.objects'中选择名字,而是再次查看,看到你已经有了这个名字,所以忽略了这一点!除了动态SQL或没有动态创建表之外,没有其他解决方案。 – 2011-04-28 16:29:51

回答

1

你可以做这样的事情:

 

DECLARE @Query nvarchar(4000) 


set @Query = 'INSERT INTO ' + (SELECT name FROM sys.objects WHERE object_id = 914102297) 
set @Query = @Query + ... 
exec sp_executesql @query