sql >> Databasteknik >  >> RDS >> PostgreSQL

Returnerar uppsättning rader från plpgsql-funktionen.

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;
  • Du kan inte använda variabler i sql funktioner, använd plpgsql .
  • Du kan tilldela ett enda värde till en variabel, medan select query returnerar uppsättning rader.
  • Du måste välja en rad som ett värde, eftersom variabeln är av sammansatt typ.

Exempel på användning av en loop:

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();

Läs dokumentationen om återvända från en funktion



  1. Är JPA (EclipseLink) anpassade typer möjliga?

  2. Förstå SQL Server-säkerhetsfunktionen HAS_Permis_BY_Name och dess användningsfall

  3. MySQL:Total GROUP BY WITH ROLLUP nyfikenhet

  4. Ersätt null med 0 i MySQL