

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 預備陳述式的 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
```

下表描述了這些參數。


****  

| 參數 | Description | 
| --- | --- | 
| 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
```

下列範例會執行 `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
```