【发布时间】:2011-01-03 09:54:42
【问题描述】:
我只有一个包含国家列表及其 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 setof [table name]”。但它似乎不是最灵活的。如果我尝试返回几个表的连接,它就会崩溃。
【问题讨论】:
标签: sql postgresql stored-procedures plpgsql