国とその ISO 国コードのリストを含むテーブルがあるだけです。次のようなストアド プロシージャ (別名関数) でクエリをラップしています。
CREATE OR REPLACE FUNCTION get_countries(
) RETURNS setof record AS $$
SELECT country_code, country_name FROM country_codes
$$ LANGUAGE sql;
私が得ているエラーは次のとおりです。
ERROR: a column definition list is required for functions returning "record"
TYPE を定義してからカーソルのようにレコードセットをループできることはわかっていますが、IIRC には PostgreSQL の新しいバージョン (私は 8.4.3 を使用しています) でこれを行うためのより良い方法がありますが、試してみようとしています。覚えておいてください。
編集:
これは機能します:
CREATE OR REPLACE FUNCTION get_countries(
) RETURNS setof country_codes AS $$
SELECT country_code, country_name FROM country_codes
$$ LANGUAGE sql;
「[テーブル名] の RETURNS セット」に注意してください。しかし、それは最も柔軟ではないようです。複数のテーブルの結合を返そうとすると、バラバラになります。