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
1 change: 0 additions & 1 deletion .translation-init

This file was deleted.

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
@@ -1,41 +1,41 @@
---
title: 存储过程
title: 存储过程(Stored Procedure)
sidebar_position: 3
---

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

## 支持的语言

**Databend 目前仅支持 [SQL 脚本](/sql/stored-procedure-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;

CREATE PROCEDURE sum_even_numbers(start_val UInt8, end_val UInt8)
RETURNS UInt8 NOT NULL
LANGUAGE SQL
COMMENT='计算所有偶数的和'
COMMENT='计算所有偶数的总和'
AS $$
BEGIN
LET sum := 0;
Expand All @@ -50,12 +50,12 @@ 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 │
├────────┤
Expand Down
8 changes: 4 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,12 +3,12 @@ title: SQL 参考
slug: '/'
---

欢迎来到 SQL 参考——您快速掌握 Databend 核心功能的指南
欢迎使用 SQL 参考 – 您快速查阅 Databend 核心要点的指南

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

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

- **SQL 函数:** Databend 函数的简明指南,深入剖析其多样化功能,实现高效的数据管理与分析
- **SQL 函数:** Databend 函数的简明指南,深入解析其多样化功能,助力高效的数据管理与分析

- **存储过程与脚本:** 涵盖 SQL 脚本语言,包括变量、控制流、结果处理及存储过程中的动态执行。
22 changes: 11 additions & 11 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,28 +1,28 @@
---
title: 存储过程
title: 存储过程(Stored Procedure)
---

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

## 过程管理

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

## 过程信息

| 命令 | 描述 |
|---------|-------------|
| [DESCRIBE PROCEDURE](desc-procedure.md) | 显示特定存储过程的详细信息 |
| [SHOW PROCEDURES](show-procedures.md) | 列出当前数据库中的所有存储过程 |
| 命令 | | 描述 |
|---------|---------|-------------|
| [DESCRIBE PROCEDURE](desc-procedure(Stored Procedure)) | 显示特定存储过程(Stored Procedure)的详细信息 |
| [SHOW PROCEDURES](show-procedures(Stored Procedures)) | 显示当前数据库中的所有存储过程(Stored Procedure) |

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

## 延伸阅读

探索 [存储过程与 SQL 脚本](/sql/stored-procedure-scripting/) 获取完整的语言参考,包括变量处理、控制流、游标(Cursor)以及在过程中的动态 SQL 使用。
探索[存储过程与 SQL 脚本(Stored Procedure & SQL Scripting)](/sql/stored-procedure-scripting/)以获取完整的语言参考,包括变量处理、控制流、游标(Cursor)和动态 SQL 使用。
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.452"/>

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

## 语法

Expand All @@ -14,15 +14,15 @@ EXECUTE IMMEDIATE $$
BEGIN
<procedure_body>
RETURN <return_value>; -- 用于返回单个值
-- OR
RETURN TABLE(<select_query>); -- 用于返回一个表
--
RETURN TABLE(<select_query>); -- 用于返回表
END;
$$;
```

## 示例

以下示例使用循环,通过从 -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 @@ -4,9 +4,9 @@ title: ARRAY_FILTER

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

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

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

## 语法

Expand All @@ -20,7 +20,7 @@ JSON 数组。

## 示例

此示例筛选数组,仅返回以字母 `a` 开头的字符串,结果为 `["apple", "avocado"]`:
此示例过滤数组,仅返回以字母 `a` 开头的字符串,结果为 `["apple", "avocado"]`:

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

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

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

通过应用指定的 Lambda 表达式(Lambda Expression),将 JSON 数组归约为单个值。有关 Lambda 表达式的更多信息,请参见 [Lambda 表达式](/sql/stored-procedure-scripting/#lambda-expressions)。
通过应用指定的 Lambda 表达式将 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="引入或更新于:v1.2.762"/>
<FunctionDescription description="引入或更新版本:v1.2.762"/>

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

## 语法

Expand All @@ -20,7 +20,7 @@ JSON 数组。

## 示例

在此示例中,数组中的每个数字元素都乘以 10,将原始数组转换为 `[10, 20, 30, 40]`:
在此示例中,数组中的每个数值元素都乘以 10,将原始数组转换为 `[10, 20, 30, 40]`:

```sql
SELECT ARRAY_TRANSFORM(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ title: MAP_FILTER
---
import FunctionDescription from '@site/src/components/FunctionDescription';

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

使用 [lambda 表达式](/sql/stored-procedure-scripting/#lambda-expressions) 定义的条件,过滤 JSON 对象中的键值对
根据指定条件过滤 JSON 对象中的键值对,条件使用 [Lambda 表达式](/cn/sql/stored-procedure-scripting/#lambda-expressions)定义

## 语法

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 表达式](/sql/stored-procedure-scripting/#lambda-expressions) 对 JSON 对象中的每个键应用转换。
使用 [Lambda 表达式](/sql/stored-procedure-scripting/#lambda-expressions) 对 JSON 对象中的每个键应用转换。

## 语法

Expand All @@ -15,11 +15,11 @@ MAP_TRANSFORM_KEYS(<json_object>, (<key>, <value>) -> <key_transformation>)

## 返回类型

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

## 示例

此示例在每个键后追加 `_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 @@ -5,7 +5,7 @@ import FunctionDescription from '@site/src/components/FunctionDescription';

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

使用 [lambda 表达式](/sql/stored-procedure-scripting/#lambda-expressions) 对 JSON 对象中的每个值应用转换。
使用 [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 对象相同,但值已根据指定的 lambda 转换进行了修改。
返回一个 JSON 对象,其键与输入 JSON 对象相同,但值根据指定的 Lambda 转换进行了修改。

## 示例

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"label": "存储过程与脚本",
"label": "存储过程与脚本(Stored Procedure & Scripting)",
"position": 30
}
Loading