PostgreSQL中不存在double类型

Hon*_*Vit 4 postgresql

我有这样的表:

CREATE TABLE workingtime_times
(
  workingno serial NOT NULL,
  checktime character(6) NOT NULL,
  timeoffset double precision DEFAULT 9
)
Run Code Online (Sandbox Code Playgroud)

我创建这样的函数:

CREATE OR REPLACE FUNCTION MyFName()
    RETURNS TABLE(
        CheckTime character varying,
        TimeOffset double 
    ) AS
$BODY$
BEGIN 
    RETURN QUERY 
    SELECT  t.CheckTime, t.TimeOffset
    FROM WorkingTime_Times t
    ORDER BY t.WorkingNo DESC
    limit 1;
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100
  ROWS 1000;
ALTER FUNCTION MyFName()
  OWNER TO postgres;
Run Code Online (Sandbox Code Playgroud)

它会产生如下错误:

类型double不存在

为什么我们可以创建一个列数据类型为double但在函数中返回失败的表。在这种情况下,我们可以返回什么类型?

cle*_*ens 5

类型的名称是DOUBLE PRECISION,而不仅仅是DOUBLE。因此,您的函数标头应如下所示:

CREATE OR REPLACE FUNCTION MyFName() RETURNS TABLE(
    CheckTime CHARACTER VARYING, TimeOffset DOUBLE PRECISION 
) AS
Run Code Online (Sandbox Code Playgroud)

您也可以使用类型引用:

CREATE OR REPLACE FUNCTION MyFName() RETURNS TABLE(
    CheckTime working_intems.checktime%TYPE, 
    TimeOffset workingtime_times.timeoffset%TYPE 
) AS
Run Code Online (Sandbox Code Playgroud)