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
n'est généralement pas nécessaire. Normalement, le type de ligne associé à une table est disponible en tant que type du même nom.
Et ne faites pas citez le nom de la langue.
Et vous ne pouvez pas simplement avoir des appels de fonction autonomes dans plpgsql . Utiliser un devoir à la place.
Ce n'est pas non plus une bonne idée d'utiliser des identifiants CaMeL-case dans Postgres. Utilisez des identifiants légaux en minuscules pour vous simplifier la vie.
Le meilleur pour la fin :Cela peut être beaucoup plus simple avec la fonction d'agrégation 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;