Объединить результат хранимой процедуры SQL Server с дополнительным текстом - PullRequest
2 голосов
/ 11 ноября 2011

Я хотел бы взять результат хранимой процедуры и объединить его с дополнительным текстом настолько простым, насколько это возможно.

Что-то вроде этого:

Хранимая процедура:

CREATE PROCEDURE [dbo].[sp_UserFriendlyText] @Text varchar(100)
AS
BEGIN
SELECT CASE @Text
     WHEN 'Foo' THEN 'Beginning'
     WHEN 'bar' THEN 'End'
     ELSE 'Text Not Found'
END
END

На это можно сослаться так:

DECLARE @Var1 varchar(100)
SET @Var1 = 'Foo'    
EXEC dbo.sp_UserFriendlyText @Var1 + ' is the best'

При желаемом результате «Начало - лучшее».

Он жалуется, что мой синтаксис неверен. Я попытался добавить скобки вокруг оператора exec для создания приоритета, но он все еще не работает.

Поскольку на sproc будут ссылаться в нескольких запросах, я бы хотел запустить его без объявления вывода, если это вообще возможно (просто чтобы сделать вещи чище).

Системой является SQL Server 2008 R2.

Спасибо!

1 Ответ

6 голосов
/ 11 ноября 2011

Я думаю, что UDF был бы лучшим выбором в этой ситуации для самого чистого синтаксиса ...

CREATE FUNCTION [dbo].[udf_UserFriendlyText](@Text VARCHAR(100))  
RETURNS VARCHAR(100)
AS  
BEGIN 
    DECLARE @ReturnvValue VARCHAR(100)
    SELECT @ReturnvValue = CASE @Text
        WHEN 'Foo' THEN 'Beginning'
        WHEN 'bar' THEN 'End'
        ELSE 'Text Not Found'
    END

    RETURN @ReturnvValue
END
GO

Тогда для вызова ...

DECLARE @Var1 VARCHAR(100)
SET @Var1 = 'Foo'
SET @Var1 = dbo.udf_UserFriendlyText(@Var1) + ' is the best'
SELECT @Var1
...