Skip site navigation (1) Skip section navigation (2)

Re: Costruttore degli array con record "completi"

From: rotellaro(at)gmail(dot)com
To: pgsql-it-generale(at)postgresql(dot)org
Subject: Re: Costruttore degli array con record "completi"
Date: 2008-07-10 14:26:42
Message-ID: a3e8e2210807100726p6b79ca09u670b2544f786d561@mail.gmail.com (view raw or flat)
Thread:
Lists: pgsql-it-generale
On Thu, Jul 10, 2008 at 4:02 PM, Giorgio Valoti <giorgio_v(at)mac(dot)com> wrote:
> On 10/lug/08, at 13:56, rotellaro(at)gmail(dot)com wrote:
>
>> Questo giocattolino l'ho sviluppato in prima battuta per un
>> performance tuning e successivamente per un cms che mi sono deciso a
>> scrivere per abbandonare drupal che e' poco performante sotto
>> postgresql.
>>
>> Ad ogni modo ecco la situazione.
>
> wow, bello! Dal punto di vista di filosofia di utilizzo ci siamo: è
> l'approccio che vorrei seguire. Tuttavia quello che ho in mente è
> probabilmente diverso, ma forse mi hai messo sulla buona strada. Il punto
> cruciale è il data type: date ad es. due tabelle, A e B, puoi scrivere una
> cosa come:
> select A.*, array(select get_B_for_id_a(100)) from A where id_a = 100;
>
> solo se la funzione "get_B_for_id_a" restituisce un setof B e non un
> generico setof record.

In realta' puoi fare una cosa ancora piu' raffinata.
Incapsulare anche la select nella funzione e fargli ritornare un set
formattato e costruito come ti serve.
Questo for annidato restituisce oltre ai valori tirati fuori da un
array bidimensionale anche le posizioni ordinate semplicemente
posizionando nella select into r_result i contatori dei due for a mo'
di campi di tabella.

FOR  cnt_zone IN i_min_zone..i_max_zone LOOP
	FOR  cnt_pos IN i_min_pos..i_max_pos LOOP
		IF a_struct[cnt_zone][cnt_pos]>0 THEN
			SELECT
				id,
				area_id,
				name,
				cnt_zone as zone,
				cnt_pos as position,
				INTO result
				FROM  tab_position
			WHERE
				        id=a_struct[cnt_zone][cnt_pos];
			RETURN NEXT r_result;
		END IF;
	END LOOP;
END LOOP;


PostgreSQL è molto flessibile da questo punto di vista.

Ciao
Federico

-- 
(all opinions expressed are my own)
Federico Campoli
PostgreSQL Consulting -> PGHost http://www.pghost.eu

In response to

Responses

pgsql-it-generale by date

Next:From: Giorgio ValotiDate: 2008-07-10 15:13:11
Subject: Re: Costruttore degli array con record "completi"
Previous:From: Giorgio ValotiDate: 2008-07-10 14:02:50
Subject: Re: Costruttore degli array con record "completi"

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group