2011-11-10 58 views
2

串聯SQL Server存儲過程的結果,我想採取一個存儲過程的結果,並在簡單的方式可能的附加文本串連它。與其他文本

這些方針的東西:

存儲過程:

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。

謝謝!

回答

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 

然後打電話......

DECLARE @Var1 VARCHAR(100) 
SET @Var1 = 'Foo' 
SET @Var1 = dbo.udf_UserFriendlyText(@Var1) + ' is the best' 
SELECT @Var1 
+0

壓根沒想到使用的UDF,但它乾淨而簡單。完善! – nth