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

CURSOR yang dihasilkan secara dinamis di Postgresql

Apakah Anda benar-benar membutuhkan kursor eksplisit? Jika Anda perlu mengulangi SQL dinamis, maka Anda dapat menggunakan FOR IN EXECUTE . Ini adalah loop di atas kursor implisit (internal) untuk SQL dinamis

FOR db_rec IN EXECUTE v_sql_dynamic
LOOP
  ..
END LOOP

Solusi yang sedikit lebih kompleks dijelaskan dalam dokumentasi - OPEN FOR EXECUTE :

do $$
declare r refcursor; rec record;
begin 
  open r for execute 'select * from pg_class'; 
  fetch next from r into rec;
  while found 
  loop
    raise notice '%', rec; 
    fetch next from r into rec; 
  end loop;
  close r; 
end $$;

Dengan kursor seperti ini, Anda tidak dapat menggunakan FOR IN




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Psycopg2 copy_from melempar DataError:sintaks input tidak valid untuk integer

  2. Menggunakan interval di PostgreSQL dengan Ruby on Rails

  3. Vertx JDBC client queryWithParams - bagaimana cara menambahkan daftar?

  4. Sederhanakan kasus bersarang saat pernyataan

  5. Memulai Dengan PostgreSQL 11 di Ubuntu 18.04