您的位置:首页技术开发数据库教程 → SQL Server 7.0 入门(五)

SQL Server 7.0 入门(五)

时间:2004/11/7 4:14:00来源:本站整理作者:蓝点我要评论(0)

使用SQL Server开发应用程序

编写存储过程与触发器

       存储过程和触发器是由用户创建的、驻留在服务器的一组Transact SQL查询语句。触发器是系统在特定条件下执行的。存储过程能够改善应用程序的性能。当客户程序需要访问数据时,一般要经过5个步骤才能访问到数据:

1)  查询语句被发送到服务器

2)  服务器编译SQL代码。

3)  优化产生查询的执行计划。

4)  数据引擎执行查询。

5)  结果发回客户程序。

存储过程是在创建时编译的,当存储过程第一次执行时,SQL Server产生查询执行计划并将其存储进来,以利于将来使用。当通过存储过程发出一个请求时,上述的第2和第3步就没有了,这能大大改善系统的性能。即使在第1步上也能提高性能。因为此时发送到服务器的语句只是一条存储过程的EXECUTE语句,而不是庞大的、复杂的查询。这种特性能降低网络的流量。

除了性能方面的改善外,存储过程还提供了方便地集中维护应用程序的功能。如果将查询嵌入到应用程序中。而又需要对查询进行改变,则应用程序需要重新编译,并重新发布到所有的客户端。而在存储过程中,修改对用户而言是透明的,它只需要在服务器上重新编译存储过程

存储过程还能提供安全机制,尽管用户可能无权执行存储过程中的命令,但它却可能有权执行存储过程本身。有时候,系统管理员不会给用户以数据修改(UPDATE、INSERT和DELETE)的权力。创建的存储过程却能进行这些操作。当然用户需要拥有执行该存储过程的权力。



建立存储过程

       存储过程可以达到以下目的:

       · 带参数。

       · 返回状态值。

       · 调用其它存储过程

       · 在远程服务器上执行。

       存储过程在“sysobjects”系统表中有一个表项,其类型为“P”。存储过程的文本存储在“syscomments”系统表中。创建存储过程需要使用Transact SQL命令CREATE PROCEDURE。

       例如:

       USE pubs

       GO

       

       CREATE PROCEDURE ap_GetAuthorsForPublisher

       AS

       SELECT a.au_lname,a.au_fname

       FROM authors a, titleauthor ta, titles t, publishers p

       WHERE a.au_id = ta.Au_id

       AND ta.Title_id = t.title_id

       AND t.pub_id = p.pub_id

       AND p.pub_name = ’New Moon Books’

       GO



       CREATE PROCEDURE语句的语法如下:

       CREATE PROC[DURE] 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_GetAuthorsForPublisher

       @PublisherName varchar(40) = ‘New Moon Books’

       AS

       SELECT a.au_lname,a.au_fname

       FROM authors a, titleauthor ta, titles t, publishers p

       WHERE a.au_id = ta.Au_id

       AND ta.Title_id = t.title_id

       AND t.pub_id = p.pub_id

       AND p.pub_name = @PublisherName

       GO






相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 oracle10g安装图解(wi

最新文章 数据库流行度排行2019oracle10g安装图解(wi SQL2008全部数据导出导入两种方法SQL2005新建复制“找不到存储过程 错误:28Dos远程登录mysql数据库详细图文教程mysql怎么开启远程登录功能

人气排行 mysql自动定时备份数据库的最佳方法-支持wiVisual Foxpro 6.0安装向导图文教程SQL Server 2008 安装图文教程SQL2008全部数据导出导入两种方法SQL 2000/2005/2008 的收缩日志方法,和清理mysql出 Can't connect to MySQL server onoracle10g安装图解(win7)sql2005安装图解_(sql server2005)安装教程