是否有任何方法將函數作爲參數發送到存儲過程?將函數作爲參數傳遞給存儲過程
create procedure stp_dummy
@input nvarchar(255)
as select @input
exec stp_dummy a_function_that_returns_string('abracadabra')
(當然,我知道該功能可以預先調用,但我想知道如果直接的解決方案是可用的。)
是否有任何方法將函數作爲參數發送到存儲過程?將函數作爲參數傳遞給存儲過程
create procedure stp_dummy
@input nvarchar(255)
as select @input
exec stp_dummy a_function_that_returns_string('abracadabra')
(當然,我知道該功能可以預先調用,但我想知道如果直接的解決方案是可用的。)
我知道這是不是你要找的答案對,但要做到這一點的唯一方法是聲明一個局部變量,分配的功能價值,這一點,並以此作爲你的參數值:
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]
no ... I知道這個答案。 –
@CoroveiAndrei - 是的,我認爲這是唯一的方法。這也適用於簡單的事情:'exec sp @ string ='a'+'b''。我很確定會拋出一個錯誤。 – Curt
Curt是正確的,+1 –
不,這是SQL Server的限制。你必須做一些類似Curt所示的事情。
+1,有趣的問題是,我開始低頭看待F#和CLR存儲過程的路徑,以查看它是否是遠程可能的。它不是。 –
[Vote up this request](https://connect.microsoft.com/SQLServer/feedback/details/352110/t-sql-use-scalar-functions-as-stored-procedure-parameters) –