sql >> Databasteknik >  >> RDS >> PostgreSQL

PL/pgSQL-funktioner:Hur man returnerar en normal tabell med flera kolumner med hjälp av en execute-sats

Hur utför du den funktionen? Det fungerar som ett urvalsuttryck.

Skapa en tabell:public.users

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

Infoga några 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 använda med *

select * from my_function(1);

Resultat av förfrågan

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

Eller med kolumnnamn också

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

Resultat

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


  1. Mysql räknar instanser av delsträng, sortera sedan efter

  2. Python, Ruby och Golang:A Web Service Application Comparison

  3. Referensdatamönstret:utbyggbart och flexibelt

  4. Hur man ställer in teckenuppsättningen och sorteringen av en tabell i MySQL