Coalesce / IsNull auf gespeicherten proc Ausgangsparameter

Ich habe eine gespeicherte Prozedur:

[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 

Ich würde erwarten, eine der folgenden zu bekommen:

  • Wert von @InputCulture kehrte zurück zu mir (wenn es in der Culture Tabelle existiert)
  • 'en-US', wenn @InputCulture null war
  • 'en-US', wenn @InputCulture nicht null war, aber auch kein vorhandener Wert zB. 'böse'

Aber ich bekomme null wenn ich das mache:

 DECLARE @v varchar(5) EXEC checkCultureCode 'evil', @v SELECT @v; 

Das funktioniert und ich bekomme 'en-US' als Antwort:

 DECLARE @v varchar(5) SELECT @v = CultureName FROM Culture WHERE CultureName = 'evil' SELECT @v = COALESCE(@v, 'en-US') SELECT @v; 

Ich hatte gehofft, dass das Schreiben all dies unten würde mir helfen, den Unterschied zu sehen, aber ich kann immer noch nicht. Ich möchte einen gespeicherten Proc- und Output-Parameter verwenden, damit ich diese Überprüfung aus einer anderen gespeicherten Prozedur ausführen kann.

   

Sie müssen den Parameter als OUTPUT im Aufruf Ihres SP angeben.

 DECLARE @v varchar(5) EXEC checkCultureCode 'evil', @v OUTPUT SELECT @v;