postgresql:将变量传递给sql查询

时间:2018-08-24 00:00:31

标签: sql postgresql

我正在尝试使用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语句中未定义。我在这里做什么错了?

1 个答案:

答案 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;
$$