2015-10-15 67 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