PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak zwrócić wiersze wyników zapytania w funkcji PostgreSQL?

Sposoby deklarowania funkcji zwracającej zestaw, które w tej chwili pamiętam:

--example 1
create or replace function test() returns SETOF RECORD
as $$
begin
    RETURN QUERY SELECT * FROM generate_series(1,100);
end;
$$ language plpgsql;
--test output
select * from test() AS a(b integer)

--example 2
create or replace function test2() returns TABLE (b integer)
as $$
begin
    RETURN QUERY SELECT * FROM generate_series(1,100);
end;
$$ language plpgsql;
--test output
select * from test2()

--example 3
create or replace function test3() returns SETOF RECORD
as $$
declare
  r record;
begin
    FOR r IN SELECT * FROM generate_series(1,100) LOOP
      RETURN NEXT r;
    END LOOP;
end;
$$ language plpgsql;
--test output
select * from test3() AS a(b integer);

--example 4
create or replace function test4() returns setof record
as $$
    SELECT * FROM generate_series(1,100)
$$ language sql;
--test output
select * from test4() AS a(b integer);

--example 5
create or replace function test5() returns setof integer
as $$
begin
    RETURN QUERY SELECT * FROM generate_series(1,100);
end;
$$ language plpgsql;
--test output
select * from test5()

--example 6
create or replace function test6(OUT b integer, OUT c integer) RETURNS SETOF record
as $$
begin
    RETURN QUERY SELECT b.b, b.b+3 AS c FROM generate_series(1,100) AS b(b);
end;
$$ language plpgsql;
--test output
select * from test6()



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie SQL „od wielu do wielu” umożliwiające wybranie wszystkich obrazów oznaczonych określonymi słowami

  2. Problemy z tabelą krzyżową/pivotem w PostgreSQL

  3. Indeksowanie SQL na varchar

  4. Weryfikowanie kopii zapasowych PostgreSQL w Docker

  5. knex:jaki jest właściwy sposób tworzenia tablicy z wyników?