2011-03-08 9 views
6

ストアドプロシージャに "@myDate"パラメータを設定したい場合は、何も指定されていなければ、今日の2年前のデフォルトになります。私は私の手順の定義では、このような何かをやってみました:SQLストアドプロシージャのパラメータを動的式にデフォルト設定できますか?

CREATE PROCEDURE myProcedure( @param1 int, 
           @param2 varchar(20), 
           @param3 int = null, 
           @myDate datetime = dateadd(year,-2,getDate())) 

私は、次の構文エラーを取得しています:

Incorrect syntax near '('. 

を使用すると、デフォルトのパラメータ値として動的な式を設定するには、SQL Serverを許可していますか?そうでない場合は、どうすればこの問題を解決できますか(不器用なもの以外IF @myDate is null SET @myDate=...)?

+0

不器用と怠惰の間に微妙な境界線があります。 –

答えて

9

かわりif声明のisnullか​​3210を使用することができます。

set @myDate = isnull(@myDate, dateadd(year, -2, getdate())) 
+0

ありがとう!私はこの提案を使用して終了するかもしれません... – froadie

1

docsから第

:あなたはデフォルト値として式を使用することはできませんし、これを行うためのエレガントな方法は何も本当にありません

The default value must be a constant or it can be NULL

関連する問題