2011-12-06 163 views
4

是否有任何方法將函數作爲參數發送到存儲過程?將函數作爲參數傳遞給存儲過程

create procedure stp_dummy 
@input nvarchar(255) 
as select @input 

exec stp_dummy a_function_that_returns_string('abracadabra') 

(當然,我知道該功能可以預先調用,但我想知道如果直接的解決方案是可用的。)

+0

+1,有趣的問題是,我開始低頭看待F#和CLR存儲過程的路徑,以查看它是否是遠程可能的。它不是。 –

+3

[Vote up this request](https://connect.microsoft.com/SQLServer/feedback/details/352110/t-sql-use-scalar-functions-as-stored-procedure-parameters) –

回答

4

我知道這是不是你要找的答案對,但要做到這一點的唯一方法是聲明一個局部變量,分配的功能價值,這一點,並以此作爲你的參數值:

DECLARE @input nvarchar(255) 
SET @input = a_function_that_returns_string('abracadabra') 
EXEC stp_dummy @[email protected] 

有了SQL Server 2008,這可以在2號線完成:

DECLARE @input nvarchar(255) = a_function_that_returns_string('abracadabra') 
EXEC stp_dummy @[email protected] 
+0

no ... I知道這個答案。 –

+0

@CoroveiAndrei - 是的,我認爲這是唯一的方法。這也適用於簡單的事情:'exec sp @ string ='a'+'b''。我很確定會拋出一個錯誤。 – Curt

+1

Curt是正確的,+1 –

0

不,這是SQL Server的限制。你必須做一些類似Curt所示的事情。

相關問題