我遇到此功能的问题:
我得到的错误是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;
答案 0 :(得分:0)
您必须使用SELECT ... INTO ...
从查询中设置PL / PgSQL中的变量。
SELECT
没有INTO
。如果要放弃结果,请改用PERFORM
。如果您希望将结果存储在变量中,请使用SELECT ... INTO ...
。有关详细信息,请参阅手册。
在这种情况下,您可以使用RETURN NEXT QUERY SELECT ...
代替单独的SELECT
和RETURN
步骤。