Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengembalikan Medan Jadual Berbilang sebagai Rekod Tunggal dalam PostgreSQL menggunakan PL/pgSQL?

Bagaimana untuk Mengembalikan Medan Jadual Berbilang sebagai Rekod Tunggal dalam PostgreSQL menggunakan PL/pgSQL?

Patricia Arquette
Patricia Arquetteasal
2025-01-03 10:55:40541semak imbas

How to Return Multiple Table Fields as a Single Record in PostgreSQL using PL/pgSQL?

Mengembalikan Medan Jadual Berbilang sebagai Rekod dalam PostgreSQL dengan PL/pgSQL

Apabila bekerja dengan PL/pgSQL, mengembalikan berbilang medan daripada beberapa jadual sebagai rekod boleh dicapai dengan menggunakan jenis data RECORD. Ini membenarkan penciptaan jenis data komposit yang boleh menyimpan medan dengan jenis data yang berbeza.

Kod Contoh

Pertimbangkan contoh diubah suai berikut, yang menangani kerumitan tambahan untuk mendapatkan semula medan daripada baris berasingan dalam jadual:

CREATE TABLE user (id int, school_id int, name varchar(32));

CREATE TYPE my_type AS (
  user1_id   int,
  user1_name varchar(32),
  user2_id   int,
  user2_name varchar(32)
);

CREATE OR REPLACE FUNCTION get_two_users_from_school(schoolid int)
  RETURNS my_type AS $$
DECLARE
  result my_type;
  temp_result user;
BEGIN
  SELECT id, name INTO temp_result FROM user WHERE school_id = schoolid ORDER BY id ASC LIMIT 2;
  
  result.user1_id := temp_result[1].id;
  result.user1_name := temp_result[1].name;
  
  IF temp_result[2].id IS NOT NULL THEN
    result.user2_id := temp_result[2].id;
    result.user2_name := temp_result[2].name;
  END IF;
  
  RETURN result;
END
$$ language plpgsql;

Dalam contoh ini, fungsi get_two_users_from_school mengembalikan rekod jenis_saya dengan empat medan: user1_id, user1_name, user2_id dan user2_name. Ia mendapatkan semula dan menyusun data daripada jadual pengguna, meratakan baris menjadi satu rekod yang padat.

Struktur Rekod Dinamik

Perhatikan bahawa rekod yang dikembalikan tidak sepenuhnya terhad kepada bilangan medan tertentu. Anda boleh mengembalikan bilangan medan sewenang-wenangnya berdasarkan data yang diambil daripada pangkalan data.

Penggunaan

Untuk menggunakan fungsi, anda boleh melaksanakan pertanyaan berikut:

SELECT * FROM get_two_users_from_school(123);

Ini akan mengembalikan rekod dengan butiran pengguna daripada ID sekolah yang ditentukan.

Atas ialah kandungan terperinci Bagaimana untuk Mengembalikan Medan Jadual Berbilang sebagai Rekod Tunggal dalam PostgreSQL menggunakan PL/pgSQL?. 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