2011-12-06 18 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

[この要求に賛成](https://connect.microsoft.com/SQLServer/feedback/details/352110/t-sql-use-scalar-functions-as-stored-procedure-parameters) –

答えて

4

私は、これはあなたが探している答えではありません知っています以下のために、これを行うための唯一の方法は、ローカル変数を宣言これに関数値を割り当て、あなたのパラメータ値としてこれを使用することです:SQL Server 2008に

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

、これは2行で行うことができます:

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

いいえ...私この答えを知っていた。 –

+0

@CoroveiAndrei - そうですね、これが唯一の方法だと思います。これは、 'exec sp @ string = 'a' + 'b''のような単純なものにもなります。私はかなりそれがエラーをスローすると確信しています。 – Curt

+1

Curt is correct、+1 –

0

いいえ、これはSQL Serverの制限事項です。あなたは、Curtが実演したような何かをしなければならないでしょう。

関連する問題