Module 06 · Bonus Module: Advanced SQL for Data Engineers
Stored Procedures存储过程
欢迎观看本视频。看完本视频后,您将能够:
- 解释什么是存储过程。
- 列出使用存储过程的优势。
- 描述如何创建和使用存储过程。
什么是存储过程? (Definition)
存储过程是一组 SQL 语句,它们被存储并在数据库服务器上执行。
- 相比于从客户端向服务器发送多条 SQL 语句,您可以将这些语句封装在服务器上的一个存储过程中,然后从客户端发送一条语句来执行它们。
💡 编写语言
存储过程可以用多种不同的语言编写。例如,对于 DB2 on Cloud 和 DB2,您可以使用 SQL/PL、PL/SQL、Java、C 或其他语言编写。
- 存储过程可以接受信息作为参数。
- 它们可以执行 创建 (Create)、读取 (Read)、更新 (Update) 和 删除 (Delete) 等 CRUD 操作。
- 它们可以将结果返回给客户端应用程序。
使用存储过程的优势 (Benefits)
使用存储过程的优势包括:
| 优势 | 说明 |
|---|---|
| 减少网络流量 | 只需一个调用即可执行多条语句。 |
| 性能提升 | 处理过程发生在存储数据的服务器上,只需将最终结果传回客户端。 |
| 代码重用 | 多个应用程序可以使用相同的存储过程来完成同一项工作。 |
| 提高安全性 | * A. 无需向客户端开发人员暴露所有表和列信息。 * B. 您可以使用服务器端逻辑在数据被系统接受之前对其进行验证。 |
⚠️ 重要提醒
请记住,SQL 并不是一种功能完善的编程语言。您不应该尝试将所有业务逻辑都写入存储过程中。
创建存储过程
让我们看看如何在 SQL 中创建一个存储过程。
1. 定义与参数
首先,您使用 CREATE PROCEDURE 语句,并指定过程的名称以及它将接受的任何参数。
🔍 示例:
update_sal过程将接受一个员工编号和评分 (rating) 作为参数,并根据评分来更新员工的薪水。
2. 声明语言与逻辑
- 接着,您需要声明您正在使用的语言。
- 然后,您使用
BEGIN和END语句来封装您的过程逻辑。
示例逻辑:给评分为 1 的员工加薪 10%,给其他所有员工加薪 5%。
- 注意:您可以在过程逻辑中直接使用传递给过程的信息(参数)。
3. 更改分隔符 (Delimiter)
- 由于存储过程将使用多条语句,因此在开始定义过程之前,更改分隔符(标记语句结束的字符)是谨慎的做法。
- 在示例中,分隔符已被设置为
$$。 - 代码中使用此分隔符
$$将标记过程命令的结束。 - 最后,当过程定义完成后,我们将分隔符改回分号(
;)。
使用存储过程
您可以从外部应用程序或动态 SQL 语句中调用存储过程。
- 要调用我们刚才创建的
update_sal存储过程,您可以使用CALL语句,加上存储过程的名称,并传递所需的参数。 - 在本例中,需要传递员工 ID 和该员工的评分。
结论回顾
在本视频中,您了解到:
- 存储过程是一组在服务器上执行的 SQL 语句。
- 相比于向服务器发送 SQL 语句,存储过程具有许多优势。
- 您可以在动态 SQL 语句和外部应用程序中使用存储过程。