sql - 将 ResultSet 传递给 Postgresql 函数

标签 sql postgresql plpgsql postgresql-9.2

是否可以将 postgres 查询的结果作为输入传递给另一个函数?

作为一个非常人为的例子,假设我有一个类似的查询

SELECT id, name
FROM users
LIMIT 50

我想创建一个函数 my_function,它获取第一个查询的结果集并返回最小 ID。这在 pl/pgsql 中可能吗?

SELECT my_function(SELECT id, name FROM Users LIMIT 50); --returns 50

最佳答案

您可以使用游标,但这对于计算最小值来说非常不切实际。

我会为此目的使用临时表,并传递表名以在动态SQL中使用:

CREATE OR REPLACE FUNCTION f_min_id(_tbl regclass, OUT min_id int) AS 
$func$
BEGIN

EXECUTE 'SELECT min(id) FROM ' || _tbl
INTO min_id;

END  
$func$ LANGUAGE plpgsql;

调用:

CREATE TEMP TABLE foo ON COMMIT DROP AS
SELECT id, name
FROM   users
LIMIT  50;

SELECT f_min_id('foo');

要点

-> SQLfiddle demo

关于sql - 将 ResultSet 传递给 Postgresql 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18219991/

相关文章:

sql - 如何读取/写入 Easy Dental 2010 DAT 文件?

python - 在 CentOS 与 python 2.6 上针对 information_schema 执行 "SELECT"语句时,psycopg2 挂起

c# - SQL按照PK FK关系递归地从多个表中复制行

sql - PL/pgSQL 中的动态多维数组

sql - 在 PostgreSQL 中创建函数时出现问题 "ERROR: syntax error at or near "ROWTYPE""

sql - 将数据从表复制到执行 INSERT 或 UPDATE 的表

ruby-on-rails - 在 Rails Postgres 的 JSONB 数据类型中使用 where 查询

postgresql - 我可以找到 "close"的文本以使用 PostgreSQL 进行某些查询吗?

sql - 自动维护父表中 child 的总数

sql - 执行作为值提供的语句