学习啦>生活课堂>生活小常识>

存储过程和事务的区别

时间: 称红1024 分享

  存储过程和事务的区别想必很多人都不是很了解,一起来看看吧。下面是学习啦小编给大家整理的存储过程和事务的区别,供大家参阅!

  存储过程和事务的区别

  存储过程:是SQL-Server服务器上一组预先编译好的T-SQL语句。以一个名称存储在数据库中,作为一个独立的数据库对象。

  有以下优点:

  1、执行速度快;

  2、提高工作效率;

  3、规范程序设计;

  4、提高系统安全性。

  事务:一般是指用户定义的一序列操作,这些操作要么全做,要么都不做,是不可分割的一个工作单位.他是一个逻辑工作单元,同时又是一个恢复单元,一个事务提交以后数据库又处与另一个一致状态.具体的关于他的操作去找书看吧.

  事务中可以有存储过程

  存储过程中也可以有事务

  事务是一系列的对数据库的操作,这些操作包括存储过程,更改语句及其它操作。开始语句是BEGIN TRANSACTION (事务开始),结束语句有两种,一个是ROLLBACK--回滚,一个是--commit提交事务的所有操作。

  存储过程是实现一定功能的语句组成的程序段。可以包括事务,也可以在某事务当中。

  这是一个包括一个事务处理过程的存储过程,并且在事务中也包括另一个存储过程的操作:

  CREATTE PROCEDURE MYPROCEDURE

  AS

  BEGIN TRANSACTION--开始一个事务

  UPDATE TABLENAME SET ABC='DEF' WHERE ......--操作

  EXEC OTHERPROCEDURE '参数' --事务中包括的存储过程

  IF @@ERROR>0--操作如果失败

  BEGIN

  ROLLBACK TRANSACTION--回滚

  RAISERROR('更改数据失败!',16,1)--向前台报错

  RETURN--返回,不再继续执行

  END

  ELSE

  COMMIT TRANSACTION--操作成功,确认所作修改

  GO

  存储过程的优势

  (1) 能实现模块化程序设计。存储过程是根据实际功能的需要创建的一个程序模块,并被存储在数据库中。以后用户要完成该功能,只要在程序中直接调用该存储过程即可,而无需再编写重复的程序代码。存储过程可由数据库编程方面的专门人员创建,并可独立于程序源代码而进行修改和扩展。

  (2) 使用存储过程可以提高执行效率。当客户程序需要访问服务器上的数据时,一般要经过5个步骤:

  ● 查询语句被发送到服务器;

  ● 服务器编译T-SQL语句;

  ● 优化产生查询执行计划;

  ● 数据库引擎执行查询;

  ● 执行结果发回客户程序。

  如果执行存储在客户端本地的T-SQL程序,那么每次执行该程序时,对于程序中的每一条语句都要经过以上5个步骤。而存储过程在创建时就被编译和优化,当存储过程第一次被执行时,SQL Server为其产生查询计划并将其保存在内存中,这样以后在调用该存储过程时就不必再进行编译,即以上5个步骤中的第2步和第3步就被省略了,这能大大改善系统的性能。

  (3) 减少网络流量。一个需要数百行T-SQL代码的操作,如果将其创建成存储过程,那么使用一条调用存储过程的语句就可完成该操作。这样就可避免在网络上发送数百行代码,从而减少了网络负荷。

  (4) 可作为安全机制使用。管理员可以不授予用户访问存储过程中涉及的表的权限,而只授予执行存储过程的权限。这样,既可以保证用户通过存储过程操纵数据库中的数据,又可以保证用户不能直接访问存储过程中涉及的表。用户通过存储过程来访问表,所能进行的操作是有限制的,从而保证了表中数据的安全性。

  存储过程的类型

  (1) 系统存储过程

  在SQL Server中的许多管理工作是通过执行系统存储过程来完成的。系统存储过程创建和保存在master数据库中,都以sp_为名称的前缀。系统存储过程是SQL Server系统自带的,具有执行系统存储过程权限的用户,可在master数据库之外直接调用。一般情况下,系统存储过程执行成功返回0值,若有错误发生返回非0值。

  (2) 扩展存储过程

  扩展存储过程是以动态链接库(dll)形式存在的外部程序。SQL Server自身带了大量的扩展存储过程安装在master数据库中,扩展存储过程与普通存储过程执行方法相同。

  若扩展存储过程的前缀为sp_,则该扩展存储过程在master数据库之外也可直接调用;否则,必须在扩展存储过程前面加上“master.dbo.”前缀。开发人员可以使用其他编程语言来创建扩展存储过程,编写好扩展存储过程后,可由sysadmin服务器角色的成员在 SQL Server 中注册该扩展存储过程,然后授予其他用户执行该过程的权限。扩展存储过程只能添加到 master 数据库中,利用扩展存储过程可以扩展SQL Server的功能。

  (3) 用户存储过程

  用户存储过程是由用户根据实际问题的需要所创建的存储过程。固定服务器角色sysadmin 的成员可根据实际需要在master数据库中创建用户存储过程,若使用sp_做存储过程的前缀,则该存储过程在任何位置均可直接调用,否则,必须在该存储过程前面加上“master.dbo.”前缀。对于在用户数据库中创建的存储过程,最好不要使用sp_作为其名称的前缀,否则如果该存储过程与系统存储过程同名,则该存储过程永远不会被执行。并且若在该用户数据库之外调用该存储过程,也必须在存储过程名的前面加上“用户数据库名.所有者名.”前缀才能找着、执行该存储过程。

存储过程和事务的区别相关文章:

1.自动输出SQLServer存储过程依赖列表到EXCEL文件

存储过程和事务的区别

存储过程和事务的区别想必很多人都不是很了解,一起来看看吧。下面是学习啦小编给大家整理的存储过程和事务的区别,供大家参阅! 存储过程和事务的区别 存储过程:是SQL-Server服务器上一组预先编译好的T-SQL语句。以一个名称存储在数据
推荐度:
点击下载文档文档为doc格式

精选文章

  • 存储过程和函数的区别
    存储过程和函数的区别

    存储过程和函数的区别你想知道吗?下面是学习啦小编给大家整理的存储过程和函数的区别,供大家参阅! 存储过程和函数的区别 存储过程和函数的不同之

  • 村委会与居委会的区别
    村委会与居委会的区别

    一谈到村委会与居委会的区别想必很多人都懵了,一起来看看吧。下面是学习啦小编给大家整理的村委会与居委会的区别,供大家参阅! 村委会与居委会的

  • 村淘和淘宝的区别
    村淘和淘宝的区别

    村淘和淘宝目的都是为了购物,那二者存在什么样的区别呢?下面是学习啦小编给大家整理的村淘和淘宝的区别,供大家参阅! 村淘和淘宝的区别 村淘-全称

  • 萃取液和原液的区别
    萃取液和原液的区别

    萃取液和原液都是液体的,那么你知道它们有什么样的区别吗?下面是学习啦小编给大家整理的萃取液和原液的区别,供大家参阅! 萃取液和原液的区别 萃

3630468