Vooraf voorbereide instructies
In SQL, worden de voorbereide verklaringen gebruikt om gelijkaardige vragen of updates te templatiseren. Adobe Experience Platform Query Service ondersteunt voorbereide instructies met behulp van een geparametriseerde query. Hierdoor kunnen de prestaties worden geoptimaliseerd, omdat u een query niet langer herhaaldelijk opnieuw hoeft te parseren.
Vooraf voorbereide instructies gebruiken
Wanneer u kant-en-klare instructies gebruikt, worden de volgende syntaxis ondersteund:
Een voorbereide instructie voorbereiden prepare
Deze SQL-query slaat de geschreven SELECT-query op onder de naam PLAN_NAME
. U kunt variabelen, zoals $1
, gebruiken in plaats van werkelijke waarden. Deze voorbereide instructie wordt opgeslagen tijdens de huidige sessie. Gelieve te merken op dat de plannamen niet gevoelig geval zijn.
SQL-indeling
PREPARE {PLAN_NAME} AS {SELECT_QUERY}
Voorbeeld-SQL
PREPARE test AS SELECT * FROM table WHERE country = $1 AND city = $2;
Een voorbereide instructie uitvoeren execute
Deze SQL-query gebruikt de voorbereide instructie die eerder is gemaakt.
SQL-indeling
EXECUTE {PLAN_NAME}('{PARAMETERS}')
Voorbeeld-SQL
EXECUTE test('canada', 'vancouver');
Toewijzing van een voorbereid overzicht opheffen deallocate
Deze SQL-query wordt gebruikt om de benoemde voorbereide instructie te verwijderen.
SQL-indeling
DEALLOCATE {PLAN_NAME}
Voorbeeld-SQL
DEALLOCATE test;
Voorbeeld van stroom met voorbereide instructies
Aanvankelijk, kunt u een SQL vraag, zoals hieronder hebben:
SELECT * FROM table WHERE id >= 10000 AND id <= 10005;
De bovenstaande SQL-query retourneert de volgende reactie:
Voor deze SQL-query kan de parameter worden ingesteld met behulp van de volgende voorbereide instructie:
PREPARE getIdRange AS SELECT * FROM table WHERE id >= $1 AND id <= $2;
Nu, kan de voorbereide verklaring worden uitgevoerd door de volgende vraag te gebruiken:
EXECUTE getIdRange(10000, 10005);
Wanneer dit wordt aangeroepen, ziet u precies dezelfde resultaten als voorheen:
Nadat u het gebruiken van de voorbereide verklaring hebt gebeëindigd, kunt u het ombepalen door de volgende vraag te gebruiken:
DEALLOCATE getIdRange;