PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да върна множество редове от PL/pgSQL функция?

След коригиране на грешките @Pavel посочи , също така дефинирайте своя тип връщане правилно, или трябва да предоставите списък с дефиниции на колони с всяко повикване.

Това обаждане:

SELECT * FROM get_object_fields()

... предполага, че Postgres знае как да разшири * . Тъй като връщате анонимни записи, получавате изключение:

ERROR:  a column definition list is required for functions returning "record"

Един от начините (от няколко) да поправите това е с RETURNS TABLE (Postgres 8.4+):

CREATE OR REPLACE FUNCTION get_object_fields()
  RETURNS TABLE (department_id int) AS 
$func$
BEGIN
   RETURN QUERY
   SELECT department_id
   FROM   fact_department_daily 
   WHERE  report_date = '2013-06-07';
END
$func$ LANGUAGE plpgsql;

Работи за SQL функции по същия начин.

Свързани:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да пропуснете с други допълнителни записи, когато се достигне условие?

  2. Вземете резултат от заявка в изявление DO

  3. Паралелизмът идва до ВАКУУМ

  4. Как да върна резултата от временната таблица във функцията postgresql

  5. Стойността за грешка не съществува - проблем с postgresql INSERT INTO