我只是有一个包含国家列表及其 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"
我知道我可以定义一个类型,然后像游标一样遍历记录集,但是 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 setof [table name]”。但它似乎不是最灵活的。如果我尝试返回几个表的连接,它就会崩溃。