デフォルト値が NULL の DateTime パラメータを受け入れる SQL ストアド プロシージャがあります。
@pmNext_Check_Date DATETIME=NULL
このパラメーターを 3 つのシナリオで使用したいと考えています。
- NULL の場合、レコードを更新しない
- 日付値がある場合は、WHERE 句で指定されたすべてのレコードを更新します
- 問題の1つ!クエリのすべての日付フィールドを WHERE 句のレコードに対して NULL に設定します。
問題を引き起こしている SP 内のコード ブロックは次のとおりです (UPDATE ステートメントの残りの部分は SP の別の場所でビルドされ、正常に動作します)。
IF @pmNext_Check_Date IS NOT NULL
IF @pmNext_Check_Date ='' --This is the bit that is causing me a problem. I just need to check for a empty date
SET @sql = @sql + ' Next_Check_Date = NULL '
ELSE
SET @sql = @sql + ' Next_Check_Date = @pmNext_Check_Date '
SET @sql = @sql + ' WHERE ID IN (1, 2)'
たとえば、次の 2 行があるとします。
ID NextCheckDate
1 12/12/12
2ヌル
シナリオ 1 では、プロシージャが既定値を使用し、日付が更新されないため、パラメーターを渡しません。
シナリオ 2 では、日付値を渡し、両方の行を日付値で更新します
シナリオ 3 では、行の日付値を null に更新したいと考えています。シナリオ 1 と 3 の違いは、ユーザーが日付値を null に設定することを選択するシナリオ 3 にあります。
そこで、空の日付をストアド プロシージャに渡したいと思いました。私はC#からこれを行っており、次のようなことをしたいと思います:
SqlParameter param = new SqlParameter("@pmNext_Check_Date", "");
SP が DateTime を予期しているため、これは失敗します。
したがって、空白の日付を渡すことができるようにしたいのですが、SP 内でこれを確認するにはどうすればよいですか。以下の現在のチェックは機能しません。
IF @pmNext_Check_Date =''
前もって感謝します。これがすべて理にかなっていることを願っています。C#4.0 と SQL 2008 を使用しています