我有一个存储过程:
[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
为空@InputCulture
不为空,但也不是现有值,例如。 '恶'但是当我这样做时我得到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;
我曾希望将所有这些写下来会让我看到差异,但我仍然不能。我想使用存储的proc和输出参数,以便我可以从另一个存储过程执行此检查。
答案 0 :(得分:3)
您需要在对SP的调用中将参数指定为OUTPUT。
DECLARE @v varchar(5)
EXEC checkCultureCode 'evil', @v OUTPUT
SELECT @v;