sql-server - 将 SQL Server 存储过程结果与附加文本连接起来

标签 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

它将像这样引用:

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

期望的结果是“开始就是最好的”。

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

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

系统是SQL Server 2008 R2。

谢谢!

最佳答案

我认为在这种情况下,对于最简洁的语法来说,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

关于sql-server - 将 SQL Server 存储过程结果与附加文本连接起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8086347/

相关文章:

mysql - MySQL 和 SQL 的 .sql 文件是否不同?

sql - 如何防止不同表上的两个触发器同时触发?

c# - 是否可以从 .net 代码调试到 SQL Server 存储过程代码?

ruby - 为什么用空格分隔的两个字符串在 Ruby 中连接?

sql - 查找正在使用的外键

sql-server - 将 SQL Server Apply 查询迁移到 Oracle

mysql - 如何在 MySQL 中循环使用数组?

stored-procedures - mysql存储过程: using declared vars in a limit statement returns an error

python 如何连接 stringio 对象?

javascript - 如何在 VueJS 中连接数据属性