gpt4 book ai didi

postgresql - 在函数中使用来自 for 循环的值

转载 作者:行者123 更新时间:2023-11-29 14:22:05 25 4
gpt4 key购买 nike

您好,我正在尝试创建一个从 1 到 12 循环的函数,然后使用该循环值来计算日期,这是我到目前为止的循环代码,这就是问题所在。

FOR i IN 1..12 LOOP
r.duedate := alert_start_period + interval 'i month';
RAISE NOTICE 'Month % gives date of %', i, r.duedate;
END LOOP;

我知道问题在于我如何引用值 i。我如何从循环中正确引用 i 以便间隔正确。

抛出的错误是

ERROR:  invalid input syntax for type interval: "i month"

最佳答案

您不能像这样将 var 替换为字符串。不使用动态 SQL,最干净的方法是乘数:

r.duedate := alert_start_period + i * INTERVAL '1' MONTH;

然而,这整个想法是丑陋的。循环是不必要的。使用:

generate_series(alert_start_period, alert_start_period + INTERVAL '12' MONTH, INTERVAL '1' MONTH)

生成间隔。如果必须的话,您可以遍历它,但我通常发现所有不需要异常处理的事情都最好作为正常的集合操作来完成,而不是 pl/pgsql 循环。

关于postgresql - 在函数中使用来自 for 循环的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21276993/

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