

# 준비된 문의 SQL 구문
<a name="querying-with-prepared-statements-sql-statements"></a>

`PREPARE`, `EXECUTE`, `DEALLOCATE PREPARE` SQL 문을 사용하여 Athena 콘솔 쿼리 편집기에서 파라미터화된 쿼리를 실행할 수 있습니다.

 
+ 일반적으로 리터럴 값을 사용하는 파라미터를 지정하기 위해 `PREPARE`문에 물음표를 사용합니다.
+ 쿼리를 실행할 때 파라미터를 값으로 바꾸려면 `EXECUTE` 문에 `USING` 절을 사용합니다.
+ 작업 그룹의 준비된 문에서 준비된 문을 제거하려면 `DEALLOCATE PREPARE` 문을 사용합니다.

다음 단원에서는 이러한 문 각각에 대한 추가 정보를 제공합니다.

**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>

나중에 실행할 문을 준비합니다. 준비된 문은 사용자가 지정한 이름으로 현재 작업 그룹에 저장됩니다. 이 문은 쿼리가 실행될 때 리터럴을 대신해 대체될 파라미터를 포함할 수 있습니다. 값으로 대체할 파라미터는 물음표로 표시됩니다.

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

```
PREPARE statement_name FROM statement
```

다음 표는 이러한 파라미터에 대해 설명합니다.


****  

| 파라미터 | 설명 | 
| --- | --- | 
| statement\$1name | 준비되는 문의 이름입니다. 이 이름은 작업 그룹 내에서 고유해야 합니다. | 
| 설명 | SELECT, CTAS 또는 INSERT INTO 쿼리. | 

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

다음 예제는 `PREPARE` 문의 사용을 보여줍니다. 물음표는 쿼리 실행 시 `EXECUTE` 문이 제공할 값을 나타냅니다.

```
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>

준비된 문을 실행합니다. 파라미터의 값은 `USING` 절에서 지정합니다.

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

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

*statement\$1name*은 준비된 문의 이름입니다. *value1* 및 *value2*는 문의 파라미터에 지정될 값입니다.

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

다음 예제는 파라미터를 포함하지 않는 준비된 문 `my_select1`을 실행합니다.

```
EXECUTE my_select1
```

다음 예제는 하나의 파라미터를 포함한 준비된 문 `my_select2`를 실행합니다.

```
EXECUTE my_select2 USING 2012
```

다음 예제는 2개의 파라미터를 포함한 준비된 문 `my_select3`을 실행합니다.

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

다음 예제는 준비된 문 `my_insert`의 파라미터에 문자열 값을 제공합니다.

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

다음 예제는 준비된 문 `my_unload`의 `productid` 파라미터에 숫자 값을 제공합니다.

```
EXECUTE my_unload USING 12
```

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

현재 작업 그룹의 준비된 문 목록에서 지정된 이름을 가진 준비된 문을 제거합니다.

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

```
DEALLOCATE PREPARE statement_name
```

*statement\$1name*은 제거할 준비된 문의 이름입니다.

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

다음 예제는 현재 작업 그룹에서 준비된 문 `my_select1`을 제거합니다.

```
DEALLOCATE PREPARE my_select1
```