Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 将SQL Server存储过程结果与其他文本连接起来_Sql Server_Stored Procedures_Concatenation - Fatal编程技术网

Sql server 将SQL Server存储过程结果与其他文本连接起来

Sql server 将SQL Server存储过程结果与其他文本连接起来,sql-server,stored-procedures,concatenation,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

我希望以尽可能简单的方式将存储过程的结果与其他文本连接起来

大致如下:

存储过程:

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

甚至没有想过使用UDF,但它干净简单。完美的