Vorbereitete Anweisungen
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.
Verwenden von vorbereiteten Anweisungen
Bei Verwendung vorbereiteter Anweisungen werden die folgenden Syntaxen unterstützt:
Vorbereiten einer vorbereiteten Anweisung prepare
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.
SQL-Format
PREPARE {PLAN_NAME} AS {SELECT_QUERY}
Beispiel-SQL
PREPARE test AS SELECT * FROM table WHERE country = $1 AND city = $2;
Vorbereitete Anweisung ausführen execute
Diese SQL-Abfrage verwendet die vorbereitete Anweisung, die zuvor erstellt wurde.
SQL-Format
EXECUTE {PLAN_NAME}('{PARAMETERS}')
Beispiel-SQL
EXECUTE test('canada', 'vancouver');
Zuweisung einer vorbereiteten Anweisung aufheben deallocate
Diese SQL-Abfrage dient zum Löschen der benannten vorbereiteten Anweisung.
SQL-Format
DEALLOCATE {PLAN_NAME}
Beispiel-SQL
DEALLOCATE test;
Beispielfluss mit vorbereiteten Anweisungen
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:
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:
Nachdem Sie die vorbereitete Anweisung fertig verwendet haben, können Sie die Zuweisung mithilfe des folgenden Aufrufs aufheben:
DEALLOCATE getIdRange;