tekno.BALI ISLAND
ZH
所有文章
编程1 分钟阅读

数据库中存储过程和游标的解释

Stored Procedure & Cursor

存储过程

存储过程是一组SQL语句,或者可以说是存储在数据库中的具有特定名称的子程序。

存储过程执行的过程是接收输入参数,然后将值以输出参数的形式返回给调用者,并在数据库上执行数据处理操作,这些操作由触发器或其他存储过程之类的程序执行。

使用存储过程有几个优点:

  • 提高应用程序性能,因为已经创建的存储过程比应用程序发送的未编译SQL语句运行得更快。
  • 减少数据库和应用程序之间的网络流量,因为无需发送未编译的SQL。
  • 可以在所有应用程序中重复使用且透明。

尽管如此,使用存储过程也有一些缺点:

  • 无法进行调试。
  • 增加服务器硬件的负载。
  • 编写不易,需要特定的知识。

存储过程的语法

存储过程的语法如下:

存储过程的编写语法

DELIMITER //

CREATE PROCEDURE nama_procedure()
BEGIN
    query sql
END //

DELIMITER ;

调用存储过程的语法

CALL nama_procedure();

存储过程变量声明的语法

DECLARE nama_variable tipedata(panjang) DEFAULT nilai;

带参数的存储过程语法

参数有三种模式:

  • IN
    参数的默认形式,存储过程中的所有更改都不会影响参数。

  • OUT
    这种模式会更改参数的值,然后将其返回给调用者。

  • INOUT
    IN和OUT的组合模式。

定义带参数存储过程的语法示例

DELIMITER //

CREATE PROCEDURE nama_procedure(
    [mode] [parameter] [tipe_data]
)
BEGIN
    query sql
END //

DELIMITER ;

调用带参数存储过程的语法示例

CALL nama_procedure([nilai_parameter]);

游标

游标是数据库中的一个对象,用于容纳特定SQL语句的处理,或者可以说是存储包含多行或多条记录的查询结果的变量。

游标可以遍历表中的数据行。游标有几个特性:

  • 无法进行更新(只读)。
  • 游标只能单向移动(不可滚动)。
  • 不建议更新游标所引用的表,因为这可能导致意外结果(非敏感性)。

游标的语法

创建游标有几个步骤:

1. 声明

声明游标的步骤,语法如下:

DECLARE nama_cursor CURSOR FOR
pernyataan_SELECT;

2. 打开

打开或激活游标的步骤,语法如下:

OPEN nama_cursor;

3. 提取

从游标中取出数据并存储到变量中的步骤,语法如下:

FETCH nama_cursor INTO daftar_variabel;

4. 关闭

关闭游标(使其失效)的步骤,语法如下:

CLOSE nama_cursor;

存储过程与游标的区别

存储过程与游标的区别在于,存储过程只包含MySQL的声明性命令,而游标则保存查询结果并同时作为结果集的指针。

这使得游标能够执行存储过程无法执行的复杂命令,其中之一就是遍历记录。

Wilan

巴厘岛Tekno的常驻撰稿人,积极分享技术、编程和软件工程领域的知识。

相关阅读

编程3 分钟阅读

GitHub 与 GitLab 的区别:哪个更适合开发者?

刚开始学习 Git 时,通常不需要多久就会遇到这两个名字:GitHub 和 GitLab。 乍一看,这两者几乎一模一样。都可以用来存储源代码、与团队协作、创建分支、合并代码,甚至记录项目中的更改。 由于它们的界面和功能相似,不少人最终会产生这样一个疑问: GitHub 和 GitLab 究

编程2 分钟阅读

Docker:概念、工作原理以及为什么许多开发者都在使用它

什么是 Docker? 如果你经常接触编程、Web 开发或服务器领域,你大概率听说过 Docker 这个词。 Docker 是一个允许我们在被称为 容器(Container) 的环境中运行应用程序的平台。 简单来说,Docker 帮助我们将应用程序及其所需的所有内容(如库、依赖项、配置甚至