第十二章管理存储过程 了解存储过程的基本概念 掌握使用企业管理器创建和管理存储过 程 ·掌握使用TSQ语句创建和管理存储过 程
1 第十二章 管理存储过程 • 了解存储过程的基本概念 • 掌握使用企业管理器创建和管理存储过 程 • 掌握使用T-SQL语句创建和管理存储过 程
存储过程的概念 将一些固定的操作集中起来由SQL服务器来完 成,实现某个特定任务,这就是存储过程。类 似于DOS下的批处理。存储过程是SQL语句和 可选控制流程语句的预编译集合。是一种封装 重复任务操作的方法,以一个名称存储,作为 个单元处理 存储过程属于服务器方软件,可立即访问数据 库
2 存储过程的概念 • 将一些固定的操作集中起来由SQL服务器来完 成,实现某个特定任务,这就是存储过程。类 似于DOS下的批处理。存储过程是SQL语句和 可选控制流程语句的预编译集合。是一种封装 重复任务操作的方法,以一个名称存储,作为 一个单元处理。 • 存储过程属于服务器方软件,可立即访问数据 库
存储过程的概念 存储过程存储在数据库内,可由应用程 序通过一个调用来执行,而且充许用户 声明变量。同时,存储过程可以接收和 输出参数、返回执行存储过程的状态值, 也可以嵌套调用。 注意:存储过程与函数不同,因为存储 过程并不返回取代其名称的值,也不能 直接在表达式中使用
3 存储过程的概念 • 存储过程存储在数据库内,可由应用程 序通过一个调用来执行,而且充许用户 声明变量 。同时,存储过程可以接收和 输出参数、返回执行存储过程的状态值, 也可以嵌套调用。 • 注意:存储过程与函数不同,因为存储 过程并不返回取代其名称的值,也不能 直接在表达式中使用
存储过程的分类 在 SQL Server中存储过程分为两类:系统提供的存储 过程和用户自定义存储过程。系统过程主要存储在 master数据库中,并以sp为前缀,并且系统存储过程 主要是从系统表中获取信息,从而为系统管理员管理 SQL Server提供支持。通过系统存储过程,SQL Server中的许多管理性或信息性的活动:如了解数据 库对象、数据库信息都可以被顺利有效地完成。尽管这 些系统存储过程被放在 master数据库中,但是仍可以 在其它数据库中对其进行调用,在调用时不必在存储过 程名前加上数据库名,而且当创建一个新数据库时, 些系统存储过程会在新数据库中被自动创建。用户自定 义存储过程是由用户创建并能完成某一特定功能(如查 询用户所需数据信息)的存储过程
4 存储过程的分类 • 在SQL Server 中存储过程分为两类:系统提供的存储 过程和用户自定义存储过程。系统过程主要存储在 master 数据库中,并以sp_为前缀,并且系统存储过程 主要是从系统表中获取信息,从而为系统管理员管理 SQL Server 提供支持。通过系统存储过程,SQL Server 中的许多管理性或信息性的活动:如了解数据 库对象、数据库信息都可以被顺利有效地完成。尽管这 些系统存储过程被放在master 数据库中,但是仍可以 在其它数据库中对其进行调用,在调用时不必在存储过 程名前加上数据库名,而且当创建一个新数据库时,一 些系统存储过程会在新数据库中被自动创建。用户自定 义存储过程是由用户创建并能完成某一特定功能(如查 询用户所需数据信息)的存储过程
存储过程的运行过程 存储过程时存放在 SQLServer中的特别快的数据库对象, 当首次运行存储过程时,它按以下方式进行: 1、该过程被划分成部件片断。 2、检査引用数据库中其它对象(表、视图等)的部件,确 保引用的对象是存在的,这也被称为分解。 而创建存储过程的代码存放在 comments表ets表中, 3、一旦分解完成,该过程的名字将存放倒syob ·4、然后编译,并且,编译过程中将创建如何运行查询的蓝 本。该蓝本通称称为常规计划或查询树,查询树存放在 sysProcedures表中。 5、存储过程首次运行时,读出查询计划并完全编译成过程 计划,然后运行。这样,节约了每次运行存成过程的语法 检査、分解和编译查询树的时间
5 存储过程的运行过程 • 存储过程时存放在SQL Server中的特别快的数据库对象, 当首次运行存储过程时,它按以下方式进行: • 1、该过程被划分成部件片断。 • 2、检查引用数据库中其它对象(表、视图等)的部件,确 保引用的对象是存在的,这也被称为分解。 • 3、一旦分解完成,该过程的名字将存放倒sysobjects表中, 而创建存储过程的代码存放在syscomments表中 • 4、然后编译,并且,编译过程中将创建如何运行查询的蓝 本。该蓝本通称称为常规计划或查询树,查询树存放在 sysProcedures表中。 • 5、存储过程首次运行时,读出查询计划并完全编译成过程 计划,然后运行。这样,节约了每次运行存成过程的语法 检查、分解和编译查询树的时间
存储过程的优点 当利用 SQLServer创建一个应用程序时,TSQL是一种主 要的编程语言。若运用TSQ来进行编程有两种方法:其 是在本地存储TSQL程序并创建应用程序,向 SQLServer发 送命令来对结果进行处理。其二是可以把部分用TSQL编写 的程序作为存储过程存储在 SQLServer中,并创建应用程 序来调用存储过程,对数据结果进行处理。存储过程能够通 过接收参数向调用者返回结果集,结果集的格式由调用者确 定;返回状态值给调用者,指明调用是成功或是失败;包括 针对数据库的操作语句,并且可以在一个存储过程中调用另 存储过程。 我们通常更偏爱于使用第二种方法,即在 SQLServer中使 用存储过程,而不是在客户计算机上调用TSQ编写的一段 程序原因在于存储过程具有以下优点:
6 存储过程的优点 • 当利用SQL Server 创建一个应用程序时,T-SQL 是一种主 要的编程语言。若运用T-SQL 来进行编程有两种方法:其一 是在本地存储T-SQL程序并创建应用程序,向SQL Server 发 送命令来对结果进行处理。其二是可以把部分用T-SQL 编写 的程序作为存储过程存储在SQL Server 中,并创建应用程 序来调用存储过程,对数据结果进行处理。存储过程能够通 过接收参数向调用者返回结果集,结果集的格式由调用者确 定;返回状态值给调用者,指明调用是成功或是失败;包括 针对数据库的操作语句,并且可以在一个存储过程中调用另 一存储过程。 • 我们通常更偏爱于使用第二种方法,即在SQL Server 中使 用存储过程,而不是在客户计算机上调用T-SQL 编写的一段 程序原因在于存储过程具有以下优点:
存储过程的优点 可用存储过程封装事务规则。一旦封装 完成,这些规则就可用于多个应用,从 而有一个一致的数据接口,因此,若需 改变过程的功能,只需在一个地方对其 进行修改,而不必对每个应用都进行修 改
7 存储过程的优点 • 可用存储过程封装事务规则。一旦封装 完成,这些规则就可用于多个应用,从 而有一个一致的数据接口,因此,若需 改变过程的功能,只需在一个地方对其 进行修改,而不必对每个应用都进行修 改
存储过程的优点 存储过程允许标准组件式编程:存储过 程在被创建以后,可以在程序中被多次 调用而不必重新编写该存储过程的SQL 语句;而且数据库专业人员可随时对存 储过程进行修改,但对应用程序源代码 亳无影响,因为应用程序源代码只包含 存储过程的调用语句,从而极大地提高 了程序的可移植性
8 存储过程的优点 • 存储过程允许标准组件式编程:存储过 程在被创建以后,可以在程序中被多次 调用而不必重新编写该存储过程的SQL 语句;而且数据库专业人员可随时对存 储过程进行修改,但对应用程序源代码 毫无影响,因为应用程序源代码只包含 存储过程的调用语句,从而极大地提高 了程序的可移植性
存储过程的优点 存储过程能够实现较快的执行速度:如 果某一操作包含大量的TSQL代码或分 别被多次执行,那么存储过程要比批处 理的执行速度快很多。因为存储过程是 预编译的,在首次运行一个存储过程时, 查询优化器对其进行分析优化,并给出 最终被存在系统表中的执行计划;而批 处理的TSQL语句在每次运行时都要进行 编译和优化,因此速度相对要慢一些
9 存储过程的优点 • 存储过程能够实现较快的执行速度:如 果某一操作包含大量的T-SQL 代码或分 别被多次执行,那么存储过程要比批处 理的执行速度快很多。因为存储过程是 预编译的,在首次运行一个存储过程时, 查询优化器对其进行分析优化,并给出 最终被存在系统表中的执行计划;而批 处理的T-SQL语句在每次运行时都要进行 编译和优化,因此速度相对要慢一些
存储过程的优点 存储过程能够减少网络流量:对于同 个针对数据数据库对象的操作(如查询 修改),如果这一操作所涉及到的TSQL 语句被组织成一存储过程,那么当在客 户计算机上调用该存储过程时,网络中 传送的只是该调用语句;否则将是多条 SQL语句,从而大大增加了网络流量, 降低网络负载
10 存储过程的优点 • 存储过程能够减少网络流量:对于同一 个针对数据数据库对象的操作(如查询 修改),如果这一操作所涉及到的T-SQL 语句被组织成一存储过程,那么当在客 户计算机上调用该存储过程时,网络中 传送的只是该调用语句;否则将是多条 SQL 语句,从而大大增加了网络流量, 降低网络负载