Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengembalikan Jadual Maya daripada Fungsi Postgres?

Bagaimana untuk Mengembalikan Jadual Maya daripada Fungsi Postgres?

Mary-Kate Olsen
Lepaskan: 2024-12-27 10:28:10
asal
795 orang telah melayarinya

How to Return a Virtual Table from a Postgres Function?

Mengembalikan Jadual Maya daripada Fungsi dalam Postgres

Dalam Postgres, mencipta jadual maya tersuai dengan berbilang baris dan lajur menggunakan fungsi memerlukan khusus sintaks. Artikel ini menunjukkan cara menulis fungsi dengan betul yang mengembalikan set rekod yang menyerupai jadual maya.

Sintaks Betul

Untuk menentukan fungsi yang mengembalikan jadual maya dengan tiga lajur integer, gunakan PL/pgSQL berikut kod:

CREATE OR REPLACE FUNCTION f_foo()
  RETURNS TABLE (a int, b int, c int) AS
$func$
BEGIN
RETURN QUERY VALUES
  (1,2,3)
, (3,4,5)
, (3,4,5)
;
END
$func$  LANGUAGE plpgsql IMMUTABLE ROWS 3;
Salin selepas log masuk

Penjelasan

  • JADUAL PEMULANGAN: Menunjukkan bahawa fungsi akan mengembalikan jenis baris ad-hoc.
  • KEMBALIKAN NILAI PERTANYAAN: Digunakan untuk mengembalikan berbilang baris menggunakan ungkapan VALUES.
  • ROWS 3: Mengisytiharkan bilangan baris yang dikembalikan, membantu perancang pertanyaan dalam mengoptimumkan pelaksanaan.
  • TIDAK ubah: Menentukan bahawa hasilnya tidak pernah berubah, membenarkan prestasi pengoptimuman.

Pilihan Alternatif

SQL Ringkas: Untuk senario mudah, pernyataan SQL biasa boleh mencukupi:

VALUES (1,2,3), (3,4,5), (3,4,5)
Salin selepas log masuk

Fungsi SQL: Anda juga boleh membalut pernyataan di atas dalam fungsi SQL:

CREATE OR REPLACE FUNCTION f_foo()
   RETURNS TABLE (a int, b int, c int) AS
$func$
   VALUES (1, 2, 3)
        , (3, 4, 5)
        , (3, 4, 5);
$func$  LANGUAGE sql IMMUTABLE ROWS 3;
Salin selepas log masuk

Penggunaan

Untuk mendapatkan semula jadual maya:

SELECT * FROM f_foo();
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mengembalikan Jadual Maya daripada Fungsi Postgres?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan