Uso de consultas parametrizadas
Puede usar consultas parametrizadas de Athena para volver a ejecutar la misma consulta con valores de parámetros diferentes en el momento de la ejecución y ayudar a evitar ataques de inyección de código SQL. En Athena, las consultas parametrizadas pueden adoptar la forma de parámetros de ejecución en cualquier consulta DML o instrucciones preparadas de SQL.
-
Las consultas con parámetros de ejecución se pueden realizar en un solo paso y no son específicas del grupo de trabajo. Coloque signos de interrogación en cualquier consulta de DML para los valores que desea parametrizar. Al ejecutar la consulta, declara los valores de los parámetros de ejecución de manera secuencial. La declaración de parámetros y la asignación de valores para los parámetros se pueden hacer en la misma consulta, pero de manera desacoplada. A diferencia de las instrucciones preparadas, puede seleccionar el grupo de trabajo cuando envía una consulta con parámetros de ejecución.
-
Las instrucciones preparadas requieren dos instrucciones SQL separadas:
PREPARE
yEXECUTE
. Primero, defina los parámetros en la instrucciónPREPARE
. A continuación, ejecute una declaraciónEXECUTE
que proporcione los valores de los parámetros que ha definido. Las instrucciones preparadas son específicas del grupo de trabajo; no puede ejecutarlas fuera del contexto del grupo de trabajo al que pertenecen.
Consideraciones y limitaciones
-
Las consultas parametrizadas se admiten en la versión 2 o una versión posterior del motor de Athena. Para obtener más información acerca de las versiones de motor Athena, consulte Control de versiones del motor Athena.
-
Actualmente, las consultas parametrizadas solo se admiten para instrucciones
SELECT
,INSERT INTO
,CTAS
yUNLOAD
. -
En las consultas parametrizadas, los parámetros son posicionales y se indican mediante
?
. A los parámetros se les asignan valores según su orden en la consulta. Los parámetros con nombre no se admiten. -
En la actualidad, los parámetros
?
solo se pueden colocar en la cláusulaWHERE
. La sintaxis del tipoSELECT ? FROM table
no es compatible. -
Los parámetros de interrogación no se pueden poner entre comillas simples o dobles (es decir,
'?'
y"?"
no son sintaxis válidas). -
Para que los parámetros de ejecución de SQL se traten como cadenas, deben colocarse entre comillas simples en lugar de comillas dobles.
-
Si es necesario, puede utilizar la función
CAST
al ingresar un valor para un término parametrizado. Por ejemplo, si tiene una columna del tipodate
que ha parametrizado en una consulta y desea consultar la fecha2014-07-05
, al ingresarCAST('2014-07-05' AS DATE)
en el valor del parámetro obtendrá el resultado que busca. -
Las instrucciones preparadas son específicas del grupo de trabajo, y los nombres de las instrucciones preparadas deben ser únicos dentro del grupo de trabajo.
-
Para las instrucciones preparadas se requieren permisos de IAM. Para obtener más información, consulte Configuración del acceso a las declaraciones preparadas.
-
Las consultas con parámetros de ejecución en la consola de Athena están limitadas a un máximo de 25 signos de interrogación.