2011-10-09 21 views
1

我是從使用用戶定義的函數從一個鏈接的服務器我以前的對手繼承的存儲過程。調用服務器使用sql server 2008,鏈接的服務器使用兼容2000的sql server 2005。是否有更好的方法來從鏈接服務器調用UDF?

由於呼叫從一個鏈接服務器的UDF是不允許的,他的所作所爲是重複調用服務器上的功能。該函數接受一個參數並返回一個標量int值。它是在存儲過程中選擇一列用於:

select 
columnA, 
columnB, 
fn_Function(columnC) as columnC_Alias 
from TableD 

這一切工作正常,但如果鏈接服務器上的功能得到由人誰是不知道這種重複的調用服務器上的更新可能會出現的問題造成兩個版本之間的不一致。

我知道鏈接的服務器上創建一個SP來封裝功能的方法,但它並不完全在這裏工作。

有沒有更好的方法?

+0

是你傳遞參數給它?你的例子沒有。如果是這樣,請給我們一個更具代表性的例子。 – RBarryYoung

+0

是的。只是一個,它返回一個標量int值,沒有太複雜。 – deutschZuid

+0

你試過包裝是SELECT語句在視圖中,並要求從你的SP在調用服務器上的看法? –

回答

0

只要您傳遞參數的值是依賴於表,你可以在視圖中包裹都表和UDF,並從SP中引用視圖:

CREATE VIEW ViewD AS 
SELECT columnA, 
     columnB, 
     columnC_Alias = fn_Function(columnC) 
FROM TableD 
相關問題