18143453325 在线咨询 在线咨询
18143453325 在线咨询
所在位置: 首页 > 营销资讯 > 信息时代 > 存储过程(数据库)

存储过程(数据库)

时间:2022-12-15 22:30:01 | 来源:信息时代

时间:2022-12-15 22:30:01 来源:信息时代

    存储过程 : 存储在数据库中的可执行例程,直接在数据库服务器运行,允许连接到服务器的应用进行调用。一般由过程性语句定义,可以给它指定不同数据类型的参数,根据具体系统的规定,还可以指定参数的输入、输出类型。
Sybase SQL Server首先引入过程性SQL语言T-SQL,并在Sybase Adaptive Server和MS SQL Server中进一步加以增强。目前多数据库产品都提供建立存储过程的过程性SQL语言,如Oracle的PL/SQL,Informix的SPL等。不同系统对存储过程的语法和操作能力可能有一定的变化,比如过程定义的首部(包括参数类型)、过程体局部参数类型、支持的流程控制语句、过程执行状态标志变量等,甚至个别操作符也可能有所不同。有些系统还支持用 C/C++等高级语言定义的存储过程,如PostgreSQL支持C编译模块作为自定义函数。
SQL标准中也提供了SQL持久存储模块(参见7.3.12)和SQL调用例程等。
1.存储与执行方法
存储过程一般是可编译的,存储方法主要有两种,即:源码方式和源码+预编译方式。前者仅在数据库中保存存储过程的定义,后者同时保存定义和编译码。
存储过程可重复执行,执行请求可以来自交互控制台、客户端应用或者被其他存储过程调用。交互式是最简单的调用方式,一般只能使用输入参数。被其他存储过程调用的方法和高级语言中的函数调用很相似,可以使用不同类型的参数,甚至可以使用和/或修改调用者的局部变量或过程参数。客户端应用方式则一般通过ODBC或JDBC的接口激活存储过程,这时需要使用转义序列发出调用: {call〈过程名〉[(〈参数列表〉)]},或者使用问号(?)接受过程的返回结果:{?=call〈过程名〉[(〈参数列表〉)]}。
客户端应用调用过程时的实参个数、类型等取决于存储过程的定义,如果没有形参,就不需要给出实参列表。参数可以是常量,也可以是问号(?)标识的动态实参。JDBC使用可调用语句对象的set×××方法(这里的“×××”代表某个ODBC数据类型,后面类似的情况表示相同的含义)给出调用的实参值。但有些数据库系统的ODBC和/或JDBC驱动程序可能不支持存储过程的调用。ODBC 的SQLGetInfo和JDBC 的方法DatabaseMetaData.supportsStoredProcedures分别能够获得数据源对存储过程的支持信息。
执行存储过程时,一般由SP管理器对存储过程块进行词法和语法分析,然后SP管理器和SQL执行器协同工作,完成存储过程的执行。
2. 主要特点
存储过程能够同时使用SQL语句和流程控制语句处理数据。使用存储过程的主要优点有:
(1)增强了SQL语言的功能和灵活性: 存储过程可以使用流程控制语句,有很强的灵活性,可以完成复杂的逻辑判断与控制和较复杂的运算。
(2)优化性能: 在运行存储过程前,数据库服务器对其进行优化编译,包括多SQL语句优化等,这能够大大改善SQL语句的性能,提高执行速度。
(3)降低网络的通信量: 存储过程保持在服务器端,执行全部逻辑流程仅需要向服务器发送一次过程执行请求和对应参数,避免了交互模式下处理逻辑执行中额外的中间通信开销。
(4)可维护性高,便于部署应用: 将全局处理定义为存储过程,当处理发生变化时,可能只需修改存储过程、重新发布所影响的数据就可完成系统升级。
此外,存储过程由于增加了流程控制能力,设计和执行性能对实现逻辑有很大的依赖性。设计者的水平可能严重影响存储过程的运行质量,也就是说提高了对应用开发者编程能力的要求。

74
73
25
news

版权所有© 亿企邦 1997-2022 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭