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

Цикъл върху измерението на масива в plpgsql

От PostgreSQL 9.1 има удобния 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$

Решение за по-стари версии :

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$

Освен това няма разлика между varchar[] и varchar[][] за системата тип PostgreSQL. Обяснявам по-подробно тук.

DO изразът изисква поне PostgreSQL 9.0 и LANGUAGE plpgsql е по подразбиране (така че можете да пропуснете декларацията).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Отказано е разрешение за връзка

  2. Oracle SQL Developer и PostgreSQL

  3. postgresql - брой (без нулеви стойности) на всяка колона в таблица

  4. PG::Грешка в клаузата GROUP BY

  5. Обединяване на връзки към база данни на Celery Worker