gpt4 book ai didi

postgresql - 我如何从过程中返回所有字段?

转载 作者:行者123 更新时间:2023-11-29 14:09:35 24 4
gpt4 key购买 nike

现在我有以下程序:

CREATE OR REPLACE FUNCTION find_city_by_name(match varchar) RETURNS TABLE(city_name varchar) LANGUAGE plpgsql as $$

BEGIN
RETURN QUERY WITH r AS (
SELECT short_name FROM geo_cities WHERE short_name ILIKE CONCAT(match, '%')
)
SELECT r.short_name FROM r;
END;

$$

我想返回所有字段 (*)(不仅是 short_name)。我的程序需要更改什么?

最佳答案

这是一个简化的(没有 WITHlanguage sql)版本,我在对相邻答案的评论中提到过:

create or replace function find_city_by_name(text)
returns table(city_name varchar, long_name varchar)
as $$
select * from geo_cities where short_name ilike $1 || '%';
$$ language sql;

此外,您可能会发现使用 SETOF geo_cities 引用定义函数签名的 geo_cities 表本身更方便:

create or replace function find_city_by_name(text)
returns setof geo_cities
as $$
select * from geo_cities where short_name ilike $1 || '%';
$$ language sql;

-- 这将允许您更改 geo_cities 表的结构,而无需更改函数的定义。

关于postgresql - 我如何从过程中返回所有字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45046385/

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