> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coze.cn/llms.txt
> Use this file to discover all available pages before exploring further.

低代码工作流中的 SQL 自定义节点用于对指定数据库进行常见的 SQL 操作。
:::notice 注意
数据库节点已更名为 SQL 自定义节点。
:::
## 节点说明 {#5a73bd1b}
SQL 自定义节点可以连接智能体或应用中指定的数据库，对数据库进行新增、查询、编辑、删除等常见操作，实现动态的数据管理。SQL 自定义节点需要指定待操作的数据库表和对应的 SQL 语句，支持通过自然语言智能生成 SQL 语句。
:::notice 注意
* 开发调试阶段不会改动数据库原表，在调试区查看到的是测试数据，和数据库中的真实数据是隔离的。
* 在低代码工作流中调试 SQL 自定义节点时，不能使用库数据表中的真实数据，需要先插入数据后再进行查、删、改等操作的测试。
:::
低代码工作流还支持通过图形化方式进行数据的增、删、改、查操作，当你不熟悉 SQL 语句时，可使用以下节点操作数据库。

* [新增数据节点](/guides/database_insert_node)
* [查询数据节点](/guides/database_select_node)
* [更新数据节点](/guides/database_update_node)
* [删除数据节点](/guides/database_delete_node)

## 配置 SQL 自定义节点 {#f1f4f8dc}
### 输入 {#ec81b90c}
节点的输入参数，即 SQL 语句中需要使用的参数，可以设置为固定值，也可以引用上游节点的输出参数。
### 数据表 {#a434f521}
在数据表区域，你需要根据页面提示添加需要操作的数据表，每个 SQL 自定义节点仅支持操作一张数据表。
在调试期间，SQL 自定义节点显示和使用的是数据表的**测试数据**，而非数据库中的真实线上数据。单击数据表或单击查看数据，弹出数据表的详情页，可查看此数据表的测试数据。你可以手动添加或修改测试数据，也可以试运行 SQL 自定义节点，通过 SQL 语句插入或修改数据。
![Image=1166x337](https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/39d6232787be4644b846ea3f8c0e8cab~tplv-goo7wpa0wc-image.image)
### SQL {#8b4c8924}
在 SQL 区域输入需要对数据表执行的 SQL 操作，兼容 SQL92 的常用语法。SQL 语句中可以引用SQL 自定义节点输入参数中定义的变量，引用格式为 `{{变量名}}`。
:::notice 注意
每个 SQL 自定义节点中仅支持添加一条 SQL 语句。
:::
你可以自行编写 SQL 语句，也可以根据页面提示由 AI 帮你生成一段 SQL 语句。单击**自动生成**，并在弹出的页面中使用自然语言描述要执行的操作，单击**自动生成**生成 SQL 语句，确认无误后单击**使用Use**。
![Image=292x306](https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/89160002c4ee4810a079d5f5260be573~tplv-goo7wpa0wc-image.image)
### 输出 {#0475a9cc}
SQL 自定义节点的输出参数是 SQL 执行后的输出内容，固定为以下四项：

* outputList：SQL 执行后数据表中的字段和数据。你可以按需新增子项，注意变量名需与 SQL 中定义的字段名一致、数据类型需要和数据表中定义的数据类型一致。
* rowNum：执行新增、删除、更新操作时受影响的行数，执行查询操作时值固定为 0。
* errorBody：节点执行失败时的详细信息，包括 errorMessage 和 errorCode。
* isSuccess：节点执行状态，true 表示执行成功，false 表示执行失败。

其中`isSuccess`、`errorBody` 仅在节点的异常处理方式设置为**返回设定内容**或**执行异常流程**时返回，用于节点执行异常时传递详细信息。
### 异常处理 {#17217e79}
默认情况下，节点运行超时、运行异常时，工作流会中断，工作流调试界面或 API 中会返回错误信息。你也可以手动设置节点运行超时等异常情况下的处理方式，例如超时时间、是否重试、是否跳转异常分支等。
<!-- @cols-width: 188,664 -->
| | | \
|**异常处理设置** |**说明** |
|---|---|
| | | \
|超时时间 |超时时间指节点运行的最大耗时，如果超过此时长，则判断为节点运行超时。 |\
| |默认情况下，节点的超时时间默认为 60s，即 1 分钟。你也可以将其改为 0.1s~60s，灵活控制超时时间。 |
| | | \
|重试次数 |节点运行超时或异常时，默认不重试，你也可以设置为重试 1 次。 |
| | | \
|异常处理方式 |节点运行超时或异常时，默认中断工作流。你也可以手动修改此节点的异常处理方式： |\
| | |\
| |* **中断流程**：工作流执行中断，不再运行后续节点。 |\
| |* **返回设定内容**：发生异常后，工作流运行不会中断。开发者可自定义设置需要返回的输出字段内容，必须是输出中已定义的字段，且格式为合法的 JSON 格式。另外，节点还会返回输出参数 `isSuccess`、`errorBody`，传递节点异常的详细信息。 |\
| |* **执行异常流程**：发生异常后，工作流运行不会中断，转而执行异常流程分析，开发者需要为新增的异常分支配置处理流程。异常信息会通过节点的输出参数 `isSuccess`、`errorBody` 返回。 |

![Image=307x280](https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/29a3611502344180aed9eaf50fe9e2a7~tplv-goo7wpa0wc-image.image)


## 示例 {#7c3a3755}
你可以在工作流中添加大模型节点和 SQL 自定义节点，实现动态生成 SQL 语句并对数据库执行 SQL 操作。例如在工作流中添加大模型节点，设定其角色为专业的 SQL 语句生成助手，然后在 SQL 自定义节点中，引用大模型生成的 SQL 语句。当你输入自然语言描述的数据库操作需求（`获取 reading_notes 数据表中的所有数据`）时，大模型节点会迅速将其精准转换为纯 SQL 语句 `SELECT * FROM reading_notes;`，SQL 自定义节点则会根据该语句执行相应的数据库操作。
![Image=2425x650](https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/e525409629cd4aa2a8355f9e71208210~tplv-goo7wpa0wc-image.image)

<!-- @cols-width: 143,429,290 -->
| | | | \
|**节点类型** |**说明** |**示例** |
|---|---|---|
| | | | \
|开始 |工作流的起始节点，添加变量 `input`，变量类型为 `String`。 |![Image=200x108](https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/81c172ccfa7d40caa01459b250d870d5~tplv-goo7wpa0wc-image.image) |
| | | | \
|大模型 |添加大模型节点，用于将自然语言描述的数据库操作转换为 SQL 语句。 |\
| | |\
| |* **输入**：添加 `input`，其值需引用开始节点的 `input` 变量。 |\
| |* **系统提示词**：添加大模型提示词，需指定将自然语言描述的数据库操作转换为 SQL 语句，并确保返回结果仅包含 SQL 语句，无其他描述信息。 |\
| |* **用户提示词**：设置为 ` {{input}}`。 |\
| |* **输出**：添加 `output`，变量类型为 `String`。 |\
| | |\
| | |![Image=200x597](https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/12c278c6f507404c9fd815a5a20acd48~tplv-goo7wpa0wc-image.image) |
| | | | \
|SQL 自定义 |添加 SQL 自定义节点，执行数据库操作。 |\
| | |\
| |* **输入**：添加 `input`，其值需引用大模型节点的 `output` 变量。 |\
| |* **数据表**：添加需要执行操作的数据表。 |\
| |* **SQL**：设置为` {{input}}`。 |\
| |* **输出**：固定为 `outputList`、`rowNum`。 |![Image=200x296](https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/3bcdc25f331745c38da6bb57b20b908d~tplv-goo7wpa0wc-image.image) |
| | | | \
|结束 |工作流的结束节点，添加变量 `output`，引用 SQL 自定义节点的`outputList` 参数，即输出 SQL 的执行结果。 |![Image=200x131](https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/ca734808d0c24d0d9f0222b5fcc165d5~tplv-goo7wpa0wc-image.image) |

## 常见问题 {#7ce381d2}
### 为什么调试 SQL 自定义节点的结果和线上效果不一致？ {#e446f52a}
调试工作流时，SQL 自定义节点使用的是临时的测试数据，线上执行工作流时使用的是数据库中的真实数据，所以统计查询的结果会有差异。
### 为什么 GROUP_CONCAT 的结果会被截断？ {#80db90bb}
GROUP_CONCAT 是 MySQL 中的一个聚合函数，用于将多行数据连接成一行字符串。MySQL 对该函数的输出长度有一个默认的限制，这个限制由系统变量 group_concat_max_len 控制，在扣子编程中，这个限制为 1024 字节且不可调整。如果 GROUP_CONCAT 合并后的结果超过这个长度，会自动截断超出部分。
不建议在 SQL 节点中处理类似的拼接、计算逻辑，你可以选择用 SQL 节点查询数据，再通过代码节点去拼接最终结果。
