PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

apakah node-postgres mendukung banyak hasil?

PERBARUI :Lihat tutorial luar biasa ini untuk penjelasan tentang cara mengambil dan mengelola refkursor.

Karena node-postgres tidak mengenali refkursor yang Anda kembalikan sebagai pegangan set hasil, sepertinya node-postgres tidak mendukung beberapa set hasil dari PostgreSQL. Itu cukup adil karena PostgreSQL juga tidak mendukung banyak set hasil, mereka hanya ditiru dengan refkursor.

Anda dapat FETCH dari refcursor melalui perintah kursor tingkat SQL perintah kursor tingkat SQL , meskipun dokumentasi untuk itu menyedihkan. Anda tidak perlu menggunakan PL/PgSQL penanganan kursor untuk melakukannya. Hanya:

FETCH ALL FROM "<unnamed portal 1>";

Perhatikan tanda kutip ganda, yang penting. Ganti nama refkursor yang dikembalikan dari fungsi Anda untuk <unnamed portal 1> .

Perhatikan juga bahwa transaksi yang membuat refcursor harus tetap terbuka kecuali kursor dibuat WITH HOLD . Non-HOLD kursor ditutup ketika transaksi melakukan atau memutar kembali.

Misalnya, mengingat fungsi dummy refcursor-returning:

CREATE OR REPLACE FUNCTION dummy_cursor_returning_fn() RETURNS SETOF refcursor AS $$
DECLARE
    curs1 refcursor;
    curs2 refcursor;
BEGIN
    OPEN curs1 FOR SELECT generate_series(1,4);
    OPEN curs2 FOR SELECT generate_series(5,8);
    RETURN NEXT curs1;
    RETURN NEXT curs2;
    RETURN;
END;
$$ LANGUAGE 'plpgsql';

... yang mengembalikan satu set kursor, Anda bisa mendapatkan hasilnya dengan meneruskan nama portal ke FETCH , misalnya:

regress=# BEGIN;
BEGIN
regress=# SELECT dummy_cursor_returning_fn();
 dummy_cursor_returning_fn 
---------------------------
 <unnamed portal 7>
 <unnamed portal 8>
(2 rows)

regress=# FETCH ALL FROM "<unnamed portal 7>";
 generate_series 
-----------------
               1
               2
               3
               4
(4 rows)

regress=# FETCH ALL FROM "<unnamed portal 8>";
 generate_series 
-----------------
               5
               6
               7
               8
(4 rows)

regress=# 



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menambahkan jumlah hari kerja ke tanggal tertentu

  2. Hapus duplikat di postgres

  3. tidak dapat menerjemahkan nama host postgres ke alamat:Nama atau layanan tidak diketahui

  4. Postgres:pilih semua baris dengan jumlah bidang lebih dari 1

  5. SQLite ke Postgres (Heroku) GROUP BY