PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

PL/pgSQL функции:Как да върнете нормална таблица с множество колони с помощта на оператор за изпълнение

Как изпълнявате тази функция? Работи като оператор за избор.

Създайте таблица:public.users

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

Вмъкнете някои записи:

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

функция:моята_функция

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;

Сега можете да използвате с *

select * from my_function(1);

Резултат от заявката

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

Или също с имена на колони

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

Резултат

 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. PostgreSQL:Как да задам search_path на потребителско ниво?

  2. Как да избегнем повтарящи се тригерни повиквания в PostgreSQL 9.2.1

  3. Намиране и замяна на регулярни изрази в Postgres

  4. CTE и парадоксът за рождения ден

  5. Съхранявайте изхода на заявката за избор в един масив в postgres