2016-11-24 81 views
0

我在SQL Server 2014中有一個數據庫,並且我有一個鏈接服務器。 我想運行一個sp,在她的內部運行一個存儲過程 ,它屬於鏈接服務器。在參數openquery中執行存儲過程

比如我有存儲proedure:當我運行存儲proedure test 42我得到一個錯誤

PROCEDURE test (@myint int) 
AS 
     DECLARE @Query VARCHAR(2000) 
     SET @Query = 'INSERT INTO mytable SELECT * FROM OPENQUERY([mylinkedserver], ''EXEC [linkedserverdb].[dbo].[linkedserversp] 
    '+ @myint + ' '')' 

     EXEC(@Query) 

Conversion failed when converting the varchar value 'INSERT INTO mytable SELECT * FROM OPENQUERY([mylinkedserver], 'EXEC [linkedserverdb].[dbo].[linkedserversp] ' to data type int.

請注意,我想將我的存儲過程中的變量myint傳遞給需要int的鏈接服務器存儲過程。

有什麼建議嗎?

回答

2
PROCEDURE test (@myint int) AS 
DECLARE @Query VARCHAR(2000) 
SET @Query = 'INSERT INTO mytable SELECT * FROM OPENQUERY([mylinkedserver], ''EXEC [linkedserverdb].[dbo].[linkedserversp] 
'+ CAST(@myint AS VARCHAR(10)) + ''')' 

EXEC(@Query) 

您正在試圖連接一INT @myint用繩子'exec...'你要投@myint到兼容的字符類型如VARCHAR

+0

我認爲我需要一些輸入教程的教程...:P 謝謝馬特,沒關係 – Dimitris

+0

@Dimitris如果你全部設置好,請歡迎並接受答案,以便其他人知道你已經得到了你需要和聲望點被授予。謝謝 – Matt