1. ホーム
  2. sql

[解決済み] SQL関数をデフォルトのパラメータ値として使用できますか?

2022-09-05 03:01:48

質問

これでデフォルトのパラメータ値を変更してみました。

ALTER PROCEDURE [dbo].[my_sp]
@currentDate datetime = GETDATE()

で、SQLプリコンパイラが出したのは、このエラーだけでした。

Msg 102, Level 15, State 1, Procedure my_sp, Line 8 '(' の近くに不正な構文があります。

プロシージャはすでに作成済みです。(それが関係あるかどうかはわかりません。) NULL デフォルト値を使用し、後でそれをチェックしていましたが、それは適切ではないようです。これを1行で行うことは可能でしょうか?


更新:私は MSDN のストアドプロシージャのパラメータに関する説明です。 :

[ = default ] パラメータのデフォルト値です。デフォルト値が定義されている場合、そのパラメータに値を指定しなくても関数を実行することができます。

注意

varchar(max) と varbinary(max) データ型を除く CLR 関数には、デフォルトのパラメータ値を指定することができます。

関数のパラメータがデフォルト値を持つ場合、デフォルト値を取得するために関数を呼び出す際にキーワードDEFAULTを指定する必要があります。この動作は、パラメータを省略するとデフォルト値も意味するストアドプロシージャでデフォルト値を持つパラメータを使用する場合とは異なります。

私はこれを間違って読んでいるのでしょうか?

ありがとうございます。

どのように解決するのですか?

ストアドプロシージャのパラメータのデフォルト値は、必ず 定数 . 以下のようにする必要があります....

ALTER Procedure [dbo].[my_sp]
@currentDate datetime = null
AS
IF @currentDate is null
SET @currentDate = getdate()