Функция PostgreSQL, возвращающая несколько наборов результатов

Я не думаю, что вы можете сделать это через API, но вы можете через CLI Heroku :

Вы можете просмотреть количество оставшихся свободных динамов используя CLI. Вы можете сделать это, запустив heroku ps в одном из ваших бесплатных приложений.

heroku ps -a 

650 free dyno hours (65%) used
350 hours remaining

=== web (Free): bundle exec puma -C config/puma.rb (1)
web.1: idle 2016/05/16 15:51:45 -0700 (~ 22h ago)
blockquote>

Если вы действительно хотите проверить это автоматически, вы можете запланировать запуск и анализ выходных данных, хотя я не уверен, что рекомендую это.

Эта информация также видна на веб-панели (см. Ту же ссылку).

Справочный центр Heroku не предлагает ничего другого .

17
задан Erwin Brandstetter 18 February 2014 в 14:25
поделиться

3 ответа

CREATE OR REPLACE FUNCTION "pr_GetCustomersAndOrders"()
RETURNS SETOF refcursor AS
$BODY$DECLARE
customerRC refcursor;
orderRC refcursor;
BEGIN
open customerRC FOR
SELECT * FROM customers;
RETURN NEXT customerRC;

open orderRC FOR
SELECT * FROM orders;
RETURN NEXT orderRC;
RETURN;
END;$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION "pr_GetCustomersAndOrders"() OWNER TO postgres;

Iow, используя refcursors:)

8
ответ дан 30 November 2019 в 13:40
поделиться

Если first_table и second_table имеют одинаковую разметку, вы также можете просто используйте

SELECT * FROM first_table WHERE ...
UNION ALL
SELECT * FROM second_table WHERE ...
] 1274]
0
ответ дан 30 November 2019 в 13:40
поделиться

Да.

Пример:

test=# create function x () returns setof integer language plpgsql as $$ begin return next 1; return next 2; end $$;
CREATE FUNCTION
test=# select * from x();
 x 
---
 1
 2
(2 rows)

Конечно, вы можете использовать существующую таблицу / представление или пользовательский тип для возвращаемого типа.

Пример с использованием языка SQL:

test=# create table customer (name varchar, birth_date date);
CREATE TABLE
test=# create function y () returns setof customer language sql as $$ 
select * from customer
union all
select * from customer
$$;
CREATE FUNCTION
test=# insert into customer values ('joe', now()::date);
INSERT 0 1
test=# insert into customer values ('jill', now()::date);
INSERT 0 1
test=# select * from y();
 name | birth_date 
------+------------
 joe  | 2009-04-16
 jill | 2009-04-16
 joe  | 2009-04-16
 jill | 2009-04-16
(4 rows)

Смотрите здесь для получения документации

-1
ответ дан 30 November 2019 в 13:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: