2

我試圖通過鏈接服務器調用遠程存儲過程。問題是,其中一個必需的參數是用戶定義的表類型。使用用戶定義的表類型可變參數執行遠程過程

我似乎無法弄清楚如何從遠程服務器聲明一個局部變量作爲用戶定義的表類型。

這就是我想這麼遠,但它不工作:

DECLARE @tblVar [REMOTESERVER].REMOTEDB.dbo.user_defined_table_type 

EXEC [REMOTESERVER].REMOTEDB.dbo.procedure_name (@param1 = @tblVar) 

但是我得到的錯誤是:

類型名稱「REMOTESERVER.REMOTEDB .dbo'包含超過最大數量的前綴。最大爲1

必須聲明標量變量「@tblVar」

回答

6

經進一步研究,我發現,表變量是爲遠程過程調用無效。

相反,我所做的就是EXEC [REMOTESERVER].[REMOTEDB]..sp_executesql,並聲明並填充了我的表變量並在其中調用了存儲過程。

例子:

DECLARE @SQL nvarchar(4000) 
SET @SQL = N' 
DECLARE @tblVar dbo.user_defined_table_type 
-- Code to populate table here 
EXEC dbo.procedure_name (@param1 = @tblVar) 
' 
EXEC [REMOTESERVER].[REMOTEDB]..sp_executesql @stmt = @SQL 

這解決了我的問題。希望這會在未來幫助別人。

相關問題