如何在 SQL 函数定义中包含 CASE 语句

How to include CASE statements in a SQL function definition

以下函数定义没有给出任何错误,但也没有按预期工作。谁能帮忙? 它是应该 到 return 提供 int 时的文本缩写之一:

CREATE FUNCTION foo(a int)
RETURNS character
LANGUAGE SQL
AS $$
  SELECT CASE C.INSURANCETYPE
    WHEN 0 THEN 'MB' --MEDICARE
    WHEN 1 THEN 'MC' --MEDICAID
    WHEN 2 THEN 'OF' --OTHER FED
    WHEN 3 THEN 'CH' --CHAMPVA
    WHEN 4 THEN 'CI' --GROUP
    WHEN 5 THEN 'OF' --OTHER FED
    WHEN 6 THEN 'CI' --OTHER GROUP
  END
  FROM C
$$;

SELECT foo(0);

...return没什么

试试这个:

Declare @insuranceType as char

SET @insuranceType = (SELECT CASE C.INSURANCETYPE
    WHEN 0 THEN 'MB' --MEDICARE
    WHEN 1 THEN 'MC' --MEDICAID
    WHEN 2 THEN 'OF' --OTHER FED
    WHEN 3 THEN 'CH' --CHAMPVA
    WHEN 4 THEN 'CI' --GROUP
    WHEN 5 THEN 'OF' --OTHER FED
    WHEN 6 THEN 'CI' --OTHER GROUP
  END
  FROM C)

RETURN @insuranceType
`CREATE or REPLACE FUNCTION NUM_TO_INSURANCE(NUM int) RETURNS varchar AS $body$
declare REL varchar;
begin
SELECT 
  CASE NUM --block_1
    WHEN 0 THEN 'MB' --MEDICARE
    WHEN 1 THEN 'MC' --MEDICAID
    WHEN 2 THEN 'OF' --OTHER FED
    WHEN 3 THEN 'CH' --CHAMPVA
    WHEN 4 THEN 'CI' --GROUP
    WHEN 5 THEN 'OF' --OTHER FED
    WHEN 6 THEN 'CI' --OTHER GROUP
  END
   INTO REL;
RETURN REL;
END;
$body$ LANGUAGE plpgsql;`