1. ホーム
  2. tsql

[解決済み] T-SQL - デフォルトのパラメータを持つ関数

2022-04-22 08:04:46

質問

このようなスクリプトがあります。

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 に不十分な数の引数が指定されました。

なぜうまくいかないのでしょうか?

解決方法は?

このように呼び出す必要があります。

SELECT dbo.CheckIfSFExists(23, default)

から テクネット :

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