下面给出的是我的表结构
CREATE TABLE gtab86
(
mlid integer DEFAULT nextval('seq_gtab86_id'::regclass),
acyrid integer,
lmonth integer,
islocked boolean
)
在此表
lmonth
中是月份,并且acyrid
是表示值的年份,例如 1。我写了以下
Function
插入到gtab86
.
CREATE OR REPLACE FUNCTION createmonthlock(iacyrid integer)
RETURNS void AS '
BEGIN
INSERT INTO gtab86(acyrid, lmonth) VALUES (iacyrid,1);
INSERT INTO gtab86(acyrid, lmonth) VALUES (iacyrid,2);
INSERT INTO gtab86(acyrid, lmonth) VALUES (iacyrid,3);
INSERT INTO gtab86(acyrid, lmonth) VALUES (iacyrid,4);
INSERT INTO gtab86(acyrid, lmonth) VALUES (iacyrid,5);
INSERT INTO gtab86(acyrid, lmonth) VALUES (iacyrid,6);
INSERT INTO gtab86(acyrid, lmonth)VALUES (iacyrid,7);
INSERT INTO gtab86(acyrid, lmonth)VALUES (iacyrid,8);
INSERT INTO gtab86(acyrid, lmonth)VALUES (iacyrid,9);
INSERT INTO gtab86(acyrid, lmonth)VALUES (iacyrid,10);
INSERT INTO gtab86(acyrid, lmonth)VALUES (iacyrid,11);
INSERT INTO gtab86(acyrid, lmonth)VALUES (iacyrid,12);
END;'
LANGUAGE plpgsql VOLATILE COST 100;
如您所见,insert into 重复了 12 次(对于 12 个lmonth
字段行)。
如何使它只有一个插入查询?是否可以在函数
中使用for 0 to 12
善良的东西?