In SQL dienen vorbereitete Anweisungen dazu, ähnliche Abfragen oder Aktualisierungen als Vorlagen zu erstellen. Adobe Experience Platform Query Service unterstützt vorbereitete Anweisungen mithilfe einer parametrisierten Abfrage. Dies kann die Leistung optimieren, da Sie eine Abfrage nicht mehr wiederholt erneut analysieren müssen.
Bei Verwendung vorbereiteter Anweisungen werden die folgenden Syntaxen unterstützt:
Diese SQL-Abfrage speichert die geschriebene SELECT-Abfrage mit dem Namen PLAN_NAME
. Sie können Variablen, z. B. $1
, anstelle von tatsächlichen Werten nutzen. Diese vorbereitete Erklärung wird während der aktuellen Sitzung gespeichert. Beachten Sie, dass bei den Plannamen nicht zwischen Groß- und Kleinschreibung unterschieden wird.
PREPARE {PLAN_NAME} AS {SELECT_QUERY}
PREPARE test AS SELECT * FROM table WHERE country = $1 AND city = $2;
Diese SQL-Abfrage verwendet die vorbereitete Anweisung, die zuvor erstellt wurde.
EXECUTE {PLAN_NAME}('{PARAMETERS}')
EXECUTE test('canada', 'vancouver');
Diese SQL-Abfrage dient zum Löschen der benannten vorbereiteten Anweisung.
DEALLOCATE {PLAN_NAME}
DEALLOCATE test;
Zunächst können Sie eine SQL-Abfrage wie die folgende verwenden:
SELECT * FROM table WHERE id >= 10000 AND id <= 10005;
Die obige SQL-Abfrage gibt folgende Antwort zurück:
id | firstname | lastname | birthdate | city | country | |
---|---|---|---|---|---|---|
10000 | alexander | davis | 15.09.1993 | example@example.com | Vancouver | Kanada |
10001 | antoine | dubois | 14.03.1967 | example2@example.com | Paris | Frankreich |
10002 | kyoko | sakura | 26.11.1999 | example3@example.com | Tokio | Japan |
10003 | linus | pettersson | 03.06.1982 | example4@example.com | Stockholm | Schweden |
10004 | aasir | waithaka | 17.12.1976 | example5@example.com | Nairobi | Kenia |
10005 | fernando | rios | 30.07.2002 | example6@example.com | Santiago | Chile |
Diese SQL-Abfrage kann mithilfe der folgenden vorbereiteten Anweisung parametrisiert werden:
PREPARE getIdRange AS SELECT * FROM table WHERE id >= $1 AND id <= $2;
Nun kann die vorbereitete Anweisung mithilfe des folgenden Aufrufs ausgeführt werden:
EXECUTE getIdRange(10000, 10005);
Bei diesem Aufruf sehen Sie genau die gleichen Ergebnisse wie zuvor:
id | firstname | lastname | birthdate | city | country | |
---|---|---|---|---|---|---|
10000 | alexander | davis | 15.09.1993 | example@example.com | Vancouver | Kanada |
10001 | antoine | dubois | 14.03.1967 | example2@example.com | Paris | Frankreich |
10002 | kyoko | sakura | 26.11.1999 | example3@example.com | Tokio | Japan |
10003 | linus | pettersson | 03.06.1982 | example4@example.com | Stockholm | Schweden |
10004 | aasir | waithaka | 17.12.1976 | example5@example.com | Nairobi | Kenia |
10005 | fernando | rios | 30.07.2002 | example6@example.com | Santiago | Chile |
Nachdem Sie die vorbereitete Anweisung fertig verwendet haben, können Sie die Zuweisung mithilfe des folgenden Aufrufs aufheben:
DEALLOCATE getIdRange;