我正在尝试使用PostgreSQL将变量传递给select语句。总体目标是在存储过程中使用此逻辑,其中变量deadline_interval
将作为输入参数。到目前为止,这是我尝试过的:
DO
$$
DECLARE
date_deadline date;
deadline_interval varchar := '6 month';
BEGIN
date_deadline := (SELECT CURRENT_DATE - INTERVAL deadline_interval);
RAISE NOTICE 'here: %', date_deadline;
END;
$$
不幸的是,变量deadline_interval
在select语句中未定义。我在这里做什么错了?
答案 0 :(得分:1)
使用强制转换代替前缀。
...
date_deadline := (SELECT CURRENT_DATE - deadline_interval::interval);
...
或者更好的是,从一开始就使用interval
作为deadline_interval
的类型。
DO
$$
DECLARE
date_deadline date;
deadline_interval interval := INTERVAL '6 month';
BEGIN
date_deadline := (SELECT CURRENT_DATE - deadline_interval);
RAISE NOTICE 'here: %', date_deadline;
END;
$$