PostgreSQL中不存在double类型

时间:2018-10-16 04:11:55

标签: postgresql

我有这样的桌子:

CREATE TABLE workingtime_times
(
  workingno serial NOT NULL,
  checktime character(6) NOT NULL,
  timeoffset double precision DEFAULT 9
)

我创建如下函数:

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;

它会产生如下错误:

  

类型double不存在

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

1 个答案:

答案 0 :(得分:4)

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

CREATE OR REPLACE FUNCTION MyFName() RETURNS TABLE(
    CheckTime CHARACTER VARYING, TimeOffset DOUBLE PRECISION 
) AS

您还可以使用类型引用:

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