函数 returns 在非组 Select 语句中使用了超过 1 个值

Function returns more than more than 1 values used in Non group Select statement

我有一个 Civil status 列,其数据类型为 0-4。 0未婚,1已婚等

我希望该列显示代表他们的数字的状态,所以我创建了一个函数来测试该值和 returns 等效的字符串状态值。

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

我创建了一个存储过程,它将显示 table 中的所有行,但将 Civil 状态替换为函数,其中参数是该行中 Civil 状态的编号。

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

但是结果不是我所期望的。函数return编辑了一个对象中所有行的所有值,return编辑了有关子查询return多个值的错误。 我如何 return 每一行的值?

你可以用这个。它会为你工作。

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