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

Zapętlaj wymiar tablicy w plpgsql

Od PostgreSQL 9.1 jest wygodny FOREACH :

DO
$do$
DECLARE
   m   varchar[];
   arr varchar[] := array[['key1','val1'],['key2','val2']];
BEGIN
   FOREACH m SLICE 1 IN ARRAY arr
   LOOP
      RAISE NOTICE 'another_func(%,%)',m[1], m[2];
   END LOOP;
END
$do$

Rozwiązanie dla starszych wersji :

DO
$do$
DECLARE
   arr varchar[] := '{{key1,val1},{key2,val2}}';
BEGIN
   FOR i IN array_lower(arr, 1) .. array_upper(arr, 1)
   LOOP
      RAISE NOTICE 'another_func(%,%)',arr[i][1], arr[i][2];
   END LOOP;
END
$do$

Ponadto nie ma różnicy między varchar[] i varchar[][] dla systemu typu PostgreSQL. Wyjaśnię bardziej szczegółowo tutaj.

DO instrukcja wymaga co najmniej PostgreSQL 9.0 i LANGUAGE plpgsql jest wartością domyślną (więc możesz pominąć deklarację).




  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 odtworzyć usuniętą tabelę za pomocą Django Migrations?

  2. Widzisz i czyścisz pamięć podręczną/bufory Postgresa?

  3. Aplikacja Spring Boot blokuje się na Hikari-Pool-1 - Uruchamianie...

  4. Jak wstawić JSONB do Postgresql za pomocą Pythona?

  5. Nie można utworzyć żądanej usługi [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]