- 8
- 0
- 约1.14万字
- 约 15页
- 2017-06-05 发布于湖北
- 举报
第六章 存储过程
存储过程是一系列 SQL 语句,变量,控制语句构成的集合,作为一个单元
处理。每个存储过程有一个名词,应用程序可通过名词调用的方法执行存储过程。
合理使用存储过程,可使数据管理更加方便,减少应用程序代码的修改。
6.1 存储过程概述
存储过程是一系列 SQL 语句构成的集合,可以将若干 SQL 语句封装在一个
存储过程中。用户在编写 SQL 脚本时,就可以使用存储过程代替相应的多条 SQL
语句,使得脚本清晰,易于理解。
存储过程是不同于表的另外一种数据库对象,可以接收输入参数,返回输出
参数或状态值,执行存储过程可以提高数据存取性能,存储过程可以多次执行,
提高重用性。
存储过程由输入输出参数,返回值,编程语句组成。可以向存储过程输入多
个参数值,也可以向存储过程的调用者传递多个输出值;存储过程只能有一个返
回值,表示存储过程调用成功还是失败;存储过程的编程语句可以是 SQL 控制
语句、变量、表达式,访问数据库的语句,调用其它存储过程的语句。图 6-1 显
示了 YBPMS 数据的存储过程。
图6-1 YBPMS 数据库的存储过程
存储过程具有下面一些优点:
(1) 存储过程具有安全性和所有权链接,以及可以附加的它们的证书。用户可
以被授权来执行存储过程,而不必直接对存储过程中操作的对象具有权
限。
(2 ) 存储过程可以强制应用程序的安全性。参数化存储过程有助于使应用程序
不受 SQL 注入攻击。
(3 ) 存储过程可重复调用。存储过程创建后,可以在应用程序调用任意多次,
方便维护应用程序,允许应用程序统一访问数据。
(4 ) 存储过程可以减少网络通信流量。一个需要几十几百行 SQL 语句的操作
可以通过几条执行存储过程的语句来执行,而不需要在网络中发送几十几
百行代码。
在 SQL Server2008 中,根据实现存储过程方式和内容的不同,存储过程可
分为用户自定义存储过程,系统存储过程,扩展存储过程。
(1)用户自定义存储过程
用户自定义存储过程指用户根据应用需要创建的存储过程。
(2 )系统存储过程
系统存储过程是指由 SQL Server2008 定义的,用于 SQL Server 管理操作的
存储过程。例如,sp_who, xp_logininfo 就是 2 个系统存储过程。大多数系统存储
过程带有 sp_前缀。图 6-2 显示了系统存储过程。
图6-2 系统存储过程
(3 )扩展存储过程
扩展存储过程是指 Microsoft SQL Server 的实例可以动态加载和运行的DLL 。扩
展存储过程运行使用第三方编程语言(例如 C )创建自己的外部例程。扩展存储
过程直接在 SQL Server 的实例地址空间运行,可以使用 SQL Server 扩展存储过
程 API 完成编程。
6.2 创建和执行存储过程
创建存储过程使用 CREATE PROCEDURE 语句,执行存储过程使用
EXECUTE 语句。
创建存储过程的一般格式为:
CREATE PROC [EDURE] 存储过程名
[@参数名 数据类型 [=default] [OUTPUT]]
[, … , n]
[WITH ENCRYPTION]
AS
变量定义语句
SQL 语句
其中:
default :参数的默认值,必须为常量。创建存储过程时,如果给出了默认值,
那么在执行存储过程时,如果没有向具有默认值的参数传递参数值,参数的
值就为默认值。默认值可以包含通配符(%、_ 、[ ]、和[ ^ ])。
OUTPUT :指示参数是输出参数。使用 OUTPUT 参数将值返回给过程的调
用者。
WITH ENCRYPTION :指示 SQL Server 将 create procedure 语句的原始文本
转换为模糊格式。模糊代码的输出在 SQL Server 的任何目录
原创力文档

文档评论(0)