Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .translation-init
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Translation initialization: 2025-10-22T01:38:35.795002
Translation initialization: 2025-10-22T10:18:22.737414
22 changes: 11 additions & 11 deletions docs/cn/guides/54-query/02-advanced/stored-procedure.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,31 +3,31 @@ title: 存储过程
sidebar_position: 3
---

存储过程(Stored Procedure)是一组存储在数据库中的可执行命令或逻辑块,用 SQL 或其他编程语言编写,旨在通过可重用方式高效完成特定任务或操作
存储过程(Stored Procedure)是一组存储在数据库中的可执行命令或逻辑块,用 SQL 或其他编程语言编写,旨在可重用以高效地执行特定任务或操作

## 支持语言
## 支持的语言

**Databend 目前仅支持 [SQL 脚本](/sql/sql-reference/sql-scripting)**。借助 SQL 脚本,用户可定义包含循环(FOR、WHILE、REPEAT)和条件(IF、CASE)等控制流结构的存储过程,从而实现复杂逻辑并高效执行多步操作
**Databend 目前仅支持 [SQL 脚本](/sql/stored-procedure-scripting/)**。通过使用 SQL 脚本,用户可以定义带有控制流结构(如循环(FOR、WHILE、REPEAT)和条件(IF、CASE))的过程,从而实现复杂的逻辑和高效的多步操作

## 限制

使用存储过程时存在以下限制
在使用存储过程时,存在以下限制

- 存储过程为实验性功能。使用前请将 `enable_experimental_procedure` 设为 1;
- 存储过程是一项实验性功能。在使用它们之前,请将 `enable_experimental_procedure` 设置为 1;

```sql
SET enable_experimental_procedure = 1;
```

- 无论声明的返回类型为何,存储过程均以字符串形式返回结果,且不会对返回值强制执行声明的类型
- 存储过程以字符串形式返回结果,无论指定的返回类型是什么,都不会对返回的值强制执行声明的类型

## 管理存储过程

Databend 提供了一系列用于管理存储过程的命令。更多详情请参阅 [存储过程](/sql/sql-commands/ddl/procedure/)。
Databend 提供了一系列用于管理存储过程的命令。更多详细信息,请参阅 [存储过程](/sql/sql-commands/ddl/procedure/)。

## 使用示例

假设我们要计算给定范围内所有偶数的和。以下存储过程接受起始值 `start_val` 和结束值 `end_val`,并计算该范围内所有偶数的和
假设我们想要计算给定范围内所有偶数的和。此存储过程接受一个起始值 start_val 和一个结束值 end_val,并计算此范围内所有偶数的和

```sql
SET enable_experimental_procedure = 1;
Expand All @@ -50,14 +50,14 @@ END;
$$;
```

若要计算 1 到 10 的所有偶数的和,可按如下方式调用该存储过程
如果我们想计算从 1 到 10 的所有偶数的和,可以如下调用该过程

```sql
CALL PROCEDURE sum_even_numbers(1, 10);

-- 结果2 + 4 + 6 + 8 + 10 = 30
-- 结果: 2 + 4 + 6 + 8 + 10 = 30
┌────────┐
结果
Result
├────────┤
│ 30 │
└────────┘
Expand Down
10 changes: 6 additions & 4 deletions docs/cn/sql-reference/00-sql-reference/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,12 @@ title: SQL 参考
slug: '/'
---

欢迎来到 SQL 参考 - 您的 Databend 基础知识快速访问指南
欢迎来到 SQL 参考——您快速掌握 Databend 核心功能的指南

- **通用参考:** 提供对基础要素(如数据类型、系统表和表引擎)的深入了解,帮助您构建对 Databend 结构的扎实理解
- **通用参考** 深入介绍数据类型(Data Types)、系统表(System Tables)和表引擎(Table Engines)等基础元素,助您全面理解 Databend 的架构

- **SQL 命令:** 详细的信息、语法和用于执行命令的实际示例,使您能够在 Databend 中自信地进行数据管理
- **SQL 命令** 提供执行命令的详细信息、语法和实用示例,让您在 Databend 中自信地管理数据

- **SQL 函数:** Databend 函数的简明指南,提供对其多样化功能的深入了解,以实现有效的数据管理和分析。
- **SQL 函数:** Databend 函数的简明指南,深入剖析其多样化功能,实现高效的数据管理与分析。

- **存储过程与脚本:** 涵盖 SQL 脚本语言,包括变量、控制流、结果处理及存储过程中的动态执行。
18 changes: 11 additions & 7 deletions docs/cn/sql-reference/10-sql-commands/00-ddl/18-procedure/index.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
---
title: 存储过程(Stored Procedure)
title: 存储过程
---

本页面全面概述了 Databend 中存储过程(Stored Procedure)的操作,按功能分类组织,便于查阅
本页面按功能组织,全面概述了 Databend 中的存储过程(Stored Procedure)操作,方便您参考

## 过程管理

| 命令 | 描述 |
|---------|-------------|
| [CREATE PROCEDURE](create-procedure.md) | 创建新的存储过程 |
| [DROP PROCEDURE](drop-procedure.md) | 删除存储过程 |
| [CALL](call-procedure.md) | 执行存储过程 |
| [CREATE PROCEDURE](create-procedure.md) | 创建一个新的存储过程 |
| [DROP PROCEDURE](drop-procedure.md) | 移除一个存储过程 |
| [CALL](call-procedure.md) | 执行一个存储过程 |

## 过程信息

Expand All @@ -20,5 +20,9 @@ title: 存储过程(Stored Procedure)
| [SHOW PROCEDURES](show-procedures.md) | 列出当前数据库中的所有存储过程 |

:::note
Databend 的存储过程允许将系列 SQL 语句封装为可重用单元,通过单条命令执行,从而提升代码组织性和可维护性。
:::
Databend 中的存储过程(Stored Procedure)允许您将一系列 SQL 语句封装到一个可重用的单元中,该单元可以作为单个命令执行,从而提高代码的组织性和可维护性。
:::

## 延伸阅读

探索 [存储过程与 SQL 脚本](/sql/stored-procedure-scripting/) 获取完整的语言参考,包括变量处理、控制流、游标(Cursor)以及在过程中的动态 SQL 使用。
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ title: EXECUTE IMMEDIATE
---
import FunctionDescription from '@site/src/components/FunctionDescription';

<FunctionDescription description="Introduced or updated: v1.2.452"/>
<FunctionDescription description="引入或更新于:v1.2.452"/>

执行一个 SQL 脚本。关于如何为 Databend 编写 SQL 脚本,请参考 [SQL Scripting](/sql/sql-reference/sql-scripting)。
执行一个 SQL 脚本。关于如何为 Databend 编写 SQL 脚本,请参阅 [存储过程与 SQL 脚本](/sql/stored-procedure-scripting/)。

## 语法

Expand All @@ -22,7 +22,7 @@ $$;

## 示例

本示例使用循环从 -1 迭代到 2 来递增 sum,结果为总和 (2)
以下示例使用循环,通过从 -1 2 的迭代累加 sum,最终结果为 2

```sql
EXECUTE IMMEDIATE $$
Expand All @@ -44,7 +44,7 @@ $$;
└────────┘
```

以下示例返回一个包含列 `1 + 1` 和值 2 的表:
以下示例返回一个包含列 `1 + 1` 且值为 2 的表:

```sql
EXECUTE IMMEDIATE $$
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import FunctionDescription from '@site/src/components/FunctionDescription';

<FunctionDescription description="引入或更新于:v1.2.762"/>

根据指定的 Lambda 表达式 (Lambda Expression) 筛选 JSON 数组中的元素,仅返回满足条件的元素。有关 Lambda 表达式的更多信息,请参见 [Lambda 表达式](../../../00-sql-reference/42-lambda-expressions.md)。
根据指定的 Lambda 表达式Lambda Expression筛选 JSON 数组中的元素,仅返回满足条件的元素。有关 Lambda 表达式的更多信息,请参阅 [Lambda 表达式](/sql/stored-procedure-scripting/#lambda-expressions)。

## 语法

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import FunctionDescription from '@site/src/components/FunctionDescription';

<FunctionDescription description="引入或更新于:v1.2.762"/>

通过应用指定的 Lambda 表达式(Lambda Expression),将一个 JSON 数组归约为单个值。有关 Lambda 表达式的更多信息,请参阅 [Lambda 表达式](../../../00-sql-reference/42-lambda-expressions.md)。
通过应用指定的 Lambda 表达式(Lambda Expression), JSON 数组归约为单个值。有关 Lambda 表达式的更多信息,请参见 [Lambda 表达式](/sql/stored-procedure-scripting/#lambda-expressions)。

## 语法

Expand All @@ -16,7 +16,7 @@ ARRAY_REDUCE(<json_array>, <lambda_expression>)

## 示例

此示例将数组中的所有元素相乘(2 * 3 * 4):
本示例将数组中的所有元素相乘(2 * 3 * 4):

```sql
SELECT ARRAY_REDUCE(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ title: JSON_ARRAY_TRANSFORM

import FunctionDescription from '@site/src/components/FunctionDescription';

<FunctionDescription description="Introduced or updated: v1.2.762"/>
<FunctionDescription description="引入或更新于:v1.2.762"/>

使用指定的转换 Lambda 表达式(Lambda expression)转换 JSON 数组(JSON array)中的每个元素。有关 Lambda 表达式的更多信息,请参阅 [Lambda 表达式](../../../00-sql-reference/42-lambda-expressions.md)。
使用指定的转换 Lambda 表达式(Lambda Expression)转换 JSON 数组中的每个元素。有关 Lambda 表达式的更多信息,请参见 [Lambda 表达式](/sql/stored-procedure-scripting/#lambda-expressions)。

## 语法

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import FunctionDescription from '@site/src/components/FunctionDescription';

<FunctionDescription description="引入或更新于:v1.2.762"/>

根据指定的条件(使用 [lambda 表达式 (Lambda Expression)](../../../00-sql-reference/42-lambda-expressions.md) 定义)筛选 JSON 对象中的键值对。
使用 [lambda 表达式](/sql/stored-procedure-scripting/#lambda-expressions) 定义的条件,过滤 JSON 对象中的键值对。

## 语法

Expand All @@ -15,11 +15,11 @@ MAP_FILTER(<json_object>, (<key>, <value>) -> <condition>)

## 返回类型

返回一个仅包含满足指定条件的键值对的 JSON 对象。
返回仅包含满足指定条件的键值对的 JSON 对象。

## 示例

此示例仅从 JSON 对象中提取 `"status":"active"` 键值对,并过滤掉其他字段:
以下示例从 JSON 对象中仅提取 `"status": "active"` 键值对,并过滤掉其他字段:

```sql
SELECT MAP_FILTER('{"status":"active", "user":"admin", "time":"2024-11-01"}'::VARIANT, (k, v) -> k = 'status') AS filtered_metadata;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import FunctionDescription from '@site/src/components/FunctionDescription';

<FunctionDescription description="引入或更新于:v1.2.762"/>

使用 [lambda 表达式 (Lambda Expression)](../../../00-sql-reference/42-lambda-expressions.md) 对 JSON 对象中的每个键应用转换。
使用 [lambda 表达式](/sql/stored-procedure-scripting/#lambda-expressions) 对 JSON 对象中的每个键应用转换。

## 语法

Expand All @@ -19,7 +19,7 @@ MAP_TRANSFORM_KEYS(<json_object>, (<key>, <value>) -> <key_transformation>)

## 示例

此示例将 "_v1" 附加到每个键上,从而创建一个具有修改后键的新 JSON 对象:
此示例在每个键后追加 `_v1`,从而创建一个键已修改的新 JSON 对象:

```sql
SELECT MAP_TRANSFORM_KEYS('{"name":"John", "role":"admin"}'::VARIANT, (k, v) -> CONCAT(k, '_v1')) AS versioned_metadata;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ title: MAP_TRANSFORM_VALUES
---
import FunctionDescription from '@site/src/components/FunctionDescription';

<FunctionDescription description="新增或更新于:v1.2.762"/>
<FunctionDescription description="引入或更新于:v1.2.762"/>

使用 [Lambda 表达式(Lambda Expression)](../../../00-sql-reference/42-lambda-expressions.md) 对 JSON 对象(JSON Object)中的每个值执行转换
使用 [lambda 表达式](/sql/stored-procedure-scripting/#lambda-expressions) 对 JSON 对象中的每个值应用转换

## 语法

Expand All @@ -15,7 +15,7 @@ MAP_TRANSFORM_VALUES(<json_object>, (<key>, <value>) -> <value_transformation>)

## 返回类型

返回一个 JSON 对象(JSON Object),其键与输入的 JSON 对象(JSON Object)相同,但值已根据指定的 Lambda 变换(Lambda Transformation)进行了修改
返回一个 JSON 对象,其键与输入的 JSON 对象相同,但值已根据指定的 lambda 转换进行了修改

## 示例

Expand Down
Loading