3

私はストアド プロシージャを作成しており、このプロシージャ内で isNULL を使用しています。値が null の場合、置換値として select ステートメントを使用したいのですが、これは可能ですか?

IF ISNULL(@v_FilePrefix, (SELECT @v_FilePrefix = TransactionTypePrefix 
                            FROM [ConfigTransactionType] 
                           WHERE TransactionTypeID = @TransactionTypeID));
4

2 に答える 2

1

これを使用できます:

IF @v_FilePrefix IS NULL
BEGIN

    SELECT @v_FilePrefix = TransactionTypePrefix
    FROM [ConfigTransactionType]
    WHERE TransactionTypeID = @TransactionTypeID

END

私はこれがあなたが求めているものだと思いますか?

于 2010-09-30T04:28:03.593 に答える
1

@TransactionTypeID が常に値を返すと仮定します。

SELECT @v_FilePrefix = COALESCE(@v_FilePrefix, TransactionTypePrefix)
  FROM [ConfigTransactionType] 
 WHERE TransactionTypeID = @TransactionTypeID

COALESCE は最初の null 以外の値を返します。@v_FilePrefix が null でない場合は、値がそれ自体に設定されます。

しかし、使用するのが最善です:

IF @v_FilePrefix IS NULL
BEGIN

   SELECT @v_FilePrefix = TransactionTypePrefix
     FROM [ConfigTransactionType]
    WHERE TransactionTypeID = @TransactionTypeID

END
于 2010-09-30T04:29:09.363 に答える