我有一个民用状态列而不是int数据类型,其值为0-4。 0是单身,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
我创建了一个存储过程,它将显示表中的所有行,但是将Civil状态替换为参数是Civil状态在该行中保存的数字的函数。
CREATE PROCEDURE [dbo].DisplayUsers
AS
SELECT Firstname,
Lastname,
City,
Country,
([dbo].civilStatus(Civil)) AS "Civil Status"
FROM UserInfo
但结果并非我的预期。该函数返回一个对象中所有行的所有值,这些值返回有关返回多个值的子查询的错误。 如何返回EACH行的值?
答案 0 :(得分: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