

# PREPARE
<a name="sql-prepare"></a>

创建名为 `statement_name` 的 SQL 语句以在稍后运行。该语句可以包含由问号表示的参数。要为参数提供值并运行预准备语句，请使用 [EXECUTE](sql-execute.md)。

## 摘要
<a name="sql-prepare-synopsis"></a>

```
PREPARE statement_name FROM statement
```

下表介绍了这些参数。


****  

| 参数 | 描述 | 
| --- | --- | 
| statement\$1name | 要执行的预准备语句的名称。此名称在工作组范围内必须唯一。 | 
| statement | SELECT、CTAS 或 INSERT INTO 查询。 | 

**注意**  
工作组中的最大预处理语句数为 1000。

## 示例
<a name="sql-prepare-examples"></a>

以下示例准备了不带参数的选择查询。

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

以下示例准备了包含参数的选择查询。`productid` 和 `quantity` 的值将由 `EXECUTE` 语句的 `USING` 子句提供：

```
PREPARE my_select2 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 = ?
```

## 其他资源
<a name="sql-prepare-additional-resources"></a>

[使用预准备语句](querying-with-prepared-statements-querying.md)

[EXECUTE](sql-execute.md)

[DEALLOCATE PREPARE](sql-deallocate-prepare.md)

[INSERT INTO](insert-into.md)

# EXECUTE
<a name="sql-execute"></a>

运行名称为 `statement_name` 的预准备语句。预准备语句中问号的参数值在逗号分隔列表的 `USING` 子句中定义。要创建预准备语句，请使用 [PREPARE](sql-prepare.md)。

## 摘要
<a name="sql-execute-synopsis"></a>

```
EXECUTE statement_name [ USING parameter1[, parameter2, ... ] ]
```

## 示例
<a name="sql-execute-examples"></a>

以下示例准备并执行不带参数的查询。

```
PREPARE my_select1 FROM 
SELECT name FROM nation 
EXECUTE my_select1
```

以下示例准备并执行带单个参数的查询。

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

这等同于：

```
SELECT * FROM "my_database"."my_table" WHERE year = 2012
```

以下示例准备并执行带两个参数的查询。

```
PREPARE my_select3 FROM 
SELECT order FROM orders WHERE productid = ? and quantity < ? 
EXECUTE my_select3 USING 346078, 12
```

## 其他资源
<a name="sql-execute-additional-resources"></a>

[使用预准备语句](querying-with-prepared-statements-querying.md)

[PREPARE](sql-prepare.md)

[INSERT INTO](insert-into.md)

# DEALLOCATE PREPARE
<a name="sql-deallocate-prepare"></a>

从当前工作组中的预准备语句中删除具有指定名称的预准备语句。

## 摘要
<a name="sql-deallocate-prepare-synopsis"></a>

```
DEALLOCATE PREPARE statement_name
```

## 示例
<a name="sql-deallocate-prepare-examples"></a>

以下示例从当前工作组中删除 `my_select1` 预准备语句。

```
DEALLOCATE PREPARE my_select1
```

## 其他资源
<a name="sql-deallocate-prepare-additional-resources"></a>

[使用预准备语句](querying-with-prepared-statements-querying.md)

[PREPARE](sql-prepare.md)