sql >> Database teknologi >  >> RDS >> PostgreSQL

PL/pgSQL-funktioner:Sådan returneres en normal tabel med flere kolonner ved hjælp af en execute-sætning

Hvordan udfører du den funktion? Det fungerer som et udvalgt udsagn.

Opret en tabel:public.users

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

Indsæt nogle poster:

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

funktion:min_funktion

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;
 

Nu kan du bruge med *

select * from my_function(1);
 

Resultat af forespørgsel

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

Eller også med kolonnenavne

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

Resultat

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

  1. Oracle lag mellem commit og select

  2. Sådan autoinkrementeres en varchar

  3. Eksporter en hel SQLite-database til en SQL-fil

  4. Brug af automatisering til at fremskynde frigivelsestests på Galera Cluster med ClusterControl