#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, но это чисто и просто. Идеально!