PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Dynamicznie generowany CURSOR w Postgresql

Czy naprawdę potrzebujesz wyraźnego kursora? Jeśli potrzebujesz iteracji po dynamicznym SQL, możesz użyć FOR IN EXECUTE . Jest to pętla nad niejawnym (wewnętrznym) kursorem dla dynamicznego SQL

FOR db_rec IN EXECUTE v_sql_dynamic
LOOP
  ..
END LOOP

Nieco bardziej złożone rozwiązanie opisano w dokumentacji - 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 $$;

Z takim kursorem nie możesz użyć 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. Jak korzystać z modelu uczenia maszynowego KNN z 2UDA – PostgreSQL i Orange (Część 1)

  2. Dlaczego SQL NOT IN jest tak wolny?

  3. Zduplikowane wiersze SQL z wieloma lewymi sprzężeniami

  4. Jak przyspieszyć zapytanie o aktualizację na ogromnej tabeli

  5. Postgresql DROP TABLE nie działa