执行 SQL
通过 SQL 窗口执行指定数据源上的 SQL,并返回执行决策、规则和权限预检摘要以及结果集预览。
请求地址:/openapi/v1/sql/execute
请求方法:POST
请求参数
| 参数 | 类型 | 是否必选 | 说明 | 示例 |
|---|---|---|---|---|
| datasourceId | String | 是 | 数据源 ID。不支持数据库分组。 | ds-dkl5x56dhbv6 |
| databaseName | String | 否 | 数据库名称。目标数据源使用库(Database)层级时支持传入。 | test_database |
| schemaName | String | 否 | Schema 名称。目标数据源使用 Schema 层级时支持传入。 | test_schema |
| sql | String | 是 | 要执行的 SQL 文本。 | SELECT 1 FROM dual |
请求示例
{
"sql": "SELECT 1 FROM dual",
"datasourceId": "ds-dkl5x56dhbv6"
}
返回参数
| 参数 | 类型 | 说明 | 示例 |
|---|---|---|---|
| success | Boolean | 请求是否成功。 | true |
| requestId | String | OpenAPI 请求 ID。 | Lm1d3ICW-ekllfZXnejij1TIdeia6KON |
| data | Object | 执行结果。 | 无 |
| data.decision | String | 执行决策:EXECUTED、REJECTED、NEED_CONFIRMATION、NEED_SQL_TASK、FAILED。 | EXECUTED |
| data.datasourceId | String | 数据源 ID。 | ds-dkl5x56dhbv6 |
| data.databaseName | String | 数据库名称。未传入或目标数据源不适用时,可能为空或不返回。 | test_database |
| data.schemaName | String | Schema 名称。未传入或目标数据源不适用时,可能为空或不返回。 | test_schema |
| data.checkResults | Array | 规则检查和权限预检摘要。 | [{"hasError":false,"hasWarn":false,"allowSubmit":true,"violateList":[]}] |
| data.resultSets | Array | SQL 执行结果集预览。 | [{"sqlId":"QgjvEenHoLvMsbvbhuVWPdCyKJaoTGKY","status":"success","columns":[{"name":"1","type":"NUMBER"}],"rows":[{"col1":"1"}],"affectedRows":-1,"rowCount":1,"elapsedTimeMs":32}] |
| message | String | 请求失败时的异常信息。 | 无 |
data.checkResults 字段
| 参数 | 类型 | 说明 | 示例 |
|---|---|---|---|
data.checkResults[].hasError | Boolean | 是否存在 Error、Syntax、Permission 等阻断项。 | false |
data.checkResults[].hasWarn | Boolean | 是否存在 Warning、Index 等提示项。 | false |
data.checkResults[].allowSubmit | Boolean | 是否允许提交后续处理。 | true |
data.checkResults[].violateList | Array | 规则检查发现的违规项列表。 | [] |
data.resultSets 字段
| 参数 | 类型 | 说明 | 示例 |
|---|---|---|---|
data.resultSets[].sqlId | String | 本次 SQL 的标识。 | QgjvEenHoLvMsbvbhuVWPdCyKJaoTGKY |
data.resultSets[].status | String | 结果集状态。 | success |
data.resultSets[].columns | Array | 返回列信息。 | [{"name":"1","type":"NUMBER"}] |
data.resultSets[].rows | Array | 返回行数据。 | [{"col1":"1"}] |
data.resultSets[].affectedRows | Integer | 受影响的行数。 | -1 |
data.resultSets[].rowCount | Integer | 返回行数。 | 1 |
data.resultSets[].elapsedTimeMs | Integer | SQL 执行耗时,单位为毫秒。 | 32 |
columns 数组中的对象包含以下字段:
| 参数 | 类型 | 说明 | 示例 |
|---|---|---|---|
data.resultSets[].columns[].name | String | 列名称。 | 1 |
data.resultSets[].columns[].type | String | 列类型。 | NUMBER |
调用成功示例
{
"success": true,
"requestId": "Lm1d3ICW-ekllfZXnejij1TIdeia6KON",
"data": {
"decision": "EXECUTED",
"datasourceId": "ds-dkl5x56dhbv6",
"checkResults": [
{
"hasError": false,
"hasWarn": false,
"allowSubmit": true,
"violateList": []
}
],
"resultSets": [
{
"sqlId": "QgjvEenHoLvMsbvbhuVWPdCyKJaoTGKY",
"status": "success",
"columns": [
{
"name": "1",
"type": "NUMBER"
}
],
"rows": [
{
"col1": "1"
}
],
"affectedRows": -1,
"rowCount": 1,
"elapsedTimeMs": 32
}
]
}
}