2017-06-22 34 views
0

我有一個列的公民狀態比int值數據類型的值爲0-4。 0單身,1已婚,等等。函數返回的值超過1個用於非組選擇語句的值

我希望列顯示狀態代表他們的數字,所以我做了一個函數,測試該值並返回等效的字符串狀態值。

CREATE function civilStatus 
 
(
 
@status int 
 
) 
 
RETURNS varchar(50) 
 
AS 
 
BEGIN 
 
DECLARE @result_status varchar(50) 
 

 
SELECT @result_status = (
 
SELECT CONVERT(varchar,(CASE Civil 
 
WHEN 0 THEN 'Single' 
 
WHEN 1 THEN 'Married' 
 
WHEN 2 THEN 'Separated' 
 
WHEN 3 THEN 'Divorced' 
 
WHEN 4 THEN 'Windowed' 
 
END)) 
 
FROM UserInfo) 
 

 
RETURN @result_status

和我做了一個存儲過程,將顯示錶中的所有行,但替換其中的參數是什麼號碼的婚姻狀況該行持有該函數的婚姻狀況。

CREATE PROCEDURE [dbo].DisplayUsers 
 
\t 
 
AS 
 
\t SELECT Firstname, 
 
    Lastname, 
 
    City, 
 
    Country, 
 
    ([dbo].civilStatus(Civil)) AS "Civil Status" 
 
    FROM UserInfo

但結果不是我所期待。該函數返回一個對象中所有行的所有值,該對象返回有關返回多個值的子查詢的錯誤。 如何返回每行的值?

+0

給出輸入爲整數 – mohan111

+0

你是什麼意思? – ejmtv

+0

dbo.civil(1)AS「Civil Status」 – mohan111

回答

2

您可以使用它。它會爲你工作。

CREATE function civilStatus 
(
@status int 
) 
RETURNS varchar(50) 
AS 
BEGIN 

DECLARE @result_status varchar(50) 

SET @result_status = 
CASE @status 
WHEN 0 THEN 'Single' 
WHEN 1 THEN 'Married' 
WHEN 2 THEN 'Separated' 
WHEN 3 THEN 'Divorced' 
WHEN 4 THEN 'Windowed' 
END 

RETURN @result_status 
End 
+0

你是一個拯救生命的人! – ejmtv