postgresql - `RETURN TABLE(columns)` 怎么能等同于使用一个或多个 `OUT` 参数,并将函数标记为返回 `SETOF` 记录?
问题描述
PostgreSQL 文件说
还有另一种方法可以将 SQL 函数声明为返回一个集合,即使用语法
RETURNS TABLE(columns)
. 这相当于使用一个或多个OUT
参数加上将函数标记为返回SETOF
记录(或SETOF
单个输出参数的类型,视情况而定)。
你能解释一下如何RETURN TABLE(columns)
等同于:
使用一个或多个
OUT
参数,以及将函数标记为返回
SETOF
记录(或SETOF
单个输出参数的类型,视情况而定)
谢谢。
解决方案
这些函数是等价的:
create type my_type as (id int, str text);
create or replace function function_returning_setof(n int)
returns setof my_type language sql as $$
select i, i::text
from generate_series(1, n) i;
$$;
create or replace function function_returning_table(n int)
returns table(id int, str text) language sql as $$
select i, i::text
from generate_series(1, n) i;
$$;
create or replace function function_with_out_params(in n int, out id int, out str text)
returns setof record language sql as $$
select i, i::text
from generate_series(1, n) i;
$$;
推荐阅读
- active-directory - 使用 cfldap 将用户添加到 AD
- python - div id 中的“Django”类别
- laravel - Laravel 背包 - 集成 CAS
- python - 在 Python 中使用 BeautifulSoup,它返回 None 包围 '
- javascript - 处理 google.maps.infoWindow 内的按钮事件 - ReactJS
- html - 使用 VUE 更改元素
- python - 如何将 -f 要求添加到 pip requirements.txt 文件
- python - Python - 即时编写 IDAT 块以进行可视化
- sql - 尝试过滤 JSON 字段上的 SQL 查询
- php - 当有子类别时,根据产品类别在 WooCommerce 单品上显示内容