加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

从PostgreSQL存储过程返回记录集的最简单方法是什么?

发布时间:2020-12-13 16:19:11 所属栏目:百科 来源:网络整理
导读:我只是有一个表格,其中包含国家列表及其ISO国家/地区代码.我将查询包装在存储过程(也称为函数)中,例如: CREATE OR REPLACE FUNCTION get_countries( ) RETURNS setof record AS $$ SELECT country_code,country_name FROM country_codes$$LANGUAGE sql; 我
我只是有一个表格,其中包含国家列表及其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 [table name]”.但它似乎并不是最灵活的.如果我尝试返回多个表的连接,它就会崩溃.

您应该能够使用输出参数,如下所示:
CREATE OR REPLACE FUNCTION get_countries(country_code OUT text,country_name OUT text)
RETURNS setof record
AS $$SELECT country_code,country_name FROM country_codes $$
LANGUAGE sql;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读