# EXECUTE
#### 功能描述
执行一个准备好的预备语句。因为预备语句只在会话的生命期里存在，所以预备语句必须是在当前会话中更早用PREPARE语句创建的。
#### 注意事项
- 如果创建预备语句时，PREPARE语句声明了一些参数，那么传递给EXECUTE语句的必须是一个兼容的参数集，否则会出现错误。如果未在预备语句声明中定义参数，则后续EXECUTE语句中传入的任何合法参数绑定都将被系统静默忽略。
- 如果预备语句所依赖的表结构发生变化时（如：添加、删除或修改列定义），缓存计划中期望的结果结构可能与实际的表结构已存在不匹配情况，当后续再执行该预备语句时，将导致非预期结果。
 
#### 语法格式
```
EXECUTE name [ ( parameter [, ...] ) ];
```
![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/figure/zh-cn_image_0000002764309296.png)
#### 参数说明
- **name**
  要执行的预备语句的名称。
  
- **parameter**
  给预备语句的参数的具体数值。它必须是一个和生成与创建这个预备语句时指定参数的数据类型相兼容的值的表达式，不支持ROWNUM作为参数。
  
 
 #### 示例
```
--创建表reason。
gaussdb=# CREATE TABLE reason ( 
    CD_DEMO_SK          int NOT NULL,
    CD_GENDER           varchar(10),
    CD_MARITAL_STATUS   varchar(10)
);
--为一个INSERT语句创建一个预备语句然后执行它。
gaussdb=# PREPARE insert_reason(int,varchar(10),varchar(10)) AS INSERT INTO reason VALUES($1,$2,$3);
gaussdb=# EXECUTE insert_reason(52, 'AAAAAAAADD', 'reason 52'); 
--查询数据。
gaussdb=# SELECT * FROM reason;
 cd_demo_sk | cd_gender  | cd_marital_status 
------------+------------+-------------------
         52 | AAAAAAAADD | reason 52
(1 row)
--删除表reason。
gaussdb=# DROP TABLE reason;
```
#### 相关链接
[PREPARE](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/gaussdb-08-0361.html)，[DEALLOCATE](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/gaussdb-08-0286.html)
