2015-10-15 66 views
0

我有一個問題,同時插入數據從一個分貝另一個插入數據的動態

下面

是我的代碼:

INSERT 
INTO myarchivedb.dbo.tblStoreOrderArchive 
(
     [StoreOrderId] 
     ,[CompanyId] 
     ,[SiteId] 
) 
SELECT StoreOrderId 
    ,CompanyId 
    ,SiteId 
FROM mycurrentdb.dbo.tblStoreOrder 

上面的代碼工作正常,但myarchivedbmycurrentdb將定期更改。如何使用變量動態地實現它。

+0

張貼有隔靴搔癢的信息在這裏提供一個真正的答案。你爲什麼認爲你可以用變量來做到這一點?這裏是一個開始的好地方。 http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ –

+0

我想這樣做DECLARE \t @name nvarchar(512)= 'myarchivedb' INSERT INTO [@名+ .dbo.tblStoreOrderArchive] ( \t \t \t [StoreOrderId] \t \t,[CompanyId] \t \t,[SITEID] ) SELECT \t StoreOrderId \t \t,CompanyId \t \t,SiteId 從\t mycurrentdb.dbo.tblStoreOrder – user2841480

+0

你怎麼知道數據庫或表的名字?你將不得不爲此使用動態sql。請小心,因爲這有很高的易受sql注入威脅的風險。 –

回答

0

你可以嘗試這樣的

declare @db1 nvarchar(99) = 'myarchivedb.dbo.tblStoreOrderArchive'; 
declare @db2 nvarchar(99) = 'mycurrentdb.dbo.tblStoreOrder'; 

-- make sure your query and syntax is correct 
PRINT ('INSERT INTO ' + @db1 + 
'([StoreOrderId] ,[CompanyId] ,[SiteId]) SELECT StoreOrderId ,CompanyId ,SiteId FROM ' + @db1) 

EXEC ('INSERT INTO ' + @db1 + 
'([StoreOrderId] ,[CompanyId] ,[SiteId]) SELECT StoreOrderId ,CompanyId ,SiteId FROM ' + @db1) 
+0

我的程序是非常巨大的,我將失去縮進..我想這樣做使用variable.concact變量與表名..但它不工作 – user2841480

+0

@ user2841480如果我們必須動態傳遞數據庫對象,然後我們有動態傳遞參數,並使用動態查詢 – wiretext

+0

我們可以使用別名概念 – user2841480