Skip to content
Closed
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-22T10:47:38.215216
Translation initialization: 2025-10-22T12:30:42.269759
16 changes: 8 additions & 8 deletions docs/cn/guides/54-query/02-advanced/stored-procedure.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,39 +3,39 @@ title: 存储过程
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/)。

## 使用示例

假设我们想要计算给定范围内所有偶数的和。此存储过程接受一个起始值 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='Calculate the sum of all even numbers'
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 @@ -5,10 +5,10 @@ slug: '/'

欢迎来到 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 脚本语言,包括变量、控制流、结果处理及存储过程中的动态执行
- **存储过程与脚本:** 涵盖 SQL 脚本语言,包括变量、控制流、结果处理以及在存储过程中的动态执行
Original file line number Diff line number Diff line change
@@ -1,28 +1,28 @@
---
title: 存储过程
title: 存储过程(Stored Procedure)
---

本页面按功能组织,全面概述了 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) | 创建一个新的存储过程(Stored Procedure) |
| [DROP PROCEDURE](drop-procedure.md) | 移除一个存储过程(Stored Procedure) |
| [CALL](call-procedure.md) | 执行一个存储过程(Stored Procedure) |

## 过程信息

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

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

## 延伸阅读

探索 [存储过程与 SQL 脚本](/sql/stored-procedure-scripting/) 获取完整的语言参考,包括变量处理、控制流、游标(Cursor)以及在过程中的动态 SQL 使用
探索 [存储过程(Stored Procedure)和 SQL 脚本](/sql/stored-procedure-scripting/) 获取完整的语言参考,包括变量处理、控制流、游标以及在过程(Procedure)中使用动态 SQL。
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 表达式](/sql/stored-procedure-scripting/#lambda-expressions)。
通过应用指定的 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 @@ -6,7 +6,7 @@ import FunctionDescription from '@site/src/components/FunctionDescription';

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

使用指定的转换 Lambda 表达式(Lambda Expression)转换 JSON 数组中的每个元素。有关 Lambda 表达式的更多信息,请参见 [Lambda 表达式](/sql/stored-procedure-scripting/#lambda-expressions)。
使用指定的转换 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 表达式](/sql/stored-procedure-scripting/#lambda-expressions) 定义的条件,过滤 JSON 对象中的键值对。
使用 [lambda 表达式](/sql/stored-procedure-scripting/#lambda-expressions) 定义的条件,筛选 JSON 对象中的键值对。

## 语法

Expand All @@ -19,7 +19,7 @@ MAP_FILTER(<json_object>, (<key>, <value>) -> <condition>)

## 示例

以下示例从 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 @@ -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
Loading