2017-06-22 11 views
0

カラムがあります。値は0〜4のintデータ型よりも市民ステータスです。 0はシングル、1は結婚しています。関数は、1つ以上の値を返します。グループ以外のSelectステートメントで使用されます。

数値を表すステータスを列に表示したいので、値をテストして同等の文字列ステータス値を返す関数を作成しました。

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
とIは、テーブル内のすべての行を表示するストアドプロシージャをしたが、パラメータは市民状態は、その行に保持するものの数である関数を持つ市民の状態を置き換えます。

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

しかし、結果は私が期待したものではありません。この関数は、複数の値を返す副問合せに関するエラーを戻した1つのオブジェクトのすべての行のすべての値を戻しました。 各行の値を返すにはどうすればよいですか?

+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

関連する問題