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 no es necesario. Normalmente, el tipo de fila asociado de una tabla está disponible como tipo del mismo nombre.
Y no cita el nombre del idioma.
Y no puede simplemente tener llamadas de funciones independientes en plpgsql . Usar una tarea en su lugar.
Tampoco es una buena idea usar identificadores de mayúsculas y minúsculas CaMeL en Postgres. Utilice identificadores legales en minúsculas para facilitarle la vida.
Lo mejor para el final :Esto puede ser mucho más simple con la función agregada 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;