【发布时间】:2016-06-23 04:06:39
【问题描述】:
我正在尝试将循环中的值插入到表中,但由于我的函数抛出错误而无法做到这一点..
我想将从 select 语句中获取的数据插入基表 Date_Dim。
CREATE OR REPLACE FUNCTION insert_date_dimension(
OUT "date" date,
OUT week integer,
OUT quarter integer,
OUT dayname text,
OUT monthname text,
OUT year integer,
OUT month integer
) RETURNS SETOF RECORD STABLE LANGUAGE plpgsql AS
$$DECLARE
dat date;
start_date timestamp := '2016-01-01 00:00:00';
end_date timestamp := '2016-12-31 00:00:00';
BEGIN
RETURN QUERY
insert into date_dim
SELECT
d::date,
date_part('week', d)::integer,
date_part('quarter', d)::integer,
to_char(d, 'day'),
to_char(d, 'month'),
date_part('year', d)::integer,
date_part('month', d)::integer
FROM generate_series(start_date, end_date, '1 day') d(d);
END;$$;
ERROR: cannot open INSERT query as cursor
CONTEXT: PL/pgSQL function insert_date_dimension() line 6 at RETURN QUERY
【问题讨论】:
标签: postgresql