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

WI
Wilan
阅读时间:约 4 分钟
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
    INOUT的组合模式。

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

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的声明性命令,而游标则保存查询结果并同时作为结果集的指针。

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

Tags: #编程
W

作者

Wilan

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

返回首页 最后更新日期:2026年6月5日