sql >> Database >  >> RDS >> PostgreSQL

Dynamisch gegenereerde CURSOR in Postgresql

Heb je de expliciete cursor echt nodig? Als u dynamische SQL wilt herhalen, kunt u FOR IN EXECUTE . gebruiken . Het is loop over impliciete (interne) cursor voor dynamische SQL

FOR db_rec IN EXECUTE v_sql_dynamic
LOOP
  ..
END LOOP

Een iets complexere oplossing wordt beschreven in documentatie - 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 $$;

Met dit soort cursor kunt u FOR IN . niet gebruiken




  1. Vind dubbele waarden in matrixkolom

  2. De voordelen van PostgreSQL

  3. Waarom wijzigt deze Oracle DROP COLUMN de standaardwaarde van een andere kolom?

  4. databaseverbindingsfout geassocieerd met de codering