En SQL, las instrucciones preparadas se utilizan para crear plantillas de consultas o actualizaciones similares. Adobe Experience Platform Query Service admite instrucciones preparadas mediante una consulta parametrizada. Esto puede optimizar el rendimiento, ya que ya no es necesario volver a analizar una consulta de forma repetida.
Cuando se utilizan instrucciones preparadas, se admiten las siguientes sintaxis:
Esta consulta SQL guarda la consulta SELECT escrita con el nombre dado como PLAN_NAME
. Puede utilizar variables como $1
en lugar de valores reales. Esta declaración preparada se guardará durante la sesión actual. Tenga en cuenta que los nombres de plan son not distingue entre mayúsculas y minúsculas.
PREPARE {PLAN_NAME} AS {SELECT_QUERY}
PREPARE test AS SELECT * FROM table WHERE country = $1 AND city = $2;
Esta consulta SQL utiliza la instrucción preparada que se creó anteriormente.
EXECUTE {PLAN_NAME}('{PARAMETERS}')
EXECUTE test('canada', 'vancouver');
Esta consulta SQL se utiliza para eliminar la instrucción preparada con nombre.
DEALLOCATE {PLAN_NAME}
DEALLOCATE test;
Inicialmente, puede tener una consulta SQL, como la que se muestra a continuación:
SELECT * FROM table WHERE id >= 10000 AND id <= 10005;
La consulta SQL anterior devolverá la siguiente respuesta:
id | firstname | lastname | cumpleaños | city | country | |
---|---|---|---|---|---|---|
10000 | alexander | davis | 1993-09-15 | example@example.com | Vancouver | Canadá |
10001 | antoína | dubois | 1967-03-14 | example2@example.com | París | Francia |
10002 | kyoko | sakura | 1999-11-26 | example3@example.com | Tokio | Japón |
10003 | linus | pettersson | 1982-06-03 | example4@example.com | Estocolmo | Suecia |
10004 | aasir | waithaka | 1976-12-17 | example5@example.com | Nairobi | Kenia |
10005 | fernando | rios | 2002-07-30 | example6@example.com | Santiago | Chile |
Esta consulta SQL se puede parametrizar utilizando la siguiente instrucción preparada:
PREPARE getIdRange AS SELECT * FROM table WHERE id >= $1 AND id <= $2;
Ahora, la instrucción preparada se puede ejecutar utilizando la siguiente llamada:
EXECUTE getIdRange(10000, 10005);
Cuando se llame a esto, verá exactamente los mismos resultados que antes:
id | firstname | lastname | cumpleaños | city | country | |
---|---|---|---|---|---|---|
10000 | alexander | davis | 1993-09-15 | example@example.com | Vancouver | Canadá |
10001 | antoína | dubois | 1967-03-14 | example2@example.com | París | Francia |
10002 | kyoko | sakura | 1999-11-26 | example3@example.com | Tokio | Japón |
10003 | linus | pettersson | 1982-06-03 | example4@example.com | Estocolmo | Suecia |
10004 | aasir | waithaka | 1976-12-17 | example5@example.com | Nairobi | Kenia |
10005 | fernando | rios | 2002-07-30 | example6@example.com | Santiago | Chile |
Una vez que haya terminado de usar la instrucción preparada, puede desasignarla usando la siguiente llamada:
DEALLOCATE getIdRange;