Объединить результат хранимой процедуры SQL Server с дополнительным текстом

#sql-server #stored-procedures #concatenation

#sql-server #хранимые процедуры #объединение

Вопрос:

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

Что-то вроде этих строк:

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

 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:

Я думаю, что 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
  

Комментарии:

1. Даже не думал использовать UDF, но это чисто и просто. Идеально!