"错误:查询没有结果数据的目的地"当返回SETOF时

时间:2015-12-21 11:32:33

标签: postgresql

我遇到此功能的问题:

  

我得到的错误是ERROR:查询没有结果数据的目的地。

我做错了什么?

CREATE OR REPLACE FUNCTION list_top_Patients_Visit()
RETURNS SETOF PatientsList AS $$

DECLARE
_Pat_Number visit.Pat_Number%type;
_Patient_Name patient.NAme%type; 
_Doc_Number doctor.Doc_Number%type;
_Doc_Name doctor.Name%type;
_Specialty doctor.Specialty%type;
_Total_visit INTEGER;
_Total_price visit.Price%type;
_Max_price visit.Price%type;

BEGIN

FOR _Pat_Number, _Total_visit IN (

SELECT v.pat_number  _Pat_Number, count((v.pat_number))  _Total_visit

FROM visit v, patient p
    GROUP BY v.pat_number, p.Name
    ORDER BY _Total_visit DESC, v.pat_number
    LIMIT 5) 
    LOOP
        SELECT count((visit.pat_number))  _Total_visit, patient.Name  _Patient_Name, visit.doc_number  _Doc_Number, count((visit.doc_number))  max_metge, sum(visit.price)  _Total_price, max(visit.price)  _Max_price,  doctor.name  _Doc_Name, doctor.specialty  _Specialty
        FROM visit, doctor, patient
        WHERE visit.pat_number=_Pat_Number and visit.doc_number=doctor.doc_number and patient.pat_number=_Pat_Number
        GROUP BY visit.doc_number, doctor.name, specialty, patient.Name
        ORDER BY max_metge DESC, visit.doc_number
        LIMIT 1;
        RETURN NEXT  _Patient_Name, _Doc_Name, _Specialty, _Total_visit, _Total_price, _Max_price;
    END LOOP;

END;
$$LANGUAGE plpgsql;

1 个答案:

答案 0 :(得分:0)

您必须使用SELECT ... INTO ...从查询中设置PL / PgSQL中的变量。

不允许{p> SELECT没有INTO。如果要放弃结果,请改用PERFORM。如果您希望将结果存储在变量中,请使用SELECT ... INTO ...。有关详细信息,请参阅手册。

在这种情况下,您可以使用RETURN NEXT QUERY SELECT ...代替单独的SELECTRETURN步骤。