(Ini semua diuji dengan postgresql 8.3.7-- apakah Anda memiliki versi sebelumnya? lihat saja penggunaan "ALIAS FOR $1")
CREATE OR REPLACE FUNCTION storeopeninghours_tostring(numeric)
RETURNS SETOF RECORD AS $$
DECLARE
open_id ALIAS FOR $1;
result RECORD;
BEGIN
RETURN QUERY SELECT '1', '2', '3';
RETURN QUERY SELECT '3', '4', '5';
RETURN QUERY SELECT '3', '4', '5';
END
$$;
Jika Anda memiliki catatan atau variabel baris untuk dikembalikan (bukan hasil kueri), gunakan "RETURN NEXT" daripada "RETURN QUERY".
Untuk menjalankan fungsi tersebut, Anda perlu melakukan sesuatu seperti:
select * from storeopeninghours_tostring(1) f(a text, b text, c text);
Jadi, Anda harus menentukan apa yang Anda harapkan dari skema baris keluaran fungsi dalam kueri. Untuk menghindarinya, Anda dapat menentukan variabel keluaran dalam definisi fungsi:
CREATE OR REPLACE FUNCTION storeopeninghours_tostring(open_id numeric, a OUT text, b OUT text, c OUT text)
RETURNS SETOF RECORD LANGUAGE 'plpgsql' STABLE STRICT AS $$
BEGIN
RETURN QUERY SELECT '1'::text, '2'::text, '3'::text;
RETURN QUERY SELECT '3'::text, '4'::text, '5'::text;
RETURN QUERY SELECT '3'::text, '4'::text, '5'::text;
END
$$;
(tidak yakin mengapa tambahan ::text cast diperlukan... '1' adalah varchar secara default mungkin?)