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

Funkcje PL/pgSQL:Jak zwrócić normalną tabelę z wieloma kolumnami za pomocą instrukcji execute?

Jak wykonujesz tę funkcję? Działa jak instrukcja select.

Utwórz tabelę:public.users

create table public.users (id int, firstname varchar, lastname varchar);

Wstaw kilka rekordów:

insert into public.users values (1, 'aaa','bbb'),(2,'ccc','ddd');

funkcja:moja_funkcja

CREATE OR REPLACE FUNCTION my_function(user_id integer) RETURNS TABLE(id integer, firstname character varying, lastname character varying) AS $$
    DECLARE
        ids INTEGER[];
    BEGIN
         ids := ARRAY[1,2];
         RETURN QUERY
             SELECT users.id, users.firstname, users.lastname
             FROM public.users
             WHERE users.id = ANY(ids);
    END;
$$ LANGUAGE plpgsql;

Teraz możesz używać z *

select * from my_function(1);

Wynik zapytania

 id | firstname | lastname 
----+-----------+----------
  1 | aaa       | bbb
  2 | ccc       | ddd

Lub z nazwami kolumn

select id,firstname,lastname from my_function(1);

Wynik

 id | firstname | lastname 
----+-----------+----------
  1 | aaa       | bbb
  2 | ccc       | ddd


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wykryj, czy wiersz został zaktualizowany lub wstawiony

  2. PostgreSQL, stan SQL:42601

  3. Aktualizacje wielowierszowe PostgreSQL w Node.js

  4. Jak dodać liczbę dni roboczych do podanej daty?

  5. Jak ustawić limit czasu instrukcji dla wykonania zapytania