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
通常は必要ありません。通常、テーブルの関連する行タイプは、同じ名前のタイプとして使用できます。
そして、しない 言語名を引用してください。
また、plpgsql でスタンドアロンの関数呼び出しを行うことはできません。 。代わりに割り当てを使用します。
また、PostgresでCaMeLケース識別子を使用することもお勧めしません。法的な小文字の識別子を使用して、生活を楽にしてください。
最後に最適 :これは、集計関数 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;