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

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

Patricia Arquette
Lepaskan: 2025-01-04 05:54:37
asal
738 orang telah melayarinya

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

Mengembalikan 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
);
Salin selepas log masuk

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;
Salin selepas log masuk

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;
Salin selepas log masuk

Mengembalikan Rekod

Akhir sekali, kembalikan rekod hasil:

RETURN result;
Salin selepas log masuk

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;
Salin selepas log masuk

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;
Salin selepas log masuk

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!

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