深入解析什么是存储过程
在大型数据库系统中,存储过程和触发器具有很重要的作用。无论是存储过程还是触发器,都是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保留字(如何执行存储过程见本章下一字)。
本质而言,触发器也是一种存储过程。存储过程在运算时生成执行方式,所以,以后对其再运行时其执行速度很快。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保留字(如何执行存储过程见本章下一字)。
发表评论
-
数据库常识
2011-07-05 14:56 0delete from aa truncate table ... -
Oracle存储过程实例
2010-01-28 22:47 9234create or replace proc ... -
JDBC事务
2010-01-28 22:28 0作者:Jack Shirazi 开发 ... -
Oracle与SQL Server事务处理的比较
2010-01-28 22:03 1506事务处理是所有大型数 ... -
Sqlldr简介
2009-10-21 14:10 1290罗列了网上常见的三篇Sqlldr的介绍 一:sql lo ... -
Oracle中实现行列转换的方法
2009-07-21 22:31 1249student subject grade -------- ... -
oracle 中日期的加减
2009-07-21 22:00 21534加法 select sysdate,add_mo ... -
Oracle 分页
2009-03-26 17:07 0select * from (select rownum ... -
MYSQL的乱码问题
2009-02-17 12:45 838总结了一下几个处理方法 1:改变数据库的默认编码配置,在MYS ... -
几种开源数据库连接池的使用 --转载
2009-01-17 13:36 1790转载: http://www.blogjava.net/fa ... -
Resin和Tomcat的JNDI数据连接池配置
2009-01-17 13:35 4189先说Resin的JNDI数据池连 ... -
tomcat5.0与tomcat5.5的数据库连接池jndi配置区别
2009-01-17 13:35 1752在tomcat5.5版本以前,可以说jndi配置相对是比较复杂 ... -
tomcat5.0连接池配置成功了,池连,JNDI
2009-01-17 13:34 0http://heisetoufa.iteye.com/blo ... -
java连接oracle数据库的各种方法及java在数据库中的含义
2009-01-17 13:34 1243java与oracle的接口: 在数据库中运行JA ... -
开源数据库连接池proxool
2009-01-17 13:32 1740关键词:proxool 连接池 开源 可以根据自己的实际情况, ... -
java实现 excel 中数据导入 oracle
2009-01-17 13:31 2952ORACLE是有一个叫ADI的解决方案 所需的额外包:comm ... -
registerOutParameter Method (SQLServerCallableStat
2009-01-17 13:31 1097registerOutParameter Method (SQ ... -
JDBCTM 指南CallableStatement
2009-01-17 13:31 10817 - CallableStatement 本概述 ... -
OJB查询
2009-01-17 13:27 1554该文档介绍了不同查询 ... -
OJB MySQL 配置
2009-01-17 13:26 11281. repository-database.xml < ...
相关推荐
《云原生分布式存储基石 etcd深入解析》一书,主要关注的是云环境中重要的分布式键值存储系统——etcd。etcd是CoreOS公司开发的一个开源项目,它为分布式系统提供了一个高度可用、一致性的键值存储解决方案。在Java...
存储过程和函数在数据库编程中各有所长,它们的区别主要体现在返回值、调用方式、数据修改能力和事务处理上。选择合适的数据库对象,可以帮助开发者更高效地实现业务逻辑,优化数据库性能,并提高代码的可维护性。...
《深入解析Windows操作系统 第5版》是一本专为IT专业人士和高级用户编写的经典书籍,旨在揭示Windows操作系统的深层机制和工作原理。该书详细介绍了Windows操作系统的核心组件、设计架构以及内部运作流程,帮助读者...
以下是对“oracle存储过程解锁”这一主题的深入解析。 ### 标题:“oracle存储过程解锁” #### 解析: 在Oracle数据库中,存储过程是一种预先编译并存储在数据库中的SQL代码块,用于执行复杂的业务逻辑或数据处理...
《深入解析 ORACLE 数据库的初始化》是由知名数据库专家盖国强编著的一本专业书籍,专注于探讨 Oracle 数据库在启动、配置和管理过程中的各项技术细节。这本书以丰富的实例和深入的理论相结合,旨在帮助读者全面理解...
### 深入解析Windows操作系统(第6版,Part 2) #### 一、书籍概述与作者介绍 《深入解析Windows操作系统(第6版,Part 2)》是一本经典的Windows内部架构和技术详解书籍,由三位著名的Windows内部专家Mark ...
《深入解析SAS_data&code》是一份专为SAS用户和学习者设计的资源,旨在帮助读者深入了解SAS在数据处理和编程方面的应用。SAS(Statistical Analysis System)是一种广泛使用的统计分析软件,尤其在数据分析、商业...
本教程将深入探讨MySQL存储过程的创建、调用以及相关概念。 一、存储过程的基本概念 存储过程是由一个或多个SQL语句组成的集合,存储在数据库中,可以像函数一样被调用执行。它们可以接受参数,返回结果,并且能够...
1. **什么是存储过程?** 存储过程是预编译的SQL和PL/SQL代码集合,存储在Oracle数据库中,可以由用户或应用程序按需调用执行。它们提高了数据库性能,因为数据库只需解析和优化存储过程一次,而非每次调用时都进行...
在IT行业中,C++是一种强大的编程语言,常用于构建高性能的应用程序,包括数据库接口和解析器。...通过解析存储过程,可以自动化一些元数据的提取工作,提高开发效率,并有助于理解和优化数据库设计。
根据提供的文件信息,本文将深入解析《Hadoop技术内幕:深入解析MapReduce架构设计与实现原理》这本书中的关键知识点,主要包括Hadoop的核心组件——MapReduce的设计理念、架构组成及其具体的实现原理。 ### Hadoop...
根据提供的信息,我们可以推断这本书《深入解析Android 5.0系统》由刘超撰写,主要聚焦于Android 5.0系统的深入分析和技术探讨。由于给出的部分内容并未包含实际的技术细节,下面将围绕该书可能涉及的核心技术点进行...
《LINUX内核探秘:深入解析文件系统和设备驱动》一书,是关于Linux操作系统内核中核心组件——文件系统和设备驱动的深度解析。Linux文件系统是操作系统与硬件之间的重要桥梁,它负责管理存储设备上的数据,而设备...
"深入解析SAS"的主题涵盖了理解和运用SAS进行数据集管理和分析的关键知识点。 首先,我们要理解SAS中的“数据集”(Data Set)。在SAS中,数据集是数据的容器,类似于数据库中的表。它们可以包含数值、字符和其他...
**深入解析Microsoft SQL Server 2008** Microsoft SQL Server 2008是微软公司推出的一款企业级的关系型数据库管理系统(RDBMS),它在数据存储、处理和管理方面提供了广泛的功能,适用于各种规模的企业。SQL ...
三层架构是一种常见的软件设计模式,它将应用程序分为三个主要组件:数据访问层(DAL)、业务逻辑层(BLL)和用户..."三层架构+存储过程全解析"文件很可能是详细的教程或示例代码,帮助开发者深入理解并实践这些概念。
《深入解析Windows操作系统(第四版)》是一本专为网络管理员、系统管理员及电脑爱好者精心编写的权威指南,旨在帮助读者全面理解Windows操作系统的内部工作原理和管理技巧。该书内容丰富,涵盖了从基础概念到高级技术...
存储过程是数据库中一个强大的功能,它不仅可以提高数据库操作的效率和安全性,还可以简化应用程序的开发。通过合理使用存储过程,可以有效地管理和维护数据库,提高数据的一致性和完整性。以上内容提供了存储过程的...
本教程将深入探讨存储过程的概念、创建、调用以及其优势和应用场景。 一、存储过程的概念 存储过程是一种数据库对象,由一系列的SQL语句和控制流程语句(如IF-ELSE、WHILE等)组成。它在数据库服务器上预先编译并...
存储过程的优点在于提高性能,因为它们在首次执行时会被编译成优化的执行计划,之后的调用会重用这个计划,减少解析和编译的时间。此外,存储过程还能减少网络流量,因为它允许一次性发送多个操作,而不是单独的SQL...