PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Динамично генериран CURSOR в Postgresql

Наистина ли имате нужда от изричния курсор? Ако имате нужда от итерация върху динамичен SQL, тогава можете да използвате FOR IN EXECUTE . Това е цикъл върху имплицитния (вътрешен) курсор за динамичен SQL

FOR db_rec IN EXECUTE v_sql_dynamic
LOOP
  ..
END LOOP

Малко по-сложно решение е описано в документация - 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 $$;

С този вид курсор не можете да използвате 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. Архивиране на дизайна на PostgreSQL база данни - без данни

  2. Разлика между RDBMS и ORDBMS

  3. Грешка в SQLAlchemy без предоставена парола

  4. Попълване на поле Many2many (odoo 8)

  5. PostgreSQL:от OID до Bytea