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
Views: Raw Message | Whole Thread | Download mbox | Resend email
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

Browse pgsql-it-generale by date

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