

 Amazon Redshift는 패치 198부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. 기존 Python UDF는 2026년 6월 30일까지 계속 작동합니다. 자세한 내용은 [블로그 게시물](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)을 참조하세요.

# PREPARE
<a name="r_PREPARE"></a>

실행을 위한 문을 준비합니다.

PREPARE는 준비된 문을 생성합니다. PREPARE 문이 실행될 때 지정된 문(SELECT, INSERT, UPDATE 또는 DELETE)이 구문 분석, 재작성 및 계획됩니다. 준비된 문에 대해 EXECUTE 명령이 실행될 때 Amazon Redshift는 (지정된 파라미터 값을 기반으로 성능을 개선하기 위해) 쿼리 실행 계획을 선택적으로 수정한 후 준비된 문을 실행할 수 있습니다.

## 구문
<a name="r_PREPARE-synopsis"></a>

```
PREPARE plan_name [ (datatype [, ...] ) ] AS statement
```

## 파라미터
<a name="r_PREPARE-parameters"></a>

 *plan\_name*   
이 특정한 준비된 문에 주어지는 임의의 이름입니다. 단일 세션 내에서 고유해야 하며 후속적으로 이전에 준비된 문을 실행하거나 할당 취소하는 데 사용됩니다.

 *DataType*   
준비된 문에 대한 파라미터의 데이터 형식입니다. 준비된 문 자체의 파라미터를 참조하려면 $1, $2 등(최대 $32767까지 가능)을 사용합니다.

 * 명령문*   
임의의 SELECT, INSERT, UPDATE 또는 DELETE 문입니다.

## 사용 노트
<a name="r_PREPARE_usage_notes"></a>

준비된 문은 파라미터를 취할 수 있습니다. 파라미터는 준비된 문이 실행될 때 문으로 대체되어 입력되는 값입니다. 준비된 문에 파라미터를 포함하려면 PREPARE 문에 데이터 형식 목록을 제공하고, 준비되는 문 자체에서 $1, $2의 표기법을 사용하여 위치에 따라 파라미터를 참조합니다. 파라미터의 최대 개수는 32767입니다. 문을 실행할 때 EXECUTE 문에서 이런 파라미터의 실제 값을 지정합니다. 자세한 내용은 [EXECUTE](r_EXECUTE.md) 섹션을 참조하세요.

준비된 문은 현재 세션이 진행되는 기간 동안만 지속됩니다. 세션이 종료되면 준비된 문이 삭제되므로 다시 사용하려면 준비된 문을 다시 만들어야 합니다. 이는 곧 다중 동시 데이터베이스 클라이언트가 단 하나의 준비된 문을 사용할 수는 없다는 의미이기도 하지만, 각 클라이언트는 사용할 준비된 문을 스스로 만들 수 있습니다. DEALLOCATE 명령을 사용하여 준비된 문을 수동으로 제거할 수 있습니다.

준비된 문은 단일 세션을 사용하여 많은 수의 유사한 문을 실행할 때 최대의 성능상 이점이 있습니다. 언급한 바와 같이, 준비된 문을 새로 실행할 때마다 Amazon Redshift는 지정된 파라미터 값을 기반으로 성능을 개선하도록 쿼리 실행 계획을 수정할 수 있습니다. Amazon Redshift가 특정 EXECUTE 문에 대해 선택한 쿼리 실행 계획을 검사하려면 [EXPLAIN](r_EXPLAIN.md) 명령을 사용합니다.

Amazon Redshift가 쿼리 최적화를 위해 수집하는 통계와 쿼리 계획에 대한 자세한 내용은 [ANALYZE](r_ANALYZE.md) 명령을 참조하세요.

## 예제
<a name="sub-examples-prepare"></a>

임시 테이블을 생성하고 INSERT 문을 준비한 후 실행합니다.

```
DROP TABLE IF EXISTS prep1;
CREATE TABLE prep1 (c1 int, c2 char(20));
PREPARE prep_insert_plan (int, char)
AS insert into prep1 values ($1, $2);
EXECUTE prep_insert_plan (1, 'one');
EXECUTE prep_insert_plan (2, 'two');
EXECUTE prep_insert_plan (3, 'three');
DEALLOCATE prep_insert_plan;
```

SELECT 문을 준비한 후 실행합니다.

```
PREPARE prep_select_plan (int)
AS select * from prep1 where c1 = $1;
EXECUTE prep_select_plan (2);
EXECUTE prep_select_plan (3);
DEALLOCATE prep_select_plan;
```

## 다음 사항도 참조하세요.
<a name="r_PREPARE-see-also"></a>

 [DEALLOCATE](r_DEALLOCATE.md), [EXECUTE](r_EXECUTE.md) 