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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM