PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

CURSOR được tạo động trong Postgresql

Bạn có thực sự cần con trỏ rõ ràng không? Nếu bạn cần lặp qua SQL động, thì bạn có thể sử dụng FOR IN EXECUTE . Nó là vòng lặp qua con trỏ ngầm (nội bộ) cho SQL động

FOR db_rec IN EXECUTE v_sql_dynamic
LOOP
  ..
END LOOP

Giải pháp phức tạp hơn một chút được mô tả trong tài liệu - 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 $$;

Với loại con trỏ này, bạn không thể sử dụng 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. Django ORM đọc sai chuỗi PostgreSQL?

  2. Sử dụng pg_notify trong hàm kích hoạt PostgreSQL

  3. Thực thi nhiều câu lệnh với Postgresql thông qua SQLAlchemy không tiếp tục thay đổi

  4. Thay đổi từ SQLite sang PostgreSQL trong một dự án Rails mới

  5. Truy vấn một tham số (cài đặt postgresql.conf) như max_connections