SQL Server數(shù)據(jù)庫學(xué)習(xí)之 —— 存儲(chǔ)過程- 事務(wù) - try-catch代碼塊
? ? ? ? ? 注意:在下列代碼中的:begin catch ?...... end catch代碼塊,雖然其中沒有編寫任何語句,但是“begin catch ?...... end catch”代碼塊不可省略,否則編譯器報(bào)錯(cuò)!
存儲(chǔ)過程代碼如下:
USE?[B2C2]??--?使用B2C2數(shù)據(jù)庫?? SET?ANSI_NULLS?ON SET?QUOTED_IDENTIFIER?ON GO CREATE?PROCEDURE?[dbo].[proc_test02] ( ????--?設(shè)置全局變量 @D_SEX?char(8),?????????--?性別 @D_NAME?varchar(128),???--?姓名 @D_AGE?int,?????????????--?年齡? @D_STUNO?int,???????????--?學(xué)號(hào) ????@D_COUNT?int??OUTPUT????--?數(shù)量,輸出參數(shù)???????????? ??? ) AS BEGIN?TRY --?設(shè)置局部變量 DECLARE?@D_TEACHER?varchar(128);???--?教師姓名 DECLARE?@D_SUBJECT?varchar(64);????--?科目 SELECT?TOP?1?@D_TEACHER?=?TEACHER,?@D_SUBJECT?=?SUBJECTS?FROM?dbo.t_class?WHERE?STUNO?=?@D_STUNO; BEGIN?TRAN??--?開啟事務(wù) ???? END?TRY BEGIN?CATCH END?CATCH?????--?"BEGIN?TRY--END?TRY"與"BEGIN?CATCH--END?CATCH"要配對(duì)使用?? IF(@@TRANCOUNT?>?0)??--?判斷事務(wù)是否執(zhí)行過 BEGIN ??SET?@D_COUNT?=?1; ??COMMIT?TRAN;???--?關(guān)閉事務(wù) END GO