Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengembalikan Keputusan Pertanyaan SELECT dengan betul daripada Fungsi PostgreSQL?

Bagaimana untuk Mengembalikan Keputusan Pertanyaan SELECT dengan betul daripada Fungsi PostgreSQL?

Susan Sarandon
Lepaskan: 2025-01-17 10:32:14
asal
122 orang telah melayarinya

How to Correctly Return SELECT Query Results from a PostgreSQL Function?

Kembalikan hasil pertanyaan SELECT dalam fungsi PostgreSQL

Dalam PostgreSQL, menggunakan fungsi untuk mengembalikan hasil pertanyaan SELECT memerlukan pemahaman sintaks yang sesuai dan jenis pulangan. Kami akan memeriksa salah satu fungsi yang disediakan dan membimbing anda tentang cara mendapatkan semula hasil pertanyaan dengan betul.

Fungsi yang dimaksudkan wordFrequency pada masa ini tidak mempunyai pernyataan pulangan yang betul. Untuk menyelesaikan masalah ini, kami akan menggunakan sintaks RETURN QUERY.

Fungsi yang diperbetulkan:

<code class="language-sql">CREATE OR REPLACE FUNCTION wordFrequency(_max_tokens integer)
RETURNS SETOF RECORD AS $$
BEGIN
  RETURN QUERY
  SELECT text, count(*), 100.0 / _max_tokens * count(*) AS ratio
  FROM (
    SELECT text
    FROM token
    WHERE chartype = 'ALPHABETIC'
    LIMIT _max_tokens
  ) AS tokens
  GROUP BY text
  ORDER BY count DESC;
END;
$$ LANGUAGE plpgsql;</code>
Salin selepas log masuk

Isi penting:

    Sintaks
  • RETURN QUERY membolehkan anda mengembalikan secara langsung hasil pertanyaan SELECT.
  • SETOF RECORD menunjukkan bahawa fungsi akan mengembalikan satu set rekod.
  • Parameter output dalam badan fungsi (seperti text dan count(*)) mesti sepadan dengan nama lajur dalam pertanyaan. Kami menambah AS ratio untuk memberikan nama yang tidak jelas pada lajur ketiga dan mengelakkan kekaburan. Pada masa yang sama, tukar 100 kepada 100.0 untuk mengelakkan kehilangan ketepatan yang disebabkan oleh pembahagian integer.

Fungsi panggilan:

<code class="language-sql">SELECT * FROM wordFrequency(123);</code>
Salin selepas log masuk

Selain itu, menggunakan RETURNS TABLE untuk mentakrifkan jenis pemulangan secara eksplisit adalah lebih praktikal daripada mengembalikan rekod generik kerana ia menghapuskan keperluan untuk menentukan senarai definisi lajur untuk setiap panggilan fungsi. Contohnya:

<code class="language-sql">CREATE OR REPLACE FUNCTION wordFrequency(_max_tokens integer)
RETURNS TABLE (text TEXT, cnt BIGINT, ratio NUMERIC) AS $$
BEGIN
  RETURN QUERY
  SELECT text, count(*), 100.0 / _max_tokens * count(*)
  FROM (
    SELECT text
    FROM token
    WHERE chartype = 'ALPHABETIC'
    LIMIT _max_tokens
  ) AS tokens
  GROUP BY text
  ORDER BY count DESC;
END;
$$ LANGUAGE plpgsql;</code>
Salin selepas log masuk

Nota Penting:

  • Pilih nama parameter output dengan berhati-hati untuk mengelakkan konflik dengan nama lajur dalam pertanyaan.
  • Gunakan kedudukan ordinal item dalam senarai PILIH atau ulangi ungkapan dalam ORDER BY untuk menyelesaikan kemungkinan konflik penamaan.
  • Pertimbangkan untuk menggunakan jenis data berangka atau mendarab sebelum membahagi dalam pengiraan yang melibatkan integer untuk meminimumkan ralat pembundaran.

Dengan mengikut langkah ini, anda boleh menggunakan fungsi dalam PostgreSQL dengan cekap untuk mengembalikan hasil pertanyaan SELECT.

Atas ialah kandungan terperinci Bagaimana untuk Mengembalikan Keputusan Pertanyaan SELECT dengan betul daripada Fungsi PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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