2017-07-18 51 views
0

我想在SQL服務器中使用OPENQUERY編寫選擇查詢,其中我必須從鏈接服務器中選擇記錄,但是在where子句中我必須比較日期但日期應該來自當前數據庫中的表格而不是鏈接服務器數據庫中的表格。 例如: 從OPENQUERY選擇*(Linked_Server, 'SELECT * FROM db.table_name其中EDATE>(從CurrentDB選擇EDATE)')使用鏈接的數據庫服務器將參數從當前數據庫傳遞到鏈接的數據庫服務器

所以請幫助我如何能夠從當前數據庫服務器傳遞參數鏈接數據庫服務器

+0

的[包括在OPENQUERY參數]可能的複製( https://stackoverflow.com/questions/3378496/including-parameters-in-openquery) –

回答

0

HIII其使用OPENQUERY 你可以用這種方式

select * from "linkservername"."DB NAME"."Tablename" where Edate > (select edate from CurrentDB) 

嘗試此查詢沒有必要的。

+0

hello感謝您的回覆!但它需要太多的時間後刪除OPENQUERY – user2398338

+0

select * from「linkservername」。「DB NAME」。「Tablename」WITH(NOLOCK)其中Edate>(從CurrentDB選擇edate) –

+0

試試這個希望它會幫助 –

0

在這裏你可以找到不同的方法來做到這一點:https://support.microsoft.com/en-us/help/314520/how-to-pass-a-variable-to-a-linked-server-query

因此,舉例來說,在你的情況下,可以水木清華這樣的:

declare @dt char(8) = (select convert(char(8), edate, 112) from CurrentDB) -- this should return 1 value only of date type 

    declare @sql varchar(4000) = 
    'select * 
    from openquery(MyLinkedServer, ''select * from db.table_name where Edate>''''' + @dt + ''''''')'; 
    exec(@sql); 
相關問題