T-SQL - デフォルトパラメータを持つ関数 質問する

T-SQL - デフォルトパラメータを持つ関数 質問する

次のようなスクリプトがあります:

CREATE FUNCTION dbo.CheckIfSFExists(@param1 INT, @param2 BIT = 1 )
RETURNS BIT
AS
BEGIN
    IF EXISTS ( bla bla bla )
        RETURN 1;
    RETURN 0;
END
GO

これを次のように手順で使用したいと思います。

IF dbo.CheckIfSFExists( 23 ) = 0
    SET @retValue = 'bla bla bla';

しかし、次のエラーが発生します:

プロシージャまたは関数 dbo.CheckIfSFExists に指定された引数の数が不十分です。

なぜ機能しないのでしょうか?

ベストアンサー1

こう呼ばなければなりません

SELECT dbo.CheckIfSFExists(23, default)

からテクネット:

関数のパラメータにデフォルト値がある場合、デフォルト値を取得するには、関数の呼び出し時にキーワード DEFAULT を指定する必要があります。この動作は、パラメータを省略するとデフォルト値も暗黙的に指定されるストアド プロシージャでデフォルト値を持つパラメータを使用する場合とは異なります。この動作の例外は、EXECUTE ステートメントを使用してスカラー関数を呼び出す場合です。EXECUTE を使用する場合、DEFAULT キーワードは必要ありません。

おすすめ記事