SQLServer7.0入门(五),第1张

SQLServer7.0入门(五),第2张

使用SQL Server开发应用程序
编写存储过程和触发器
存储过程和触发器是由用户创建并驻留在服务器上的一组Transact SQL查询语句。触发器由系统在特定条件下执行。存储过程可以提高应用程序的性能。当客户端程序需要访问数据时,访问数据通常需要五个步骤:
1)查询语句发送到服务器。
2)服务器编译SQL代码。
3)优化生成的查询的执行计划。
4)数据引擎执行查询。
5)结果被发送回客户端程序。
存储过程是在创建时编译的。第一次执行存储过程时,SQL Server会生成一个查询执行计划,并将其存储起来以备将来使用。当通过存储过程发送请求时,不需要上述步骤2和3,这可以大大提高系统的性能。即使在步骤1中,性能也可以提高。此时发送到服务器的语句只是一个存储过程的EXECUTE语句,而不是一个庞大复杂的查询。此功能可以减少网络流量。
除了性能提升,存储过程还提供了集中应用程序维护的功能。如果查询嵌入在应用程序中。但是查询需要更改,应用程序需要重新编译并重新发布给所有客户端。在存储过程中,修改对用户是透明的,只需要在服务器上重新编译存储过程。
存储过程也可以提供安全机制。尽管用户可能无权执行存储过程中的命令,但可能有权执行存储过程本身。有时,系统管理员不会授予用户修改数据的权限(更新、插入和删除)。由创建的存储过程可以执行这些操作。当然,用户需要有执行这个存储过程的权限。

建立存储过程
存储过程可以达到以下目的:
带参数。
…返回状态值。
…调用其他存储过程。
…在远程服务器上执行。
存储过程在“sysobjects”系统表中有一个条目,其类型为“p”。存储过程的文本存储在“syscomments”系统表中。创建存储过程需要Transact SQL命令CREATE PROCEDURE。
例如:
使用PUBS
GO创建过程AP _ GetAuthorsSponsor
As
Select A . au _ lname,a.au _ fname
from Authors A,titleauthor ta,titles t,publishers p
其中a.au_id = taAu_id
和ta。title _ id = t . title _ id
AND t . pub _ id = p . pub _ id
AND p . pub _ name = '新月图书'
GO

CREATE PROCEDURE语句的语法如下:
CREATE PROC[during]PROCEDURE _ NAME[;number]
[@ parameter _ name][output][,_ n]]
[with { recompile | encryption }]
[for replication]
as
number是用于对同名进程进行分组的整数。分组就是通过drop procedure语句将所有的进程组合成一个分组。
@parameter_name指定参数的名称。
RECOMPILE表示每次执行过程时都要编译。
ENCRYPTION表示要在“syscomments”表中加密过程的文本。
FOR REPLICATION意味着该过程不能在提交服务器上执行。

将参数传递给存储过程
存储过程可以接受该参数。
注意:过程的参数也可以是用户定义的数据类型。

为参数赋予默认值
用户还可以为存储过程中的参数定义默认值。如果在执行过程中没有提供所需的参数,系统将使用默认值作为参数。如果在执行时没有定义默认值也没有提供参数,SQL Server将返回错误。在存储过程中定义默认值,并使用一些逻辑来检查是否指定了参数并采取相应的操作,这是一个好习惯。
例如:
USE PUBs
GO
CREATE PROCEDURE AP _ getauthors sponsor
@ publisher name Varchar(40)= ' New Moon Books '
AS
SELECT a . au _ lname,a.au_fname
FROM authors a,titleauthor ta,titles t,publishers p
其中a.au_id = taAu_id
和ta。title _ id = t . title _ id
AND t . pub _ id = p . pub _ id
AND p . pub _ name = @ publisher name
GO

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » SQLServer7.0入门(五)

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情