Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mencipta Fungsi Postgres yang Mengembalikan Jadual Maya?

Bagaimanakah Saya Boleh Mencipta Fungsi Postgres yang Mengembalikan Jadual Maya?

Linda Hamilton
Linda Hamiltonasal
2025-01-04 04:20:39234semak imbas

How Can I Create a Postgres Function That Returns a Virtual Table?

Mengembalikan Jadual Maya daripada Fungsi dalam Postgres

Seseorang boleh mencipta fungsi Postgres yang mengembalikan jadual maya dengan skema tersuai. Struktur jadual jenis ini terdiri daripada bilangan lajur dan baris yang berbeza.

Sintaks Fungsi PL/pgSQL

Untuk versi PL/pgSQL moden (PostgreSQL 8.4 dan ke atas) , inilah sintaks:

CREATE OR REPLACE FUNCTION function_name()
  RETURNS TABLE (column1 data_type, column2 data_type, column3 data_type) AS
$func$
BEGIN
  RETURN QUERY VALUES
  (value1, value2, value3),
  (value4, value5, value6);

END;
$func$  LANGUAGE plpgsql IMMUTABLE ROWS number_of_rows;

Perkara Penting:

  • Gunakan RETURNS TABLE untuk menentukan jenis baris tersuai.
  • Gunakan RETURN QUERY NILAI untuk isikan jadual.
  • Gunakan VALUES untuk memasukkan berbilang baris secara manual.
  • Laraskan bilangan_baris mengikut saiz jadual yang diketahui.
  • Alih keluar petikan berganda daripada pengecam undang-undang, kecuali untuk kes khas.
  • Tetapkan turun naik kepada TIDAK BOLEH DIUBAH jika hasilnya tidak pernah perubahan.

Fungsi SQL Sintaks

Untuk kes mudah, gunakan fungsi SQL ini:

CREATE OR REPLACE FUNCTION function_name()
RETURNS TABLE (column1 data_type, column2 data_type, column3 data_type) AS
$func$
SELECT *
FROM (
  VALUES
    (value1, value2, value3),
    (value4, value5, value6)
) AS table_name(column1, column2, column3);

$func$  LANGUAGE sql IMMUTABLE ROWS number_of_rows;

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencipta Fungsi Postgres yang Mengembalikan Jadual Maya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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