2011-04-28 71 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