将SQL Server存储过程结果与其他文本连接在一起

nth*_*nth 2 sql-server stored-procedures concatenation

我想以一种尽可能简单的方式获取存储过程的结果并将其与其他文本连接起来.

这些方面的东西:

存储过程:

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
Run Code Online (Sandbox Code Playgroud)

它将被引用如下:

DECLARE @Var1 varchar(100)
SET @Var1 = 'Foo'    
EXEC dbo.sp_UserFriendlyText @Var1 + ' is the best'
Run Code Online (Sandbox Code Playgroud)

期望的结果是"开始是最好的".

它抱怨我的语法不正确.我尝试在exec语句周围添加括号来创建优先级,但它仍然不起作用.

因为sproc将在多个查询中被引用,所以我想在没有输出声明的情况下运行它,如果可能的话(只是为了使事情更清洁).

系统是SQL Server 2008 R2.

谢谢!

Mic*_*son 6

我认为在这种情况下,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
Run Code Online (Sandbox Code Playgroud)

然后打电话给...

DECLARE @Var1 VARCHAR(100)
SET @Var1 = 'Foo'
SET @Var1 = dbo.udf_UserFriendlyText(@Var1) + ' is the best'
SELECT @Var1
Run Code Online (Sandbox Code Playgroud)