【问题标题】:Concatenate SQL Server stored procedure result with additional text将 SQL Server 存储过程结果与附加文本连接起来
【发布时间】:2011-11-10 21:10:51
【问题描述】:

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

类似的东西:

存储过程:

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 语句周围添加括号来创建优先级,但它仍然不起作用。

因为存储过程将在多个查询中被引用,所以如果可能的话,我想在没有输出声明的情况下运行它(只是为了让事情更简洁)。

系统是 SQL Server 2008 R2。

谢谢!

【问题讨论】:

    标签: sql-server stored-procedures concatenation


    【解决方案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
    

    【讨论】:

    • 根本没想过使用UDF,但它干净简单。完美!
    猜你喜欢
    • 1970-01-01
    • 2021-02-13
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 2020-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多