我有一张包含国家和它们的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,然后像游标一样遍历记录集,但是在较新版本的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 [表名]"。但这似乎不是最灵活的。如果我尝试返回几个表的连接,它就会崩溃。