sql >> Databáze >  >> RDS >> PostgreSQL

Iterace přes celé číslo[] v PL/pgSQL

DO
$do$
DECLARE
   a integer[] := array[1,2,3];
   i integer;                      -- int, not bigint
BEGIN
   FOR i IN 1 .. array_upper(a, 1)
   LOOP
      RAISE NOTICE '%', a[i];      -- single quotes
   END LOOP;
END
$do$;

Nebo jednodušší pomocí FOREACH v PostgreSQL 9.1 nebo novějším:

   FOREACH i IN ARRAY a
   LOOP 
      RAISE NOTICE '%', i;
   END LOOP;

Vícerozměrná pole viz:

  • Opakovat dimenzi pole v plpgsql

Nicméně řešení založená na sadách s generate_series() nebo unnest() jsou často rychlejší než smyčkování přes velké sady. Základní příklady:

  • PostgreSQL:Rozšíření tabulky frekvencí
  • Vyberte každý měsíc mezi počátečním a koncovým datem

Další informace najdete ve značkách generation-series nebo unnest.




  1. Zabránit automatickému přírůstku na duplicitním vložení MySQL

  2. Konfigurace oprávnění ScaleGrid na AWS pomocí šablony zásad IAM

  3. Příklad Oracle Dynamic SQL pro vložení záznamu pomocí DBMS_SQL

  4. Použití sloupce Oracle XMLType v režimu spánku