Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 函数在postgres中返回多行,其中包含一些空值_Postgresql_Plpgsql_Stored Functions - Fatal编程技术网

Postgresql 函数在postgres中返回多行,其中包含一些空值

Postgresql 函数在postgres中返回多行,其中包含一些空值,postgresql,plpgsql,stored-functions,Postgresql,Plpgsql,Stored Functions,我对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 exam

我对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;

从example_tab中选择x,y,null::varchar,z
并请从标记中删除mysql和sql server将null(未知值)转换为整数的逻辑是什么?我想是为了匹配返回表的类型