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

Bagaimana cara mendeklarasikan array rowtype dalam fungsi PostgreSQL?

CREATE OR REPLACE FUNCTION for_example()
  RETURNS integer AS
$func$
DECLARE
   r "WEBHOST";
   b "WEBHOST"[];         -- this works
BEGIN
   FOR r IN 
      SELECT * FROM "WEBHOST"
   LOOP
      b := b || r;        -- this, too
   END LOOP;

   RAISE NOTICE '%', b;   -- get feedback
   RETURN 33;
END
$func$  LANGUAGE plpgsql; -- and lose the quotes

%rowtype umumnya tidak diperlukan. Biasanya, tipe baris tabel yang terkait tersedia sebagai tipe dengan nama yang sama.

Dan jangan jangan kutip nama bahasanya.

Dan Anda tidak bisa hanya memiliki panggilan fungsi yang berdiri sendiri di plpgsql . Menggunakan tugas sebagai gantinya.

Ini juga bukan ide yang baik untuk menggunakan pengidentifikasi kasus CaMeL di Postgres. Gunakan pengenal legal dengan huruf kecil untuk membuat hidup Anda lebih mudah.

Yang terbaik untuk yang terakhir :Ini bisa lebih sederhana dengan fungsi agregat array_agg() :

CREATE OR REPLACE FUNCTION for_example()
  RETURNS integer AS
$func$
DECLARE
   b "WEBHOST"[];
BEGIN
   SELECT array_agg(tbl) INTO b FROM "WEBHOST" tbl;       

   RAISE NOTICE '%', b;
   RETURN 33;
END
$func$  LANGUAGE plpgsql;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Rel menunggu migrasi di rake db:test:prepare

  2. Cara yang tepat untuk membubuhi keterangan bidang peringkat untuk kumpulan kueri

  3. Bagaimana cara mengurangi jumlah koneksi menggunakan SQLAlchemy + postgreSQL?

  4. Ekstrak hari dalam seminggu dari bidang tanggal di PostgreSQL dengan asumsi minggu dimulai pada hari Senin

  5. Menyimpan cap waktu di Postgres berdasarkan tanggal Java