4

.aspx.csページから呼び出されているストアドプロシージャがあります。sprocが呼び出されたときに送信できないことがあるパラメータがあります。このため、私は次のことを行っています。

 IF @variable is null
     BEGIN
         ...do this...
     END
 Else 
         ...do that...

私の問題はIFステートメントにあります。私が次のいずれかをいつ使用するかを知ることができる限り:

  • if @parameterVariable = null
  • if @parameterVariable = ''
  • if @parameterVariable <= 0

何も起こりません!?SSMSでsprocをデバッグすると、(パラメーターが空である(ユーザーが選択していない)場合でも)カーソルがELSEステートメントのコードに移動して実行されることがわかります。私は何か間違ったことをしていますか?

ありがとう!

4

4 に答える 4

5

オプションのパラメータを使用します。

 CREATE PROCEDURE uspTest
    @param1 varchar(50) = null,

AS
    BEGIN
        SELECT col1, col2
        FROM Table1
        WHERE
                ((@Param1 IS NULL) OR (col1 = @Param1)) 
    END
于 2012-11-16T19:26:18.957 に答える
3

if @parameterVariable = null間違っている。に変更しif @parameterVariable IS NULLます。

これを示すSQLフィドルは次のとおりです。http ://www.sqlfiddle.com/#!6 / 6cb42 / 1

于 2012-11-16T19:27:40.840 に答える
1

SMSSでデバッグするときは、「null値を渡す」というチェックボックスをオンにする必要があります。それ以外の場合、値は空の文字列などです。

私はいつもあなたが提案するパターンを使います、そしてそれは私にとってうまくいきます。

于 2012-11-16T19:27:51.590 に答える
1

このページを読むことをお勧めします=> ANSINULLS

実際にif @var = nullは間違いではありません。すべてがANSI_NULLSの値に依存します:)

于 2012-11-16T19:42:44.180 に答える