我想获取存储过程的结果,并以尽可能简单的方式将其与其他文本连接起来。
大致如下:
存储过程:
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/