sql >> Database >  >> RDS >> PostgreSQL

Een reeks rijen retourneren van de plpgsql-functie.

CREATE FUNCTION test() 
RETURNS my_table AS
$BODY$
DECLARE
    q4 my_table;
BEGIN
    -- add brackets to get a value 
    -- select row as one value, as q4 is of the type my_table
    -- and limit result to one row
    q4 := (SELECT my_table FROM my_table ORDER BY 1 LIMIT 1);
    RETURN q4;
END;$BODY$
-- change language to plpgsql
LANGUAGE plpgsql;
  • U kunt geen variabelen gebruiken in sql functies, gebruik plpgsql .
  • U kunt een enkele waarde aan een variabele toewijzen, terwijl select query geeft een reeks rijen terug.
  • Je moet een rij als één waarde selecteren, omdat de variabele van het samengestelde type is.

Voorbeeld van het gebruik van een lus:

DROP FUNCTION test();
CREATE FUNCTION test() 
-- change to SETOF to return set of rows, not a single row
RETURNS SETOF my_table AS
$BODY$
DECLARE
    q4 my_table;
BEGIN
    FOR q4 in
        SELECT * FROM my_table
    LOOP
        RETURN NEXT q4;
    END LOOP;
END;$BODY$
LANGUAGE plpgsql;

SELECT * FROM test();

Lees de documentatie over Terugkeren van een functie



  1. Een MariaDB Galera-cluster uitvoeren zonder tools voor containerorkestratie:deel één

  2. Tel de frequentie van array- of jsonb-object

  3. MySQL Query om willekeurige combinaties van twee tabellen te ontvangen

  4. Hoe reageert NOW() op transacties?