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
geralmente não é necessário. Normalmente, o tipo de linha associado de uma tabela está disponível como tipo de mesmo nome. E não citar o nome do idioma.
E você não pode apenas ter chamadas de função autônomas em plpgsql . Usando uma atribuição em vez disso.
Também não é uma boa ideia usar identificadores de caso CaMeL no Postgres. Use identificadores legais em letras minúsculas para facilitar sua vida.
O melhor para o final :Isso pode ser muito mais simples com a função 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;