


Bagaimana untuk Mengembalikan Pelbagai Medan sebagai Rekod Tunggal dalam PostgreSQL menggunakan PL/pgSQL?
Jan 04, 2025 am 05:54 AMMengembalikan Pelbagai Medan sebagai Rekod dalam PostgreSQL dengan PL/pgSQL
Dalam PL/pgSQL, mencipta fungsi yang mengembalikan berbilang medan daripada berbeza jadual sebagai satu rekod boleh dicapai melalui jenis REKOD. Begini caranya:
Jenis REKOD
Isytihar jenis REKOD yang mentakrifkan medan yang ingin anda kembalikan. Contohnya:
CREATE TYPE person AS ( name text, age integer, city text );
Menyoal Jadual Berbeza
Dalam fungsi PL/pgSQL anda, gunakan pertanyaan untuk mendapatkan semula medan daripada jadual yang berbeza. Sebagai contoh, jika anda mempunyai pengguna jadual, alamat dan bandar, anda boleh menulis:
SELECT u.name, u.age, a.city FROM users AS u JOIN addresses AS a ON u.address_id = a.id WHERE u.user_id = @user_id;
Menyimpan Hasil Pertanyaan
Simpan hasil pertanyaan dalam pembolehubah rekod . Jenis REKOD membolehkan anda mengakses medan mengikut nama lajur:
DECLARE result person; SELECT u.name, u.age, a.city INTO result;
Mengembalikan Rekod
Akhir sekali, kembalikan rekod hasil:
RETURN result;
Mengendalikan Keputusan Tidak Teratur
Jika anda boleh mendapatkan semula bilangan baris yang tidak konsisten daripada jadual yang berbeza, gunakan fungsi coalesce() untuk memberikan nilai sandaran:
SELECT coalesce(u.name, 'Unknown'), coalesce(u.age, 0), coalesce(a.city, 'N/A') INTO result;
Contoh dengan Subquery
Jika data yang anda perlukan kembalikan disimpan sebagai baris berasingan dalam satu jadual, gunakan subquery:
CREATE FUNCTION get_two_users_from_school(schoolid int) RETURNS my_type AS $$ DECLARE result my_type; BEGIN -- Select first two users from school SELECT id, name FROM user WHERE school_id = schoolid ORDER BY id LIMIT 2 INTO result; RETURN result; END $$ language plpgsql;
Pendekatan ini membolehkan anda "meratakan" baris menjadi satu struktur rekod.
Atas ialah kandungan terperinci Bagaimana untuk Mengembalikan Pelbagai Medan sebagai Rekod Tunggal dalam PostgreSQL menggunakan PL/pgSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Kurangkan penggunaan memori MySQL di Docker

Bagaimana anda mengubah jadual di MySQL menggunakan pernyataan Alter Table?

Cara menyelesaikan masalah MySQL tidak dapat membuka perpustakaan bersama

Apa itu SQLite? Gambaran Keseluruhan Komprehensif

Jalankan MySQL di Linux (dengan/tanpa bekas podman dengan phpmyadmin)

Menjalankan Pelbagai Versi MySQL di MacOS: Panduan Langkah demi Langkah

Bagaimanakah saya menjamin MySQL terhadap kelemahan biasa (suntikan SQL, serangan kekerasan)?

Bagaimana saya mengkonfigurasi penyulitan SSL/TLS untuk sambungan MySQL?
