SQL Server 2005 实用教程;第8章;存储过程;导言:存储过程;1、存储过程概念
存储过程是一种数据库对象,是为了实现某个特定任务,将一组预编译的SQL语句以一个存储单元的形式存储在服务器上,供用户调用。存储过程在第一次执行时进行编译,然后将编译好的代码保存在高速缓存中以便以后调用,这样可以提高代码的执行效率。;存储过程综述;3、优点:
1、安全机制:只给用户访问存储过程的权限,而不授予用户访问表和视图的权限。
2、改良了执行性能:只在第一次执行时进行编译,以后执行无需重新编译,而一般SQL语句每执行一次就编译一次。
3、减少网络流量:存储过程存在于服务器上,调用时,只需传递执行存储过程的执行命令和返回结果。
4、模块化的程序设计:增强了代码的可重用性,提高了开发效率。;4、存储过程类型
用户定义的存储过程:用户定义的存储过程是用户根据需要,为完成某一特定功能,在自己的普通数据库中创建的存储过程。
系统存储过程:系统存储过程以sp_为前缀,主要用来从系统表中获取信息,为系统管理员管理SQL Server提供帮助,为用户查看数据库对象提供方便。比如用来查看数据库对象信息的系统存储过程sp_help。从物理意义上讲,系统存储过程存储在资源数据库中。从逻辑意义上讲,系统存储过程出现在每个系统定义数据库和用户定义数据库的sys构架中。
;存储过程综述;创建存储过程时,需要注意下列事项:
只能在当前数据库中创建存储过程。
数据库的所有者可以创建存储过程,也可以授权其他用户创建存储过程。
存储过程是数据库对象,其名称必须遵守标识符命名规则。
不能将 CREATE PROCEDURE 语句与其它 SQL 语句组合到单个批处理中。
创建存储过程时,应指定所有输入参数和向调用过程或批处理返回的输出参数、执行数据库操作的编程语句和返回至调用过程或批处理以表明成功或失败的状态值。;创建简单存储过程;使用SQL语句创建不带参数的存储过程语法格式如下:
CREATE PROC [ EDURE ] procedure_name [;number]
[ WITH ?{ RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION } ]
AS sql_statement [ ...n ]
procedure_name:新存储过程的名称。过程名必须符合标识符规则,且对于数据库及其所有者必须唯一。
RECOMPILE : SQL 不会缓存该过程的计划,该过程将在运行时重新编译。
ENCRYPTION :SQL Server 加密 使用 ENCRYPTION 可防止将过程作为 SQL Server 复制的一部分发布。 ;创建简单存储过程;例、在shop数据库中,创建一个查询存储过程up_GoodsType,要求该存储过程商品表中的类别信息。
(1)在创建本例存储过程时,可以先在查询编辑器中编写实现存储过程功能的T-SQL语句。
代码如下:
use shop
go
select distinct 类别号 from 商品表 ;创建简单存储过程;对存储在服务器上的存储过程,可以使用EXECUTE 命令或其名称执行它,其语法格式如下:
[ EXEC [ UTE ] ] procedure_name [number ]
注:如果存储过程是批处理中的第一条语句,EXECUTE命令可以省略,可以使用存储过程的名字执行该存储过程。;执行存储过程;查看简单存储过程;查看简单存储过程;修改简单存储过程;删除存储过程;使用SQL语句创建带参数的存储过程语法格式如下:
CREATE PROC [ EDURE ] procedure_name [ number ]
[ { @parameter data_type } [ = default ] [ OUTPUT ]
] [ ,...n ]
[ WITH
{ RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION
}
]
AS sql_statement [ ...n ]
;OUTPUT:表明参数是返回参数。该选项的值可以返回给EXEC[UTE]。使用 OUTPUT参数可将信息返回给调用过程。
parameter:存储过程中的输入和输出参数。
data_type:参数的数据类型。
Default:指参数的默认值,必须是常量或NULL。如果定义了默认值,不必指定该参数的值即可执行过程。;使用
原创力文档

文档评论(0)