文档详情

Oracle存储过程与触发器.ppt

发布:2018-05-15约1.02万字共39页下载文档
文本预览下载声明
第8章 存储过程与触发器 本章内容 存储过程 触发器 存储过程 什么是存储过程 为什么使用存储过程 创建存储过程 使用存储过程 存储过程引言 在使用SQL Server 2000 创建应用程序时,Transact-SQL 编程语言是应用程序和 SQL Server 数据库之间的主要编程接口。 使用 Transact-SQL 程序时,可用两种方法存储和执行程序。 可以在本地存储程序,并创建向 SQL Server 发送命令并处理结果的应用程序; 也可以将程序在 SQL Server中存储为存储过程,并创建执行存储过程并处理结果的应用程序。 什么是存储过程 Transact-SQL 语句的预编译集合,这些语句在一个名称下存储并作为一个单元进行处理。 换句话说:在一个存储过程内,可以设计、编码和测试执行某个常用任务所需的 SQL 语句和逻辑。之后,每个需要执行该任务的应用程序只须执行此存储过程即可。(代码重用) 为什么使用存储过程(一) 1.允许模块化程序设计 只需创建过程一次并将其存储在数据库中,以后即可在程序中调用该过程任意次。存储过程可由在数据库编程方面有专长的人员创建,并可独立于程序源代码而单独修改。 银行每个月底做结算的例子 为什么使用存储过程(二) 2. 对于需要重复执行的代码,执行效率更高 如果某操作需要大量 Transact-SQL 代码或需重复执行,存储过程将比 Transact-SQL 批代码的执行要快。 系统会在创建存储过程时对其进行分析和优化,并可在首次执行该过程后使用该过程的内存中版本。 如果不采用存储过程,每次运行那些需要重复执行的 Transact-SQL 语句时,都需要把这些语句从客户端发送到服务器端,并且在 SQL Server 每次执行这些语句时,都要对其进行编译和优化——显然效率会很低。 为什么使用存储过程(三) 3.减少网络流量 一个需要数百行 Transact-SQL 代码的操作由一条执行过程代码的单独语句就可实现,而不需要在网络中发送数百行代码。 4.可作为安全机制使用 即使对于没有直接执行存储过程中语句的权限的用户,也可授予他们执行该存储过程的权限。 存储过程的处理流程 创建存储过程语法 CREATE PROC [ EDURE ] procedure_name [ { @parameter data_type } [ VARYING ] [ = default ] [ OUTPUT ] ] [ ,...n ] [ WITH { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ] AS sql_statement [ ...n ] 创建存储过程举例(一) 从authors表中返回所有作者的姓名、电话、地址和所在的州名。 CREATE PROCEDURE au_info_all AS SELECT au_lname,au_fname,phone,address,state FROM authors GO 创建存储过程举例(二) 指定参数,返回指定州的作家的姓名、电话、地址。 CREATE PROCEDURE au_info @state char(2) AS SELECT au_lname, au_fname,phone,address FROM authors WHERE state = @state GO 创建存储过程举例(三) 具有默认值的存储过程。 CREATE PROCEDURE au_info @state char(2) = ‘CA‘ --默认值 = ’CA’ AS IF @state NOT LIKE ‘[A-Z][A-Z] ’ --增加一段检查代码 BEGIN print 输入参数错误 return END SELECT au_lname, au_fname,phone,address FROM authors WHERE state = @state GO 使用存储过程(一) 对于例1我们可以以下面的方式执行: EXECUTE au_info_all EXEC au_info_all 如果该过程是批处理中的第一条语句,则可使用:au_info_all 使用存储过程(二) 对于例2(有参数的存储过程)我们可以以下面的方式执行: EXECUTE au_info CA EXECUTE au_info @state = CA EXEC au_info CA EXEC au_info @state = CA 如果该过程是批处理中的第一条语句,则可使用: au_info CA au_info @state = CA 使用存储过程(三)
显示全部
相似文档