ストアドプロシージャがあります:
[checkCultureCode]
@InputCulture varchar(5) = 'en-US',
@ValidCulture varchar(5) OUTPUT
AS
BEGIN
SELECT @ValidCulture = CultureName FROM Culture
WHERE CultureName = @InputCulture
SELECT @ValidCulture = COALESCE(@ValidCulture, 'en-US')
-- or ISNULL(@ValidCulture, 'en-US')
END
私は次のいずれかを取得することを期待します:
@InputCulture
私に返された値(Culture
テーブルに存在する場合)@InputCulture
nullの場合は「en-US」- 'en-US'
@InputCulture
は、nullではなく、既存の値でもない場合。'悪の'
しかしnull
、私はこれを行うと得ます:
DECLARE @v varchar(5)
EXEC checkCultureCode 'evil', @v
SELECT @v;
これは機能し、答えとして「en-US」を取得します。
DECLARE @v varchar(5)
SELECT @v = CultureName FROM Culture WHERE CultureName = 'evil'
SELECT @v = COALESCE(@v, 'en-US')
SELECT @v;
これをすべて書き留めておけば違いがわかると思っていたのですが、それでもできません。別のストアドプロシージャからこのチェックを実行できるように、ストアドプロシージャと出力パラメータを使用したいと思います。