# CREATE FOREIGN DATA WRAPPER
#### 功能描述
创建一个新的外部数据封装器。
#### 注意事项
只有在内部初始化阶段或升级脚本中可以创建外部数据封装器，其他场景下用户无法直接使用该语法。
#### 语法格式
```
CREATE FOREIGN DATA WRAPPER name
[ HANDLER handler_function | NO HANDLER ]
[ VALIDATOR validator_function | NO VALIDATOR ]
[ OPTIONS ( { option 'value' } [, ... ] ) ];
```
![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/figure/zh-cn_image_0000002793708065.png)
#### 参数说明
- **name**
  创建的外部数据封装器的名称。
  外部数据封装器的名称必须在数据库中唯一。
  
- **HANDLER handler_function**
  handler_function指已经注册了的函数的名称，用于为外部表检索执行的处理器函数。处理器函数handler_function必须没有参数，并且其返回类型必须为fdw_handler。
  可以不使用处理器函数进行创建外部数据封装器，但是使用这种数据封装器的外部表只能被声明，无法被访问。
  
- **NO HANDLER**
  在创建数据封装器时，不设置（使用）处理器函数，指定NO HANDLER创建的数据封装器的外部表只能被声明，无法被访问。
  
- **VALIDATOR validator_function**
  validator_function：表示已经注册了的函数的名字，用来检查提供给外部数据封装器的通用验证选项，还有使用该外部数据封装器的外部服务器、用户映射和外部表的验证选项。如果没有验证器选项（函数）或声明了NO VALIDATOR，那么在创建时将不检查选项（外部数据封装器可能在运行时忽略或拒绝无效的选项说明）。
  验证器选项（函数）validator_function必须接受两个参数：
  - 一个类型为text\[\]，包含存储在系统目录中的选项的数组。
  
  - 一个类型为oid，包含这些选项的系统目录的OID。
   
- **NO VALIDATOR**
  在创建时暂不设置验证器函数。
  
- **OPTIONS ( option 'value' \[, ... \] )**
  外部数据封装器声明选项。允许指定OPTIONS ( option 'value' \[, ... \] )是特定于每一个外部数据封装器的，并且是通过外部数据封装器中验证器函数进行验证的。选项名options必须符合唯一约束。
  
 
#### 相关链接
[ALTER FOREIGN DATA WRAPPER](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/gaussdb-08-0188.html)，[DROP FOREIGN DATA WRAPPER](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/gaussdb-08-0298.html)
