在PostgreSQL中不存在"double"类型

13

I have table like this:

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的表格,但在函数中返回失败呢?在这种情况下,我们应该返回什么类型?


2
你不需要使用PL/pgSQL来编写一个简单的函数,该函数只返回查询结果。使用普通的SQL函数会更加高效。 - user330315
1个回答

16

类型的名称是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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接