
# 检查SQL语法 - CheckSql
#### 功能介绍
该API用于检查SQL语法。
#### 调试
您可以在[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/DLI/doc?api=CheckSql)中调试该接口。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限及授权项说明](https://support.huaweicloud.com/api-dli/dli_02_0375.html)。
- 如果使用身份策略授权，需具备如下身份策略权限。
  
  | 授权项 Action | 访问级别 Access Level | 资源类型（\*为必须） Resource Type (\*: required) | 条件键 Condition Key | 别名 Alias | 依赖的授权项 Dependencies |
  |:---|:---|:---|:---|:---|:---|
  | dli::checkSql                           | write                                           | -                                                                      | -                                              | -                                      | -                                                 |
     
  
 
#### URI
- URI格式： POST /v1.0/{project_id}/jobs/check-sql
  
- 参数说明
  表1URI 参数 
  | 参数名称       | 是否必选 | 参数类型   | 说明                                                                                     |
  |:---|:---|:---|:---|
  | project_id | 是    | String | 项目编号，用于资源隔离。获取方式请参考[获取项目ID](https://support.huaweicloud.com/api-dli/dli_02_0183.html)。 |
     
  
 
#### 请求消息
表2请求参数 
| 参数名称      | 是否必选 | 参数类型   | 说明                                                                                                                                                                                                                                                                                                                             |
|:---|:---|:---|:---|
| sql       | 是    | String | 待执行的SQL语句。                                                                                                                                                                                                                                                                                                                     |
| currentdb | 否    | String | SQL语句执行所在的数据库。 说明： - 在SQL里面已经包含db_name的情况下可以不选该参数，例如SQL为：*select * from db1.t1*。  - SQL里面不包含db_name时，不选该参数或者选错该参数均会导致语法校验不通过。   |
   
#### 响应消息
表3响应参数 
| 参数名称       | 是否必选 | 参数类型    | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
|:---|:---|:---|:---|
| is_success | 否    | Boolean | 执行请求是否成功。"true"表示请求执行成功。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| message    | 否    | String  | 系统提示信息，执行成功时，信息可能为空。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| job_type   | 否    | String  | 作业类型。包含DDL、DCL、IMPORT、EXPORT、QUERY、INSERT。 - DDL：创建修改删除元数据类型的作业  - DCL：权限授权与回收类型的作业  - IMPORT：外部数据入库类型的作业  - EXPORT：数据导出到外部类型的作业  - QUERY：运行查询语句类型的作业  - INSERT：向表追加新数据类型的作业   |
   
#### 请求示例
检查SQL语句"select \* from t1"的语法。
```
{
   "currentdb": "db1",
   "sql": "select * from t1"   
}
```
#### 响应示例
```
{
  "is_success": true,
  "message": "the sql is ok",
  "job_type":"QUERY"
}
```
#### 状态码
状态码如[表4]所示。
 表4状态码 
| 状态码 | 描述       |
|:---|:---|
| 200 | 请求成功。    |
| 400 | 请求错误。    |
| 500 | 内部服务器错误。 |
   
#### 错误码
调用接口出错后，将不会返回上述结果，而是返回错误码和错误信息，更多介绍请参见[错误码](https://support.huaweicloud.com/api-dli/dli_02_0056.html)。
