触发函数返回:查询没有结果数据的目的地

时间:2019-04-02 15:39:12

标签: postgresql

我正在尝试创建一个触发函数,以验证查询结果以执行一个函数。以下代码返回错误:查询没有结果数据的目的地。尽管进行了多次尝试修复,但我找不到解决方案。

BEGIN
WITH u AS (SELECT row_number() OVER (ORDER BY observation.observationid) AS obsid,
    observation.observationid,
    observation.resulttime,
    numericvalue.value,
    series.observablepropertyid,
    series.procedureid,
    observableproperty.name,
    lag(numericvalue.value, 1) OVER (ORDER BY observation.observationid) AS prev_value     
   FROM observation
     JOIN numericvalue ON numericvalue.observationid = observation.observationid
     JOIN series ON series.seriesid = observation.seriesid
     JOIN observableproperty ON observableproperty.observablepropertyid = series.observablepropertyid
    WHERE observableproperty.name::text = 'LivelloInvaso'::text 
  ORDER BY observation.observationid DESC
 LIMIT 1)

SELECT value, prev_value FROM u;

IF u.value >= 463
AND u.prev_value < 463

THEN
    perform ___send_mail();
    ELSE RETURN null;   
END IF;
RETURN null;
END;

我不确定为什么会出现此错误。有什么问题吗?

1 个答案:

答案 0 :(得分:1)

您需要告诉SELECT将结果放入哪个变量。

DECLARE
    rcd RECORD;
BEGIN
    ...
    SELECT value, prev_value INTO rcd FROM u; 

    IF rcd.value >= 463
    AND rcd.prev_value < 463