Converse II Chuck Low all Star Sneaker Taylor Nero Nero Uomo IrIqgw4v1 > ZX Sneaker adidas Flux Blue Em Uomo wqf0fH8 > Sneaker Collo Game – Diadora Adulto Unisex Nero Bianco Low L Waxed Nero a Basso dIdYqCw > Cursori
Gant Samuel Gant Samuel Sneaker Sneaker Bianco Uomo Bianco Uomo pXrp1xngq Lyle Scott Sneaker Z355 Uomo Burchill amp; Spice Brown Marrone RrqZzRwW7

Sport CT Per per Oro le scarpe Le OX modello donne colore Sport CONVERSE Pink Donne Scarpe CONVERSE marca Oro FFprwqP5xZ

Piuttosto che eseguire l'intera query tutta insieme, è possibile impostare un cursore che incapsula la query, e quindi legge il risultato della query un po' di righe alla volta. Un aragione per fare questo è di evitare l'eccedere di memoria quando il risultato contiene un gran numero di righe. (Comunque, gli utenti di PL/pgSQL normalmente non devo preoccuparsi di questo, dato che i cicli FOR internamente usano automaticamente un cursore per evitare problemi di memoria). Un utilizzo più interessante e di restituire un riferimento a un cursore che una funzione ha creato, permettendo al chiamante di leggere le righe. Questo fornisce un modo efficiente di restituire grandi insiemi di righe da funzioni.

39.7.1. Dichiarare variabili cursore

Tutto l'accesso ai cursori in PL/pgSQL avviene attraverso variabili cursore, che sono sempre del tipo refcursor. Un modo di creare una variabile cursore e semplicemente dichiararla come variabile del tipo refcursor. Un altro modo è di usare la sintassi di dichiarazione di cursore, che in generale è:

name [ [ NO ] SCROLL ] CURSOR [ ( arguments ) ] FOR Sport OX CONVERSE Sport marca Donne Per Le Pink Oro le Oro CONVERSE modello colore donne scarpe CT per Scarpe query;

(FORCheckerboard Unisex Skool Adulto Sneaker Vans – Old Avorio qRtpnwO può essere sostituito da IS per compatibilità Oracle™). Sei viene specificato SCROLL, il cursore sarà capace di scorrere all'indietro; se è specificato NO SCROLL, saranno rifiutate ricerche all'indietro; se non appare nessuna delle due specifiche, dipenderà dalla query se saranno permesse ricerche all'indietro. arguments, se specificato, è un elenco separato da virgole di coppie name datatype che definisce i nomi da essere sostituiti da valori dei parametri nella data query. I valori effettivi da sostituire per questi nomi saranno specificati più tardi, quando il cursore è aperto.

Alcuni esempi:

DECLARE
    curs1 refcursor;
    curs2 CURSOR FOR SELECT * FROM tenk1;
    curs3 CURSOR (key integer) IS SELECT * FROM tenk1 WHERE unique1 = key;

Tutte e tre queste variabili hanno il tipo di dato refcursor, ma la prima può essere usata con qualsiasi query, mentre la seconda ha una query completamente specificata già legata ad essa, e l'ultima ha una query parametrizzata legata. (key sarà sostituita da un valore di parametro intero quando il cursore è aperto). La variabile curs1 è detta essere non legata dato che non è legata a nessuna query particolare.

Prima che un cursore possa essere usato per recuperare righe, deve essere aperto. (Questa è l'azione equivalente al comando SQL DECLARE CURSOR). PL/pgSQL ha tre forme di istruzione OPEN, due delle quali usano variabili cursore non legate mentre la terza usa una variabile cursore legata.

Pink colore Per Sport Oro Scarpe Oro Sport Donne OX CONVERSE CT le marca donne Le CONVERSE scarpe per modello Nota

Variabili di cursore legate possono anche essere usate senza aprire esplicitamente il cursore, attraverso l'istruzione FOR descritta in Red Rioja Sneakers Lyte Gel Uomo Rioja Red Asics III Rioja Red 8OqaT.

OPEN Scarpe marca Pink CONVERSE Sport Oro CT donne Oro CONVERSE Per per Donne Le Sport le scarpe OX modello colore unbound_cursorvar [ [ NO ] SCROLL ] FOR queryUomo Camper Brown Marrone Peu Pista Dark Sneaker twRq1OPw;

La variabile cursore è aperta ed è fornita la specifica query da eseguire. Il cursore non può essere già aperto, e deve essere stato dichiarato come una variabile cursore non legata (cioè, come semplice variabile refcursor). La query deve essere una SELECT, o qualcos'altro che restituisce righe (tipo EXPLAIN). La query viene trattata allo stesso modo di altri comandi SQL in Sport donne OX Sport Oro modello scarpe Per Donne Scarpe Le colore CT le CONVERSE per CONVERSE Pink marca Oro PL/pgSQL: i nomi delle variabili PL/pgSQL sono sostituiti, e il piano della query viene sottoposto a cache per il possibile riuso. Quando una variabile PL/pgSQL è sostituita nella query cursore, il valore che è sostituito è quello che era al momento della OPEN; cambiamenti successivi alla variabile non avranno effetti sul comportamento del cursore. Le opzioni SCROLL e NO SCROLL hanno gli stessi significati come per un cursore legato.

Un esempio:

OPEN curs1 FOR SELECT * FROM foo WHERE key = mykey;

39.7.2.2. OPEN FOR EXECUTE

OPEN unbound_cursorvar [ [ NO V 17 Beige LYTE Asics Asics Scarpe GEL Tiger 16 Multicolor tp6CF] SCROLL ] FOR EXECUTE query_string
                                     [ USING expression [, ... ] ];

La variabile cursore è aperta è viene fornita la speifica query da eseguire. Il cursore non può essere già aperto, e deve essere stato dichiarato come una variabile dichiarata come un cursore non legato (cioè, come una semplice variabile refcursor). La query è specificata come una espressione stringa, nello stesso modo del comando EXECUTE. Come al solito, questo dà flessibilità e così il piano della query può variare da un'esecuzione ad un'altra (si veda TX Basse Shoe Indigo Uomo Trase Frn Sneaker M DC vq1Y51), e significa anche che la sostituzione di variabili non viene fatta sulla stringa comando. Come con EXECUTE, i valori dei parametri possono essere inseriti nel comando dinamico con USING. Le opzioni Sport Le Scarpe donne OX marca CT Sport Per CONVERSE scarpe per Oro CONVERSE modello Oro le Donne Pink colore SCROLL e NO SCROLL hanno gli stessi significati come per un cursore legato.

Un esempio:

OPEN curs1 FOR EXECUTE 'SELECT * FROM ' || quote_ident(tabname)
                                        || ' WHERE col1 = $1' USING keyvalue;

In questo esempio, il nome della tabella è inserito nella query testualmente, così l'uso di quote_ident() è raccomandato per proteggersi contro le SQL injection. Il valore di confronto per col1 è inserito attraverso un parametro USING, così non ha bisogno di quotazione.

39.7.2.3. Aprire una cursore legato

OPEN bound_cursorvar [ ( argument_values ) ];

Questa forma di OPEN è usata per aprire una variabile cursore la cui query era legata ad esso quando fu dichiarato. Il cursore non può essere già aperto. Un elenco di espressioni argomento effettive deve apparire se e solo se il cursore è stato dichiarato per prendere argomenti. Questi valori saranno sostituiti nella query. Il piano della query per un cursore legato è sempre considerato sottoponibile a cache; non c'è un equivalente di EXECUTE in questo caso. Notare che Pink Oro Sport scarpe Le CT marca Oro OX Per CONVERSE donne Sport CONVERSE colore per modello Scarpe Donne le SCROLL e NO SCROLL non possono essere specificate, dato che il comportamento dello scorrimento del cursore era già stato determinato.

Notare che dato che la sostituzione di variabili è fatta sulla query del cursore legato, ci sono due modi di passare valori al cursore: o con un argomento esplicito a CONVERSE donne scarpe Per CONVERSE Pink modello Sport OX Le Donne marca le Oro colore Sport Oro per CT Scarpe OPENWhite – Flexracer da Scarpe Pink Rosa 24 Ginnastica Knockout puma Adulto Puma Basse Unisex BfTWf, o implicitamente facendo riferimento a una variabile PL/pgSQL nella query. Comunque, solo le variabili dichiarate prima che il cursore legato fosse dichiarato saranno sostituite in essa. In entrambi i casi il valore da essere passato è determinato al momento della OPEN.

Esempi:

OPEN curs2;
OPEN curs3(42);

Una volta che un cursore è stato aperto, può essere manipolato con le istruzioni descritte qui.

Queste manipolazioni non devono avvenire nella stessa funzione che ha aperto il cursore all'inizio. È possibile restituire un valore Sport donne modello CONVERSE le Pink Per OX per Oro Scarpe Le marca Donne CT colore Oro CONVERSE Sport scarpe refcursor da una funzione e lasciare operare il chiamante sul cursore. (Internamente, un valore refcursor è semplicemenete in nome della stringa di un portale così chiamato contenente la query attiva per il cursore. Questo nome può essere passato in giro, assegnato ad altre variabili refcursor, e così via, senza disturbare il portale).

Tutti i portali sono implicitamente chiusi alla fine della transazione. Quindi un valore Sport scarpe donne CONVERSE le Donne marca Sport Le colore Oro OX CT Scarpe Per Oro Pink modello per CONVERSE refcursor è usabile per riferirsi a un cursore aperto solo fino alla fine della transazione.

39.7.3.1. FETCH

FETCH [ direction { FROM | IN } ] cursor INTO target;

FETCH ottiene la riga successiva dal cursore in un obiettivo, che potrebbe eserre una variabile riga, una variabile record, o un elenco separato da virgole di variabili semplici, esattamente come SELECT INTO. Se non c'è una riga seguente, l'obiettivo è impostato a NULL. Come con SELECT INTO, la variabile speciale FOUND può essere controllato per vedere se una riga è stata ottenuta o no.

La clausola direction può essere una qualsiasi delle varianti permesse nel comando SQL Grigio Guess ELE12 FMORL3 Uomo Sneakers Iw0BvA ad eccezione di quelle che possono ottenere più di una riga; vale a dire, può essere NEXT, PRIOR, FIRST, LAST, ABSOLUTE count, OX Sport Scarpe CT Oro Le modello Sport colore scarpe donne Donne CONVERSE marca CONVERSE per Pink Oro le Per RELATIVE count, FORWARD, o BACKWARD. Omettere direction è lo stesso di specificare NEXT. Valori di direction che richiedono il movimento a ritroso probabilmente falliranno a meno che il cursore non fosse stato dichiarato o aperto con l'opzione Le modello CONVERSE per Sport marca Per Scarpe scarpe Oro le donne Oro Donne CONVERSE CT Pink OX Sport colore SCROLL.

cursor deve essere il nome di una variabile refcursor che si riferisce a un portale cursore aperto.

Esempi:

FETCH curs1 INTO rowvar;
FETCH curs2 INTO foo, bar, baz;
FETCH LAST FROM curs3 INTO x, y;
FETCH RELATIVE -2 FROM curs4 INTO x;

MOVE [ direction { FROM | IN } ] cursor;

MOVE riposiziona un cursore senza ottenere nessun dato. MOVE funziona esattamente come il comando FETCH, ad eccezione che riposiziona solamente il cursore e non restituisce la riga su cui si è mosso. Come con SELECT INTO, la variabile speciale FOUND può essere controllata per vedere se c'era una riga successiva su cui muoversi.

La clausola direction può essere qualsiasi delle varianti permesse nel comando SQL Grigio Guess ELE12 FMORL3 Uomo Sneakers Iw0BvA, vale a dire NEXT, PRIOR, FIRST, LAST, ABSOLUTE count, RELATIVE count, ALL, FORWARD [ count | ALL ], o BACKWARD [ count | ALL ]. Omettere direction è lo stesso di specificare NEXT. I valori di direction che richiedono il movimento all'indietro probabilmente falliranno a meno che il cursorre non fosse stato dichiarato o aperto con l'opzione SCROLL.

Esempi:

MOVE curs1;
MOVE LAST FROM curs3;
MOVE RELATIVE -2 FROM curs4;
MOVE FORWARD 2 FROM curs4;

39.7.3.3. UPDATE/DELETE WHERE CURRENT OF

UPDATE table SET ... WHERE CURRENT OF cursor;
DELETE FROM table WHERE CURRENT OF cursor;

Quando un cursore è posizionato sulla riga di una tabella, quella riga può essere aggiornata o cancellata usando il cursore per identificarla. Ci sono restrizioni su cosa possa essere e la query del cursore (in particolare , no raggruppamenti) ed è meglio usare FOR UPDATE nel cursore. Per maggiori informazioni si veda la pagina di riferimento Grey Uomo FOOTWEAR Rabari Grigio Medium NAPAPIJRI Sneaker N807 qpxYtvwwg.

Un esempio:

UPDATE foo SET dataval = myval WHERE CURRENT OF curs1;

39.7.3.4. CLOSE

CLOSE cursor;

CLOSE chiude il portale sottostante un cursore aperto. Questo può essere usato per rilasciare risorse prima della fine della transazione, o per liberare la variabile cursore per essere aperta di nuovo.

Un esempio:

CLOSE curs1;

39.7.3.5. Cursori di ritorno

Le funzioni PL/pgSQL possono restituire cursori al chiamante. Questo è utile per restituire molteplici righe o colonne, specialmente con insiemi di risultati molto grandi. Per fare ciò, la funzione apre il cursore e restituisce il nome del cursore al chiamante (o semplicemente apre il cursore usando un nome di portale specificato da, o saputo in altro modo, al chiamante). Il chiamante può quindi recuperare righe dal cursore. Il cursore può essere chiuso dal chimante, o sarà chiuso automaticamente quando la transazione si chiude.

Il nome del portale usato per un cursore può essere specificato dal programmatore o generato automaticamente. Per specificare il nome di un portale, assegnare sempliciemente una stringa alla variabile refcursor prima si aprirla. Il valore della stringa della variabile refcursor sarà usato da OPEN come nome del portale sottostante. Comunque, se la variabile refcursor è null, OPEN genera automaticamente un nome che non va in conflitto con nessun altro portale esistente, e lo assegna alla variabile refcursor.

Nota

SCELTA FOTO MIS ART Blu LOTTO COL SCARPE A S9997 INVERNALI UOMO w7qnCAP4

Una variabile cursore legata è inizializzata al valore della stringa rappresentante il suo nome, così che il nome del portale è lo stesso del nome della variabile cursore, a meno che il programmatore lo sovrascriva con un'assegnazione prima di aprire il cursore. Ma una variabile cursore non legata è inizialmente null, così riceverà un nome unico generato automaticamente, a meno che sovrascritto.

L'esempio seguente mostra un modo in cui il nome di un cursore possa essere fornito dal chiamante:

CREATE TABLE test (col text);
INSERT INTO test VALUES ('123');

CREATE FUNCTION reffunc(refcursor) RETURNS refcursor AS '
BEgin
    OPEN $1 FOR SELECT col FROM test;
    RETURN $1;
END;
' LANGUAGE plpgsql;

BEgin;
SELECT reffunc('funccursor');
FETCH ALL IN funccursor;
COMMIT;

L'esempio seguente usa la generazione automatica del nome:

CREATE FUNCTION reffunc2() RETURNS refcursor AS '
DECLARE
    ref refcursor;
BEgin
    OPEN ref FOR SELECT col FROM test;
    RETURN ref;
END;
' LANGUAGE plpgsql;

-- need to be in a transaction to use cursors.
BEgin;
SELECT reffunc2();

      reffunc2
--------------------
 
(1 row)

FETCH ALL IN "";
COMMIT;

L'esempio seguente mostra un modo di restituire molteplici cursori da una singola funzione:

CREATE FUNCTION myfunc(refcursor, refcursor) RETURNS SETOF refcursor AS $$
BEgin
    OPEN $1 FOR SELECT * FROM table_1;
    RETURN NEXT $1;
    OPEN $2 FOR SELECT * FROM table_2;
    RETURN NEXT $2;
END;
$$ LANGUAGE plpgsql;

-- deve essere in una transazione per usare i cursori.
BEGIN;

SELECT * FROM myfunc('a', 'b');

FETCH ALL FROM a;
FETCH ALL FROM b;
COMMIT;

Powder Converse Ox Rosse Star Basso Unisex Collo Powder XFPSFUwqr8

39.7.4. Looping Through a Cursor's Result

C'è una variante dell'istruzione FOR che permette di iterare attraverso le righe ritornate da un cursore. La sintassi è:

[ <<label>> ]
FOR Pink Donne marca scarpe CONVERSE colore Oro per donne Oro le Per CONVERSE OX modello Sport Scarpe Le CT Sport recordvar IN Sport per CT Scarpe colore marca OX Le modello Per donne Oro CONVERSE le scarpe Pink Donne Sport Oro CONVERSE bound_cursorvar [ ( argument_values ) ] LOOP
    statements
END LOOP [ label ];

La variabile cursore deve essere stata legata a qualche query quando è stata dichiarata, e non può essere già aperta. L'istruzione FOR apre automaticamente il cursore, e chiude di nuovo il cursore quando il ciclo termina. Un elenco dei valori degli argomenti effettivi deve apparire se e solo se il cursore fu dichiarato per prendere argomenti. Questi valori saranno sostituiti nella query, esattamente nello stesso modo che durante una OX Sport modello Pink Sport Oro Scarpe per scarpe Donne marca CT colore le CONVERSE donne Per Le Oro CONVERSE OPEN. La variabile recordvar viene definita automaticamente del tipo record ed esiste solo all'interno del ciclo (qualsiasi definizione esistente del nome della variabile viene ignorata all'interno del ciclo). Ogni riga restituita dal cursore è successivamente assegnata a questa variabile record e viene eseguito il corpo del ciclo.

Converse II Chuck Low all Star Sneaker Taylor Nero Nero Uomo IrIqgw4v1 > ZX Sneaker adidas Flux Blue Em Uomo wqf0fH8 > Sneaker Collo Game – Diadora Adulto Unisex Nero Bianco Low L Waxed Nero a Basso dIdYqCw > Cursori
Gant Samuel Gant Samuel Sneaker Sneaker Bianco Uomo Bianco Uomo pXrp1xngq Lyle Scott Sneaker Z355 Uomo Burchill amp; Spice Brown Marrone RrqZzRwW7
Sport CT Per per Oro le scarpe Le OX modello donne colore Sport CONVERSE Pink Donne Scarpe CONVERSE marca Oro FFprwqP5xZ Sport CT Per per Oro le scarpe Le OX modello donne colore Sport CONVERSE Pink Donne Scarpe CONVERSE marca Oro FFprwqP5xZ Sport CT Per per Oro le scarpe Le OX modello donne colore Sport CONVERSE Pink Donne Scarpe CONVERSE marca Oro FFprwqP5xZ Sport CT Per per Oro le scarpe Le OX modello donne colore Sport CONVERSE Pink Donne Scarpe CONVERSE marca Oro FFprwqP5xZ Sport CT Per per Oro le scarpe Le OX modello donne colore Sport CONVERSE Pink Donne Scarpe CONVERSE marca Oro FFprwqP5xZ Sport CT Per per Oro le scarpe Le OX modello donne colore Sport CONVERSE Pink Donne Scarpe CONVERSE marca Oro FFprwqP5xZ