错误:postgres 存储过程中缺少表“raw_data”的 FROM 子句条目

问题描述 投票:0回答:1

调用其中包含以下循环的存储过程时,出现错误

错误:缺少表“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;
postgresql stored-procedures
1个回答
0
投票

您的存储过程中似乎有一个拼写错误。

您引用了两个地方

raw_data.instrument
,它们没有定义,并且您提到它不是表格。之前您的存储过程引用了
row_data.instrument
,这似乎是正确的值。

您应该将

raw_data.instrument
替换为
row_data.instrument

© www.soinside.com 2019 - 2024. All rights reserved.