PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Zwracanie zestawu wierszy z funkcji plpgsql.

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;
  • Nie możesz używać zmiennych w sql funkcje, użyj plpgsql .
  • Możesz przypisać jedną wartość do zmiennej, podczas gdy select query zwraca zestaw wierszy.
  • Musisz wybrać wiersz jako jedną wartość, ponieważ zmienna jest typu złożonego.

Przykład użycia pętli:

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

Przeczytaj dokumentację dotyczącą powrotu z funkcji



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ograniczenie Postgres zapewniające obecność jednej kolumny z wielu?

  2. Sequelize Error:Relacja nie istnieje

  3. użyć try/except z psycopg2 lub z zamknięciem?

  4. Jak mogę oznaczyć tabelę jako tylko do odczytu?

  5. Jak ustawić funkcję PostgreSQL jako domyślną wartość w GORM?