我有这样的桌子:
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的表,但是函数返回失败。在这种情况下我们可以返回什么类型?
答案 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