调用其中包含以下循环的存储过程时,出现错误
错误:缺少表“raw_data”的 FROM 子句条目 SQL 状态:42P01
请注意,raw_data 不是表。
存储过程循环块:
FOR row_data IN SELECT * from temp_alerts_for_today_table
LOOP
PERFORM * FROM temp_mails_for_today_table AS temp
WHERE temp.mailrecipient = row_data.mailrecipient
AND temp.alertconfigurationid = row_data.alertconfigurationid;
IF(NOT FOUND) THEN
INSERT INTO temp_mails_for_today_table(mailrecipient, alertconfigurationid, mailsubject, mailcontent, instrumentlist)
VALUES(row_data.mailrecipient,row_data.alertconfigurationid,row_data.mailsubject,row_data.mailcontent,row_data.instrument);
ELSE
SELECT temp.instrumentlist INTO instrument_list
FROM temp_mails_for_today_table AS temp
WHERE temp.mailrecipient = row_data.mailrecipient
AND temp.alertconfigurationid = row_data.alertconfigurationid;
IF (instrument_list IS NULL) THEN
UPDATE temp_mails_for_today_table
SET instrumentlist = raw_data.instrument
WHERE mailrecipient = row_data.mailrecipient
AND alertconfigurationid = row_data.alertconfigurationid;
ELSE
instrument_list := instrument_list || ',' || raw_data.instrument;
UPDATE temp_mails_for_today_table
SET instrumentlist = instrument_list
WHERE mailrecipient = row_data.mailrecipient
AND alertconfigurationid = row_data.alertconfigurationid;
END IF;
END IF;
END LOOP;
您的存储过程中似乎有一个拼写错误。
您引用了两个地方
raw_data.instrument
,它们没有定义,并且您提到它不是表格。之前您的存储过程引用了 row_data.instrument
,这似乎是正确的值。
您应该将
raw_data.instrument
替换为 row_data.instrument
。