In SQL, le istruzioni preparate vengono utilizzate per modellare query o aggiornamenti simili. Adobe Experience Platform Query Service supporta le istruzioni preparate utilizzando una query con parametri. In questo modo è possibile ottimizzare le prestazioni, in quanto non è più necessario ripetere ripetutamente l’analisi di una query.
Quando si utilizzano istruzioni preparate, sono supportate le seguenti sintassi:
Questa query SQL salva la query SELECT scritta con il nome specificato come PLAN_NAME
. È possibile utilizzare variabili quali $1
in sostituzione dei valori effettivi. Questa istruzione preparata verrà salvata durante la sessione corrente. Si prega di notare che i nomi dei piani sono not sensibile a maiuscole e minuscole.
PREPARE {PLAN_NAME} AS {SELECT_QUERY}
PREPARE test AS SELECT * FROM table WHERE country = $1 AND city = $2;
Questa query SQL utilizza l'istruzione preparata creata in precedenza.
EXECUTE {PLAN_NAME}('{PARAMETERS}')
EXECUTE test('canada', 'vancouver');
Questa query SQL viene utilizzata per eliminare l'istruzione preparata denominata.
DEALLOCATE {PLAN_NAME}
DEALLOCATE test;
Inizialmente, è possibile avere una query SQL, come quella seguente:
SELECT * FROM table WHERE id >= 10000 AND id <= 10005;
La query SQL di cui sopra restituirà la seguente risposta:
id | nome | cognome | compleanno | città | paese | |
---|---|---|---|---|---|---|
10000 | alessandro | davis | 1993-09-15 | example@example.com | Vancouver | Canada |
10001 | antoina | duboide | 1967-03-14 | example2@example.com | Parigi | Francia |
10002 | kyoko | sakura | 11-26/1999 | example3@example.com | Tokyo | Giappone |
10003 | linus | pettersson | 1982-06-03 | example4@example.com | Stoccolma | Svezia |
10004 | aasir | waithaka | 1976-12-17 | example5@example.com | Nairobi | Kenya |
10005 | fernando | rios | 07/07/2002 | example6@example.com | Santiago | Cile |
Questa query SQL può essere parametrizzata utilizzando la seguente istruzione preparata:
PREPARE getIdRange AS SELECT * FROM table WHERE id >= $1 AND id <= $2;
A questo punto, l’istruzione preparata può essere eseguita utilizzando la seguente chiamata:
EXECUTE getIdRange(10000, 10005);
Quando viene chiamato, vengono visualizzati esattamente gli stessi risultati di prima:
id | nome | cognome | compleanno | città | paese | |
---|---|---|---|---|---|---|
10000 | alessandro | davis | 1993-09-15 | example@example.com | Vancouver | Canada |
10001 | antoina | duboide | 1967-03-14 | example2@example.com | Parigi | Francia |
10002 | kyoko | sakura | 11-26/1999 | example3@example.com | Tokyo | Giappone |
10003 | linus | pettersson | 1982-06-03 | example4@example.com | Stoccolma | Svezia |
10004 | aasir | waithaka | 1976-12-17 | example5@example.com | Nairobi | Kenya |
10005 | fernando | rios | 07/07/2002 | example6@example.com | Santiago | Cile |
Dopo aver completato l'utilizzo dell'istruzione preparata, è possibile disallocarla utilizzando la seguente chiamata:
DEALLOCATE getIdRange;