zoukankan      html  css  js  c++  java
  • SQL Server 存储过程,带事务的存储过程(创建存储过程,删除存储过程,修改存储过

      1 存储过程
      2 
      3 创建存储过程
      4 
      5 use pubs --pubs为数据库
      6 
      7 go
      8 
      9 create procedure MyPRO --procedure为创建存储过程关键字,也可以简写proc,MyPRO为存储过程名
     10 
     11 as
     12 
     13 select * from authors
     14 
     15 --执行存储过程
     16 
     17 exec mypro  --exec表示执行存储过程
     18 
     19 创建有参存储过程
     20 
     21  
     22 
     23 create proc sp_select
     24 
     25 @cid int,
     26 
     27 @str nvarchar(20) output   -- output表示出参,没有默认进参
     28 
     29 as
     30 
     31 select @str=name from c where id=@cid
     32 
     33  
     34 
     35 执行存储过程
     36 
     37 declare @str nvarchar(20)   --declare表示定义变量
     38 
     39 exec sp_select 4 ,@str output
     40 
     41 print @str
     42 
     43 带事务的存储过程
     44 
     45 存储过程中使用事务
     46 
     47 存储过程中使用事务的简单语法
     48 
     49 在存储过程中使用事务时非常重要的,使用数据可以保持数据的关联完整性,在Sql server存储过程中使用事务也很简单,用一个例子来说明它的语法格式:
     50 
     51  
     52 
     53 1、事务 存储过程使用try…catch捕获错误
     54 
     55 Create Procedure sp_cunchuguocheng
     56 
     57 @aname nvarchar(20),--后面一定标大小,默认为
     58 
     59 @bstu  nvarchar(20),
     60 
     61 @bkm   nvarchar(20),
     62 
     63 @bcj    nvarchar(20),
     64 
     65 @cid int,
     66 
     67 @cname nvarchar(20)
     68 
     69 AS
     70 
     71 BEGIN
     72 
     73  begin transaction
     74 
     75  begin try
     76 
     77         insert into a (name)values(@aname)
     78 
     79          insert into b (stuid,km,cj)values(@bstu,@bkm,@bcj)
     80 
     81         insert into c(id,name) values(@cid,@cname)
     82 
     83 commit transaction
     84 
     85  end try 
     86 
     87  begin catch
     88 
     89  print '错误'
     90 
     91  rollback transaction
     92 
     93  end catch
     94 
     95 end
     96 
     97 GO exec st_insert '8','aaa','aaa','6','aaa'--存储过程的使用方法
     98 
     99  
    100 
    101 2set XACT_ABORT ON 事务
    102 
    103 Create Procedure sp_cunchuguocheng
    104 
    105 @aname nvarchar(20),--后面一定标大小,默认为
    106 
    107 @bstu  nvarchar(20),
    108 
    109 @bkm   nvarchar(20),
    110 
    111 @bcj    nvarchar(20),
    112 
    113 @cid int,
    114 
    115 @cname nvarchar(20)
    116 
    117 AS
    118 
    119 BEGIN
    120 
    121 set Nocount on  --当SET NOCOUNT 为ON 时,不返回计数(计数表示受Transact-SQL 语句影响的行数,例如在Sql server查询分析器中执行一个delete操作后,下方窗口会提示()Rows Affected)。当  SET NOCOUNT 为OFF 时,返回计数,我们应该在存储过程的头部加上SET NOCOUNT ON 这样的话,在退出存储过程的时候加上SET NOCOUNT OFF这样的话,以达到优化存储过程的目的。
    122 
    123 set XACT_ABORT ON --使用存储过程执行事物,需要开启XACT_ABORT参数(默认值为Off),将该参数设置为On,表示当执行事务时,如果出错,会将transcation设置为uncommittable状态,那么在语句块批处理结束后将回滚所有操作;如果该参数设置为Off,表示当执行事务时,如果出错,出错的语句将不会执行,其他正确的操作继续执行。
    124 
    125  begin transaction --事务开始
    126 
    127         insert into a (name)values(@aname)
    128 
    129          insert into b (stuid,km,cj)values(@bstu,@bkm,@bcj)
    130 
    131         insert into c(id,name) values(@cid,@cname)
    132 
    133 commit transaction --提交事务
    134 
    135 end
    136 
    137 GO
    138 
    139 exec sp_cunchuguocheng '111','111','111','111',5,'111'
    140 
    141 3事务内设置保存点
    142 
    143 Create Procedure  MyProcedure
    144 
    145 AS
    146 
    147     Begin
    148 
    149            Set    NOCOUNT    ON;
    150 
    151            Set XACT_ABORT ON;
    152 
    153            begin   tran  ok  --开始一个事务OK
    154 
    155               delete  from  rxqz  where qz=   'rx015 ' --删除数据
    156 
    157            save   tran  bcd   --保存一个事务点命名为bcd
    158 
    159               update  sz  set   name='李丽s' where name= '李丽'--修改数据
    160 
    161            if  @@error<>0  --判断修改数据有没有出错  
    162 
    163                begin --如果出错
    164 
    165                       rollback   tran  bcd  -- 回滚事务到BCD 的还原点
    166 
    167                    commit   tran  ok  --提交事务    
    168 
    169                end   
    170 
    171            else  --没有出错
    172 
    173                commit  tran ok --提交事务
    174 
    175      End
    176 
    177 链接
    178 
    179 转载连接:http://www.cnblogs.com/RascallySnake/archive/2010/05/17/1737298.html(部分内容为转载)
    180 
    181 删除存储过程
    182 
    183 drop proc sp_select
    184 
    185 修改存储过程
    186 
    187 alter procedure mypro
    188 
    189 as
    190 
    191 select au_lname,au_fname from authors

    转载:http://blog.sina.com.cn/s/blog_66f673740101oy67.html

  • 相关阅读:
    如果获取 上传域的文件名
    更改织梦后台广告
    html5 让IE6,7支持HTML5语义化标签的文件
    如何获取选中的复选框
    手机下的ev.pageX无效
    Ajax
    列出远程git的全部分支
    扫描局域网中Gogs服务器(ruby)
    Xcode删除无用的Symbols信息
    Docker
  • 原文地址:https://www.cnblogs.com/louby/p/6559611.html
Copyright © 2011-2022 走看看