gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 11:16:38 26 4
gpt4 key购买 nike

我只有一个包含国家列表及其 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]”。但它似乎不是最灵活的。如果我尝试返回多个表的连接,它就会分崩离析。

最佳答案

还有使用 RETURNS TABLE(...) 的选项(如 in the PostgreSQL Manual 所述),我个人更喜欢:

CREATE OR REPLACE FUNCTION get_countries()
RETURNS TABLE(
country_code text,
country_name text
)
AS $$
SELECT country_code, country_name FROM country_codes
$$ LANGUAGE sql;

这实际上与使用 SETOF tablename 相同,但内联声明表结构而不是引用现有对象,因此连接等仍然有效。

关于sql - 从 PostgreSQL 存储过程返回记录集的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2036093/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com