CREATE OR REPLACE FUNCTION for_example()
RETURNS integer AS
$func$
DECLARE
r "WEBHOST";
b "WEBHOST"[]; -- this works
BEGIN
FOR r IN
SELECT * FROM "WEBHOST"
LOOP
b := b || r; -- this, too
END LOOP;
RAISE NOTICE '%', b; -- get feedback
RETURN 33;
END
$func$ LANGUAGE plpgsql; -- and lose the quotes
%rowtype
umumnya tidak diperlukan. Biasanya, tipe baris tabel yang terkait tersedia sebagai tipe dengan nama yang sama.
Dan jangan jangan kutip nama bahasanya.
Dan Anda tidak bisa hanya memiliki panggilan fungsi yang berdiri sendiri di plpgsql . Menggunakan tugas sebagai gantinya.
Ini juga bukan ide yang baik untuk menggunakan pengidentifikasi kasus CaMeL di Postgres. Gunakan pengenal legal dengan huruf kecil untuk membuat hidup Anda lebih mudah.
Yang terbaik untuk yang terakhir :Ini bisa lebih sederhana dengan fungsi agregat array_agg()
:
CREATE OR REPLACE FUNCTION for_example()
RETURNS integer AS
$func$
DECLARE
b "WEBHOST"[];
BEGIN
SELECT array_agg(tbl) INTO b FROM "WEBHOST" tbl;
RAISE NOTICE '%', b;
RETURN 33;
END
$func$ LANGUAGE plpgsql;