PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana cara mengembalikan beberapa baris dari fungsi PL/pgSQL?

Setelah memperbaiki bug @Pavel menunjukkan , juga tentukan jenis pengembalian . Anda dengan benar, atau Anda harus memberikan daftar definisi kolom dengan setiap panggilan.

Panggilan ini:

SELECT * FROM get_object_fields()

... mengasumsikan bahwa Postgres tahu cara memperluas * . Karena Anda mengembalikan catatan anonim, Anda mendapatkan pengecualian:

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

Salah satu cara (dari beberapa) untuk memperbaikinya adalah dengan 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;

Bekerja untuk fungsi SQL sama saja.

Terkait:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menggunakan (menginstal) dblink di PostgreSQL?

  2. Django get_or_create gagal menyetel bidang saat digunakan dengan iexact

  3. Bagaimana cara melindungi dari injeksi SQL ketika klausa WHERE dibangun secara dinamis dari formulir pencarian?

  4. MENGEMBALIKAN data dari tampilan yang dapat diperbarui tidak berfungsi?

  5. Mengintegrasikan PostgreSQL Dengan Sistem Otentikasi