

# 파라미터화된 쿼리 사용
<a name="querying-with-prepared-statements"></a>

Athena 파라미터화된 쿼리를 사용하여 실행 시 동일한 쿼리를 다른 파라미터 값으로 다시 실행하고 SQL 명령어 삽입 공격을 방지할 수 있습니다. Athena에서 파라미터화된 쿼리는 모든 DML 쿼리나 SQL 준비된 문에서 실행 파라미터 형태를 취할 수 있습니다.
+ 실행 파라미터가 있는 쿼리는 한 단계로 수행할 수 있으며 작업 그룹에 특정되지 않습니다. 파라미터화하려는 값의 아무 DML 쿼리에 물음표를 넣습니다. 쿼리를 실행할 때 실행 파라미터 값을 순차적으로 선언합니다. 파라미터 선언과 파라미터 값 할당은 동일한 쿼리에서 분리된 방식으로 수행할 수 있습니다. 준비된 문과 달리 실행 파라미터를 사용하여 쿼리를 제출할 경우 작업 그룹을 선택할 수 있습니다.
+ 준비된 문에는 두 개의 개별 SQL 문인 `PREPARE` 및 `EXECUTE`가 필요합니다. 먼저 `PREPARE` 문에서 파라미터를 정의합니다. 그런 다음 정의한 파라미터의 값을 제공하는 `EXECUTE` 문을 실행합니다. 준비된 문은 작업 그룹마다 다르므로 해당 문이 속한 작업 그룹의 컨텍스트 외부에서는 실행할 수 없습니다.

## 고려 사항 및 제한 사항
<a name="querying-with-prepared-statements-considerations-and-limitations"></a>
+ 파라미터화된 쿼리는 Athena 엔진 버전 2 이상에서만 지원됩니다. Athena 엔진 버전에 대한 자세한 내용은 [Athena 엔진 버전 관리](engine-versions.md) 단원을 참조하세요.
+ 현재 파라미터화된 쿼리는 `SELECT`, `INSERT INTO`, `CTAS`, `UNLOAD` 문에만 지원됩니다.
+ 파라미터화된 쿼리에서 파라미터는 위치 파라미터이며 `?`로 표시됩니다. 파라미터에는 쿼리의 순서에 따라 값이 할당됩니다. 명명된 파라미터는 지원되지 않습니다.
+ 현재 `?` 파라미터는 `WHERE`절에만 배치할 수 있습니다. `SELECT ? FROM table` 등의 구문은 지원되지 않습니다.
+ 물음표 파라미터는 큰 따옴표나 작은 따옴표로 묶을 수 없습니다(즉,`'?'` 및 `"?"`의 경우 잘못된 구문임).
+ SQL 실행 파라미터를 문자열로 처리하려면 큰따옴표 대신 작은따옴표로 묶어야 합니다.
+ 필요한 경우 파라미터화된 용어의 값을 입력할 때 `CAST` 함수를 사용할 수 있습니다. 예를 들어 쿼리에서 파라미터화한 `date` 유형의 열이 있고 날짜 `2014-07-05`에 대해 쿼리하려는 경우 파라미터 값으로 `CAST('2014-07-05' AS DATE)`를 입력하면 결과가 반환됩니다.
+ 준비된 문은 작업 그룹에 특정하며 준비된 문 이름은 작업 그룹 내에서 고유해야 합니다.
+ 준비된 문에 대한 IAM 권한이 필요합니다. 자세한 내용은 [준비된 문에 대한 액세스 구성](security-iam-athena-prepared-statements.md) 섹션을 참조하세요.
+ Athena 콘솔에서 실행 파라미터가 있는 쿼리는 최대 25개의 물음표로 제한됩니다.

**Topics**
+ [고려 사항 및 제한 사항](#querying-with-prepared-statements-considerations-and-limitations)
+ [실행 파라미터 사용](querying-with-prepared-statements-querying-using-execution-parameters.md)
+ [준비된 문 사용](querying-with-prepared-statements-querying.md)
+ [추가 리소스](querying-with-prepared-statements-additional-resources.md)