在 postgres 中使用 return 许多具有空值的行的函数

Function in postgres with return many rows with some null value

我对 postgress 的功能没有什么问题。 我有功能:

CREATE OR REPLACE FUNCTION test(
    x integer,
    y character varying,
    z character varying
)
 RETURNS TABLE(x1 int, y1 varchar,n1 varchar,z1 varchar) AS
$BODY$
BEGIN
   RETURN QUERY
SELECT  x,y,null,z  FROM example_tab            
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100
  ROWS 1000;

当我执行这个函数时出现错误:

 Error: Returned type unknown does not match expected type character varying in column 3.

 SELECT * FROM test(694531020,'t'::varchar,'t'::varchar) 

我应该怎么做才能更正 运行 这个查询并执行这个函数???

您应该明确指定 null 的数据类型,例如:

CREATE OR REPLACE FUNCTION test(
    x integer,
    y character varying,
    z character varying
)
 RETURNS TABLE(x1 int, y1 varchar,n1 varchar,z1 varchar) AS
$BODY$
BEGIN
   RETURN QUERY
SELECT  x,y,null::varchar,z  FROM example_tab            
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100
  ROWS 1000;