Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengembalikan Medan Jadual Berbilang sebagai Rekod Tunggal dalam PostgreSQL menggunakan 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!