

# Sintaxis SQL para instrucciones preparadas
<a name="querying-with-prepared-statements-sql-statements"></a>

Puede utilizar las instrucciones SQL `PREPARE`, `EXECUTE` y `DEALLOCATE PREPARE` para ejecutar consultas parametrizadas en el editor de consultas de la consola de Athena. 

 
+ Para especificar parámetros en los que normalmente usaría valores literales, utilice signos de interrogación en la instrucción `PREPARE`.
+ Para reemplazar los parámetros con valores al ejecutar la consulta, utilice la cláusula `USING` en la instrucción `EXECUTE`.
+ Para eliminar una instrucción preparada de las instrucciones preparadas en un grupo de trabajo, utilice la instrucción `DEALLOCATE PREPARE`.

En las siguientes secciones, se proporciona información adicional acerca de cada una de estas instrucciones.

**Topics**
+ [PREPARE](querying-with-prepared-statements-prepare.md)
+ [EXECUTE](querying-with-prepared-statements-execute.md)
+ [DEALLOCATE PREPARE](querying-with-prepared-statements-deallocate-prepare.md)

# PREPARE
<a name="querying-with-prepared-statements-prepare"></a>

Prepara una instrucción que se ejecutará en un momento posterior. Las instrucciones preparadas se guardan en el grupo de trabajo actual con el nombre que especifique. La instrucción puede incluir parámetros en lugar de literales que se reemplazan cuando se ejecuta la consulta. Los parámetros que se van a reemplazar por valores se indican con signos de interrogación.

## Sintaxis
<a name="querying-with-prepared-statements-prepare-syntax"></a>

```
PREPARE statement_name FROM statement
```

En la siguiente tabla se describen estos parámetros.


****  

| Parámetro | Descripción | 
| --- | --- | 
| statement\$1name | Nombre de la instrucción a preparar. El nombre debe ser único dentro del grupo de trabajo. | 
| statement | Una consulta SELECT, CTAS o INSERT INTO. | 

## Ejemplos de PREPARE
<a name="querying-with-prepared-statements-prepare-examples"></a>

En los siguientes ejemplos se muestra el uso de la instrucción `PREPARE`. Los signos de interrogación indican los valores que debe proporcionar la instrucción `EXECUTE` cuando se ejecuta la consulta.

```
PREPARE my_select1 FROM
SELECT * FROM nation
```

```
PREPARE my_select2 FROM
SELECT * FROM "my_database"."my_table" WHERE year = ?
```

```
PREPARE my_select3 FROM
SELECT order FROM orders WHERE productid = ? and quantity < ?
```

```
PREPARE my_insert FROM
INSERT INTO cities_usa (city, state)
SELECT city, state
FROM cities_world
WHERE country = ?
```

```
PREPARE my_unload FROM
UNLOAD (SELECT * FROM table1 WHERE productid < ?)
TO 's3://amzn-s3-demo-bucket/'
WITH (format='PARQUET')
```

# EXECUTE
<a name="querying-with-prepared-statements-execute"></a>

Ejecuta una instrucción preparada. Los valores de los parámetros se especifican en la cláusula `USING`.

## Sintaxis
<a name="querying-with-prepared-statements-execute-syntax"></a>

```
EXECUTE statement_name [USING value1 [ ,value2, ... ] ]
```

*statement\$1name* es el nombre de la instrucción preparada. *value1* y *value2* son los valores que se especificarán para los parámetros de la instrucción.

## Ejemplos de EXCECUTE
<a name="querying-with-prepared-statements-execute-examples"></a>

En el siguiente ejemplo se ejecuta la instrucción preparada `my_select1`, que no contiene parámetros.

```
EXECUTE my_select1
```

En el siguiente ejemplo se ejecuta la instrucción preparada `my_select2`, que contiene un único parámetro.

```
EXECUTE my_select2 USING 2012
```

En el siguiente ejemplo se ejecuta la instrucción preparada `my_select3`, que contiene dos parámetros.

```
EXECUTE my_select3 USING 346078, 12
```

En el siguiente ejemplo se proporciona un valor de cadena para un parámetro de la instrucción preparada `my_insert`.

```
EXECUTE my_insert USING 'usa'
```

En el siguiente ejemplo se proporciona un valor numérico para el parámetro `productid` de la instrucción preparada `my_unload`.

```
EXECUTE my_unload USING 12
```

# DEALLOCATE PREPARE
<a name="querying-with-prepared-statements-deallocate-prepare"></a>

Elimina la instrucción preparada con el nombre especificado de la lista de instrucciones preparadas del grupo de trabajo actual.

## Sintaxis
<a name="querying-with-prepared-statements-deallocate-prepare-syntax"></a>

```
DEALLOCATE PREPARE statement_name
```

*statement\$1name* es el nombre de la instrucción preparada que se debe eliminar.

## Ejemplo
<a name="querying-with-prepared-statements-deallocate-prepare-examples"></a>

En el siguiente ejemplo, se elimina la instrucción preparada `my_select1` del grupo de trabajo actual.

```
DEALLOCATE PREPARE my_select1
```