我正在尝试创建一个触发函数,以验证查询结果以执行一个函数。以下代码返回错误:查询没有结果数据的目的地。尽管进行了多次尝试修复,但我找不到解决方案。
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;
我不确定为什么会出现此错误。有什么问题吗?
答案 0 :(得分:1)
您需要告诉SELECT将结果放入哪个变量。
DECLARE
rcd RECORD;
BEGIN
...
SELECT value, prev_value INTO rcd FROM u;
IF rcd.value >= 463
AND rcd.prev_value < 463