我有这样的表:
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但在函数中返回失败的表。在这种情况下,我们可以返回什么类型?
类型的名称是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)
| 归档时间: |
|
| 查看次数: |
1904 次 |
| 最近记录: |