logo Navicat使用教程-2019.1 我也要发布文档

了解关系数据库中的存储过程和函数


Navicat是一套快速、可靠并价格相当便宜的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设。它的设计符合数据库管理员、开发人员及中小企业的需要。Navicat 是以直觉化的图形用户界面而建的,让你可以以安全并且简单的方式创建、组织、访问并共用信息。

点击查看Navicat系列产品

大多数关系数据库——包括MySQL、MariaDB和SQL Server,都支持存储过程和函数。存储过程和函数实际上非常相似,可以用来完成相同的任务。也就是说,在决定对特定工作使用哪个时,需要考虑两者之间的一些关键差异。我们将在今天的文章中介绍这些内容。

存储过程

存储过程(简称“proc”)是一组具有指定名称的结构化查询语言(SQL)语句,它们以组的形式存储在关系数据库管理系统中,因此可以被多个程序重用和共享。存储过程可以访问或修改数据库中的数据,但它并不绑定到特定的数据库或对象。这种松散的耦合是有利的,因为很容易为不同但相似的目的重新分配proc。

存储过程可以接受输入参数并返回输出参数的多个值;此外,存储过程可以对语句进行编程以在数据库中执行操作,并向调用过程或批处理返回状态值。

最后,存储过程可以执行多个SQL语句、调用函数,甚至迭代结果集,从而执行类似于编程代码的复杂操作。完成后,proc通常会将更多结果集之一返回给调用应用程序。

Navicat使用教程:了解关系数据库中的存储过程和函数

用户函数

函数类似于存储过程,因为它包含一组执行特定任务的SQL语句。功能背后的想法是提高代码的可重用性。如果必须重复编写大型SQL脚本来执行同一任务,则可以创建一个执行该任务的函数,这样,下次无需重写SQL,只需调用该函数即可。数据库通常包括一组执行各种任务的内置函数,因此在编写自己的函数之前,请务必先对其进行研究。

函数接受参数形式的输入并返回一个值。与存储过程不同,函数不能返回结果集。而且,函数不能修改服务器环境或操作系统环境。

Navicat使用教程:了解关系数据库中的存储过程和函数

主要区别

虽然proc和函数都可以以类似的方式使用,但是函数被设计为将其输出发送到查询或SQL语句。同时,存储过程旨在将输出(即一个或多个结果集)返回给应用程序。

另一个区别是,您可以将一组SQL语句分组并在存储过程中执行它们,而在SQL语句中不能调用存储过程。另一方面,可以直接从查询或存储过程中调用函数。

最后,功能的局限性是必须为每一行调用它们。因此,如果您使用的函数具有较大的数据集,则可能会遇到性能问题。

在Navicat中查看存储的过程和函数

在Navicat数据库管理和开发工具中,您将在“函数”下看到proc和函数。存储过程的前缀为“Px”,而函数的前缀为“fx”:

Navicat使用教程:了解关系数据库中的存储过程和函数

结论

存储过程和函数在许多方面都非常相似,但是每种方法都有不同的用途。您可以将存储的proc看作是一组SQL语句,而一个函数接受输入并根据输入参数返回输出值。


点击下载Navicat的产品Navicat for MySQLNavicat for PostgreSQLNavicat for OracleNavicat Premium进行评估~想要了解更多产品信息请点击【咨询在线客服】

840-100.jpg