sql >> Database >  >> RDS >> PostgreSQL

Loop over array-dimensie in plpgsql

Sinds PostgreSQL 9.1 er is de handige 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$

Oplossing voor oudere versies :

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$

Er is ook geen verschil tussen varchar[] en varchar[][] voor het PostgreSQL-type systeem. Ik leg het hier in meer detail uit.

De DO statement vereist minimaal PostgreSQL 9.0 en LANGUAGE plpgsql is de standaard (je kunt de aangifte dus weglaten).




  1. Slash of geen Slash?

  2. CONTROLEER BEPERKING van tekenreeks om alleen cijfers te bevatten. (Oracle-SQL)

  3. Omgaan met onbetrouwbare netwerken bij het maken van een HA-oplossing voor MySQL of MariaDB

  4. Hoe NOT LIKE werkt in MySQL