sql >> Databáze >  >> RDS >> PostgreSQL

Funkce PL/pgSQL:Jak vrátit normální tabulku s více sloupci pomocí příkazu execute

Jak tuto funkci provádíte? Funguje jako výběrový příkaz.

Vytvořte tabulku:public.users

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

Vložte nějaké záznamy:

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

funkce:moje_funkce

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;

Nyní můžete použít s *

select * from my_function(1);

Výsledek dotazu

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

Nebo také s názvy sloupců

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

Výsledek

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


  1. Jak používat klauzuli Execute Immediate with INTO v databázi Oracle

  2. Získání sloupce z .sqlite obsahujícího více tabulek s více sloupci

  3. Příklady DAYOFYEAR() – MySQL

  4. Vyhledejte hodnotu ve sloupci hodnota, která ukládá hodnoty oddělené čárkami