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
generalmente non è necessario. Normalmente, il tipo di riga associato di una tabella è disponibile come tipo con lo stesso nome.
E non cita il nome della lingua.
E non puoi semplicemente avere chiamate di funzioni autonome in plpgsql . Usando invece un compito.
Inoltre, non è una buona idea utilizzare gli identificatori di maiuscole e minuscole CaMeL in Postgres. Usa identificatori legali in minuscolo per semplificarti la vita.
Il migliore per ultimo :Questo può essere molto più semplice con la funzione di aggregazione 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;