gpt4 book ai didi

postgresql - postgreSQL 中的 DO 函数

转载 作者:行者123 更新时间:2023-11-29 14:21:31 24 4
gpt4 key购买 nike

我想插入一个根据 3 种情况略有不同的插入。我尝试阅读文档,将其转换为非匿名 do 函数,stackoverflow 上的许多帖子都是红色的,但似乎没有一个能回答我的问题。不过,我的 if else 语句对我来说似乎不错,很可能是函数语法问题。

DO $$
BEGIN

IF (SELECT date_start FROM segments_circuits_operation) = '2014-02-14' THEN
INSERT INTO circuits_operation (id_circuit, description, date_start, date_end, speed, length, duration, truck_type, tempest_day)
SELECT seg.id_segment, cir.nomcircuit, seg.date_start, seg.date_end, seg.speed_average, cir.shape_leng, (seg.date_end - seg.date_start), seg.truck_type, "14 février 2014"
FROM segments_circuits_operation seg INNER JOIN circuits_wgs_1984_p cir on seg.id_segment = cir.objectid;

ELSE IF (SELECT date_start FROM segments_circuits_operation) = '2014-03-14' THEN
INSERT INTO circuits_operation (id_circuit, description, date_start, date_end, speed, length, duration, truck_type, tempest_day)
SELECT seg.id_segment, cir.nomcircuit, seg.date_start, seg.date_end, seg.speed_average, cir.shape_leng, (seg.date_end - seg.date_start), seg.truck_type, "14 mars 2014"
FROM segments_circuits_operation seg INNER JOIN circuits_wgs_1984_p cir on seg.id_segment = cir.objectid;

ELSE IF (SELECT date_start FROM segments_circuits_operation) = '2014-03-13' THEN
INSERT INTO circuits_operation (id_circuit, description, date_start, date_end, speed, length, duration, truck_type, tempest_day)
SELECT seg.id_segment, cir.nomcircuit, seg.date_start, seg.date_end, seg.speed_average, cir.shape_leng, (seg.date_end - seg.date_start), seg.truck_type, "13 mars 2014"
FROM segments_circuits_operation seg INNER JOIN circuits_wgs_1984_p cir on seg.id_segment = cir.objectid;

END IF;
END
$$

我有语法错误。我不精通 postgreSQL,所以答案可能很明显,但目前对我来说还不是。

ERROR:  syntax error at end of input
LINE 21: $$
^

最佳答案

end 后的分号

end;
$$

如果我明白你的意思那么整个事情就可以是普通的 sql:

insert into circuits_operation (
id_circuit, description, date_start, date_end,
speed, length, duration, truck_type, tempest_day
)
select
seg.id_segment, cir.nomcircuit, seg.date_start, seg.date_end,
seg.speed_average, cir.shape_leng, (seg.date_end - seg.date_start),
seg.truck_type,
to_char(seg.date_start, 'DD month YYYY')
from
segments_circuits_operation seg
inner join
circuits_wgs_1984_p cir on seg.id_segment = cir.objectid;

关于postgresql - postgreSQL 中的 DO 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24315179/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com