热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

存储过程概述_MySQL

存储过程概述
在大型数据库系统中,存储过程和触发器具有很重要的作用。无论是存储过程还是触发器,都是SQL 语句和流程控制语句的集合。就


本质而言,触发器也是一种存储过程。存储过程在运算时生成执行方式,所以,以后对其再运行时其执行速度很快。SQL Server 2000 不仅提供了用户自定义存储过程的功能,而且也提供了许多可作为工具使用的系统存储过程。

12.1.1 存储过程的概念
存储过程(Stored Procedure)是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库。中用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。

在SQL Server 的系列版本中存储过程分为两类:系统提供的存储过程和用户自定义 存储过程。系统过程主要存储在master 数据库中并以sp_为前缀,并且系统存储过程主 要是从系统表中获取信息,从而为系统管理员管理SQL Server 提供支持。通过系统存储 过程,MS SQL Server 中的许多管理性或信息性的活动(如了解数据库对象、数据库信息) 都可以被顺利有效地完成。尽管这些系统存储过程被放在master 数据库中,但是仍可以 在其它数据库中对其进行调用,在调用时不必在存储过程名前加上数据库名。而且当创建 一个新数据库时,一些系统存储过程会在新数据库中被自动创建。用户自定义存储过程是 由用户创建并能完成某一特定功能(如查询用户所需数据信息)的存储过程。在本章中所 涉及到的存储过程主要是指用户自定义存储过程。

12.1.2 存储过程的优点
当利用MS SQL Server 创建一个应用程序时,Transaction-SQL 是一种主要的编程语 言。若运用Transaction-SQL 来进行编程,有两种方法。其一是,在本地存储Transaction- SQL 程序,并创建应用程序向SQL Server 发送命令来对结果进行处理。其二是,可以把 部分用Transaction-SQL 编写的程序作为存储过程存储在SQL Server 中,并创建应用程序 来调用存储过程,对数据结果进行处理存储过程能够通过接收参数向调用者返回结果集, 结果集的格式由调用者确定;返回状态值给调用者,指明调用是成功或是失败;包括针对 数据库的操作语句,并且可以在一个存储过程中调用另一存储过程。

我们通常更偏爱于使用第二种方法,即在SQL Server 中使用存储过程而不是在客户计算机上调用Transaction-SQL 编写的一段程序,原因在于存储过程具有以下优点:

(1) 存储过程允许标准组件式编程
存储过程在被创建以后可以在程序中被多次调用,而不必重新编写该存储过程的SQL 语句。而且数据库专业人员可随时对存储过程进行修改,但对应用程序源代码毫无影响(因 为应用程序源代码只包含存储过程的调用语句),从而极大地提高了程序的可移植性。

(2) 存储过程能够实现较快的执行速度
如果某一操作包含大量的Transaction-SQL 代码或分别被多次执行,那么存储过程要 比批处理的执行速度快很多。因为存储过程是预编译的,在首次运行一个存储过程时,查 询优化器对其进行分析、优化,并给出最终被存在系统表中的执行计划。而批处理的Transaction- SQL 语句在每次运行时都要进行编译和优化,因此速度相对要慢一些。

(3) 存储过程能够减少网络流量
对于同一个针对数据数据库对象的操作(如查询、修改),如果这一操作所涉及到的 Transaction-SQL 语句被组织成一存储过程,那么当在客户计算机上调用该存储过程时, 网络中传送的只是该调用语句,否则将是多条SQL 语句,从而大大增加了网络流量,降 低网络负载。

(4) 存储过程可被作为一种安全机制来充分利用
系统管理员通过对执行某一存储过程的权限进行限制,从而能够实现对相应的数据访问权限的限制,避免非授权用户对数据的访问,保证数据的安全。(我们将在14 章“SQLServer 的用户和安全性管理”中对存储过程的这一应用作更为清晰的介绍)

注意:存储过程虽然既有参数又有返回值,但是它与函数不同。存储过程的返回值只是指明执行是否成功,并且它不能像函数那样被直接调用,也就是在调用存储过程时,在存储过程名字前一定要有EXEC保留字(如何执行存储过程见本章下一字)。

推荐阅读
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 软件测试行业深度解析:迈向高薪的必经之路
    本文深入探讨了软件测试行业的发展现状及未来趋势,旨在帮助有志于在该领域取得高薪的技术人员明确职业方向和发展路径。 ... [详细]
  • 本文介绍了如何通过安装 sqlacodegen 和 pymysql 来根据现有的 MySQL 数据库自动生成 ORM 的模型文件(model.py)。此方法适用于需要快速搭建项目模型层的情况。 ... [详细]
  • Uniswap 与 MoonPay 合作,引入法币交易功能。本文探讨这一合作对用户进入加密货币领域的安全性及便利性的影响。 ... [详细]
  • 在日常生活中,支付宝已成为不可或缺的支付工具之一。本文将详细介绍如何通过支付宝实现免费提现,帮助用户更好地管理个人财务,避免不必要的手续费支出。 ... [详细]
  • 解决Word文档无法打开的问题
    本文探讨了Word文档无法正常打开的原因及解决方案,包括病毒感染和模板损坏等常见问题。 ... [详细]
  • 本项目分为七个主要阶段,包括项目启动、现状评估、风险管理、体系文件编写、体系发布与试运行、体系认证审核及项目收尾。每个阶段都设定了明确的任务和目标,以确保ISMS(信息安全管理体系)的有效实施。 ... [详细]
  • 问题描述现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能;在实际开发过程中 ... [详细]
  • 理财规划:迈向财务自由的路径
    实现财务自由,摆脱经济压力,是许多人的梦想。财务自由不仅意味着有足够的财富支持生活,还包括能够灵活应对未来可能遇到的各种经济挑战。本文将探讨如何通过有效的理财规划达到这一目标。 ... [详细]
  • 本文介绍了SELinux的两种主要工作模式——强制模式和宽容模式,并提供了如何在CentOS 7中正确启用和配置SELinux的方法,以及在遇到登录问题时的解决策略。 ... [详细]
  • 调试利器SSH隧道
    在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需要通过线上域名才能正常访问。但我们一般都会在本地开发,因为这能快速的看到 ... [详细]
  • 了解多域名SAN SSL证书及其工作原理
    本文介绍了多域名SAN SSL证书的概念及其工作方式,探讨其在现代网络安全中的重要性和应用。 ... [详细]
  • 龙蜥社区开发者访谈:技术生涯的三次蜕变 | 第3期
    龙蜥社区的开发者们通过自己的实践和经验,推动着开源技术的发展。本期「龙蜥开发者说」聚焦于一位资深开发者的三次技术转型,分享他在龙蜥社区的成长故事。 ... [详细]
  • 最新版 EasyCriteria 3.0 已正式上线,该版本经过全面重构,带来了多项性能优化与功能增强。更多详情请参阅官方文档:http://uaihebert.com/?p=1898 ... [详细]
  • 解决PHP项目在服务器无法抓取远程网页内容的问题
    本文探讨了在使用PHP进行后端开发时,遇到的一个常见问题:即在本地环境中能够正常通过CURL获取远程网页内容,但在服务器上却无法实现。我们将分析可能的原因并提供解决方案。 ... [详细]
author-avatar
谷饶潮流服装HLGC
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有