
# 在指定Session中执行SQL - ExecuteAuraV2SqlStatement
#### 功能介绍
在指定的Session下执行SQL语句。
用户可通过此接口执行SQL语句，输入为SQL语句、SQL Session id、绑定参数等信息，返回语句执行结果或statement id。
此接口支持异步和同步两种执行模式，由入参is_sync参数决定。如果是异步执行，配套使用接口ShowSqlStatementResult查询语句结果。
如果是同步执行，接口会等待一段时间接收结果，如果执行完毕会返回执行结果，如果没有执行完毕，会返回一个运行中状态，后续可以使用接口ShowSqlStatementResult查询语句结果。
#### 调用方法
请参见[如何调用API](https://support.huaweicloud.com/api-aidatalake/aidatalake_02_0003.html)。
#### URI
POST /v2/workspaces/{workspace_id}/aura-sessions/statements
表1路径参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                          |
|:---|:---|:---|:---|
| workspace_id | 是    | String | **参数解释**：工作空间的ID。 **约束限制**：不涉及。 **取值范围**：长度为1\~36个字符，支持大小写英文字母、数字、连字符。 **默认取值**：不涉及。 |
   
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                 |
|:---|:---|:---|:---|
| X-Auth-Token | 否    | String | **参数解释**：租户token。 **约束限制**：不涉及。 **取值范围**：不涉及。 **默认取值**：不涉及。 |
   
表3请求Body参数 
| 参数                   | 是否必选 | 参数类型                     | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
|:---|:---|:---|:---|
| session_id           | 是    | String                   | **参数解释**：Session的ID。 **取值范围**：长度为1\~36个字符，支持大小写英文字母、数字、连字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| statement            | 是    | String                   | **参数解释**：SQL statement信息。 **约束限制**：不涉及。 **取值范围**：0\~10000000。 **默认取值**：不涉及。                                                                                                                                                                                                                                                                                                                                                                                                            |
| limit                | 否    | Integer                  | **参数解释**：limit限制。 **约束限制**：不涉及。 **取值范围**：1\~2147483647。 **默认取值**：不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                  |
| bindings             | 否    | Array\<Array\<String\>\> | **参数解释**：参数绑定列表。 **约束限制**：不涉及。 **取值范围**：0\~10000。 **默认取值**：不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                        |
| is_sync              | 否    | Boolean                  | **参数解释**：同步执行或异步执行。 **约束限制**：不涉及。 **取值范围**： - true：同步。   - false：异步。    **默认取值**：不涉及。                                   |
| resultset_fetch_mode | 否    | String                   | **参数解释**：获取结果集的方式。 **约束限制**：不涉及。 **取值范围**： - DEFAULT：直接返回结果集。   - READ_OBS：返回结果集在桶上的路径，而不是直接返回结果集。    **默认取值**：DEFAULT。 |
   
#### 响应参数
**状态码：200**
表4响应Body参数 
| 参数 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
|:---|:---|:---|
| -  | String | **参数解释**：执行SQL的响应信息。 **取值范围**： 异步或同步执行超时执行结果： **StatementResponse** - **status**（Integer）：请求整体执行状态。 - 0：成功。   - -1：失败。   - 1： 执行中。   - 2：执行完成但无结果集。   - 3：排队等待中。   - 4：语句未正常执行。     - **session_id**（String，UUID）：当前执行会话唯一标识。   - **statement_id**（String，UUID）：本次语句执行唯一标识。    同步执行正常返回结果： **StatementResponse** - **status**（Integer）：请求整体执行状态 - 0：成功。   - -1：失败。   - 1： 执行中。   - 2：执行完成但无结果集。   - 3：排队等待中。   - 4：语句未正常执行。     - **session_id**（String，UUID）：当前执行会话唯一标识。   - **statement_id**（String，UUID）：本次语句执行唯一标识。   - **results**（Array of StatementResult objects）：每条SQL执行结果。    **StatementResult** - **status**（String）：SQL执行状态。 - PGRES_TUPLES_OK：查询成功并含结果集。   - PGRES_COMMAND_OK：执行成功无结果。   - PGRES_FATAL_ERROR：执行失败。     - **statement_id**（String）：语句ID。   - **num_rows**（Integer）：查询结果总行数。   - **row_count**（Integer）：当前页实际返回行数。   - **page_no**（Integer）：当前页码。   - **page_count**（Integer）： 总页数。   - **err_code**（String）：错误码，0表示无错误，其他数值参见错误信息。   - **sql_state**（String）：SQL状态码。   - **message**（String）：执行信息或错误详情。   - **result_set**（Object，type: StatementResultSet）：仅查询成功时含有效数据，否则为空结构。    **StatementResultSet** - **columns**（Array of RowType objects）：列元数据列表。   - **rows**（Array of String arrays）：实际数据行，每行顺序与columns对应。    **RowType** - **name**（String）：列名。   - **table_id**（Integer）：表的ID。   - **column_id**（Integer）：列的ID。   - **format**（Integer）：格式。   - **type**（Integer）：PG类型OID。   - **size**（Integer）：大小。   - **type_mod**（Integer）：typemod。    |
   
**状态码：400**
表5响应Body参数 
| 参数           | 参数类型   | 描述                                                                                    |
|:---|:---|:---|
| error_code   | String | **参数解释**：错误码。 **取值范围**：长度为8\~36个字符。      |
| error_msg    | String | **参数解释**：错误描述。 **取值范围**：长度为2\~4096个字符。   |
| solution_msg | String | **参数解释**：解决方案描述。 **取值范围**：长度为2\~4096个字符。 |
   
**状态码：401**
表6响应Body参数 
| 参数           | 参数类型   | 描述                                                                                    |
|:---|:---|:---|
| error_code   | String | **参数解释**：错误码。 **取值范围**：长度为8\~36个字符。      |
| error_msg    | String | **参数解释**：错误描述。 **取值范围**：长度为2\~4096个字符。   |
| solution_msg | String | **参数解释**：解决方案描述。 **取值范围**：长度为2\~4096个字符。 |
   
**状态码：403**
表7响应Body参数 
| 参数           | 参数类型   | 描述                                                                                    |
|:---|:---|:---|
| error_code   | String | **参数解释**：错误码。 **取值范围**：长度为8\~36个字符。      |
| error_msg    | String | **参数解释**：错误描述。 **取值范围**：长度为2\~4096个字符。   |
| solution_msg | String | **参数解释**：解决方案描述。 **取值范围**：长度为2\~4096个字符。 |
   
**状态码：404**
表8响应Body参数 
| 参数           | 参数类型   | 描述                                                                                    |
|:---|:---|:---|
| error_code   | String | **参数解释**：错误码。 **取值范围**：长度为8\~36个字符。      |
| error_msg    | String | **参数解释**：错误描述。 **取值范围**：长度为2\~4096个字符。   |
| solution_msg | String | **参数解释**：解决方案描述。 **取值范围**：长度为2\~4096个字符。 |
   
**状态码：408**
表9响应Body参数 
| 参数           | 参数类型   | 描述                                                                                    |
|:---|:---|:---|
| error_code   | String | **参数解释**：错误码。 **取值范围**：长度为8\~36个字符。      |
| error_msg    | String | **参数解释**：错误描述。 **取值范围**：长度为2\~4096个字符。   |
| solution_msg | String | **参数解释**：解决方案描述。 **取值范围**：长度为2\~4096个字符。 |
   
**状态码：500**
表10响应Body参数 
| 参数           | 参数类型   | 描述                                                                                    |
|:---|:---|:---|
| error_code   | String | **参数解释**：错误码。 **取值范围**：长度为8\~36个字符。      |
| error_msg    | String | **参数解释**：错误描述。 **取值范围**：长度为2\~4096个字符。   |
| solution_msg | String | **参数解释**：解决方案描述。 **取值范围**：长度为2\~4096个字符。 |
   
#### 请求示例
在指定的Session下执行SQL语句。
```
POST /v2/workspaces/{workspace_id}/aura-sessions/statements
{
  "statement" : "select * from aaa",
  "limit" : 100,
  "session_id" : "string",
  "bindings" : [ [ "string" ] ],
  "is_maintain_statement" : false,
  "resultset_fetch_mode" : "DEFAULT",
  "is_sync" : true
}
```
#### 响应示例
**状态码：200**
请求成功。
```
{
  "status" : 0,
  "session_id" : "6399466e-8908-4c9d-8399-48479c8b06f7",
  "statement_id" : "49131d25-1824-4f29-860c-832bdd19dfd3",
  "results" : [ {
    "status" : "PGRES_COMMAND_OK",
    "statement_id" : "49131d25-1824-4f29-860c-832bdd19dfd3",
    "num_rows" : 1,
    "row_count" : 1,
    "page_count" : 1,
    "page_no" : 1,
    "err_code" : "0",
    "sql_state" : "0",
    "message" : "CREATE SCHEMA",
    "result_set" : { }
  } ]
}
```
**状态码：400**
非法请求。
```
{
  "error_code" : "AIDataLake.00092031",
  "error_msg" : "Invalid parameter name",
  "solution_msg" : "Please enter parameters in the correct format."
}
```
**状态码：401**
未经授权。
```
{
  "error_code" : "APIG.1002",
  "error_msg" : "Incorrect token or token resolution failed"
}
```
**状态码：403**
请求被拒绝访问。
```
{
  "error_code" : "AIDataLake.00090030",
  "error_msg" : "Unauthorized requests.",
  "solution_msg" : "Check permissions and retry after authorization."
}
```
**状态码：404**
所请求的资源不存在。
```
{
  "error_code" : "AIDataLake.00090009",
  "error_msg" : "The resource not exists.",
  "solution_msg" : "Please try to use correct info."
}
```
**状态码：408**
请求超时。
```
{
  "error_code" : "common.00000408",
  "error_msg" : "timeout exception occurred"
}
```
**状态码：500**
服务器内部错误。
```
{
  "error_code" : "common.00000500",
  "error_msg" : "internal error"
}
```
#### 状态码
| 状态码 | 描述         |
|:---|:---|
| 200 | 请求成功。      |
| 400 | 非法请求。      |
| 401 | 未经授权。      |
| 403 | 请求被拒绝访问。   |
| 404 | 所请求的资源不存在。 |
| 408 | 请求超时。      |
| 500 | 服务器内部错误。   |
   
