2013-03-02 189 views
0

調用遠程函數後,標量值函數失敗。有沒有辦法調用遠程服務器功能?函數內不允許遠程函數調用

這是你無法執行存儲函數內的程序代碼

ALTER FUNCTION [dbo].[fnGetCatalogNumber] 
(
    -- Add the parameters for the function here 
    @ProductID int 
) 
RETURNS varchar(20) 
AS 
BEGIN 
    -- Declare the return variable here 
     DECLARE @CatalogNumber varchar(20), @catalog_data varchar(20) 


    -- Add the T-SQL statements to compute the return value here 
    --Exec Dev01.Product_Core.dbo.usp_get_CatalogNumber @ProductId = @ProductID 
    ,@CatalogNumber = @catalog_data output 

    -- Return the result of the function 
    RETURN @CatalogNumber 

END 
+0

討論我會做相反的事情。將邏輯放入函數中並從存儲過程中調用函數。 – darin 2013-03-02 04:52:21

+0

實際上,您可以從函數(從SQL Server 2005到SQL Server 2008 R2)調用存儲過程,但以一種非常黑客且不推薦但有效的方式XD。只要存儲過程返回單個結果集。 – 2013-12-26 23:27:56

回答

1

,因爲假設的是,這樣一個過程可能引起副作用,如變更表。

可以思忖重塑你的函數作爲存儲過程,從而使內部存儲過程調用,但是要知道,這樣做是充滿危險,警告和危險。如果儘可能詳盡here.

+0

David..This is failing..select ..,..,..,exec sp_GetCatalogNumber a.ProductId as CatalogNumber,.. from .. – user1532976 2013-03-04 19:02:52

+0

您不能以這種方式調用SP(作爲SELECT中的字段) 。你可以做的是向SP添加一個OUTPUT參數,在調用SP中聲明一個相應的變量,然後調用SP將結果放入輸出參數中。然後,您可以在SELECT中包含該變量。 – 2013-03-04 20:12:56