2

我有一个存储过程:

[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表中)
  • 'en-US' 如果@InputCulture为空
  • '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;

我曾希望写下所有这些能帮助我看到不同之处,但我仍然做不到。我想使用存储过程和输出参数,以便我可以从另一个存储过程执行此检查。

4

1 回答 1

3

您需要在对 SP 的调用中将参数指定为 OUTPUT。

DECLARE @v varchar(5)
EXEC checkCultureCode 'evil', @v OUTPUT
SELECT @v;
于 2012-05-08T18:35:35.637 回答