国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

SQLServer 存儲過程嵌套事務處理

2024-07-21 02:50:27
字體:
來源:轉載
供稿:網友
SQLServer 存儲過程嵌套事務處理 2014-04-09 17:01 by JentleWang, ... 閱讀, ... 評論, 收藏, 編輯

某個存儲過程可能被單獨調用,也可能由其他存儲過程嵌套調用,則可能會發生嵌套事務的情形。

下面是一種解決存儲過程嵌套調用的通用代碼,在不能確定存儲過程是否可能被其他存儲過程調用的情況下,建議每個存儲過程都按照這個模板建立

create PRoc proc_exampleas begin     --聲明變量,存放當前已開啟的事務數    declare @exist_trancount int    select @exist_trancount = @@trancount    if @exist_trancount > 0        --創建事務保存點        save transaction tran_proc    else        --開啟新事務        begin transaction tran_proc            /*        存儲過程業務處理代碼        ·········    */    if @@error<>0        goto error    if @exist_trancount = 0        --提交事務        commit tran tran_proc        return 1    error:        --回滾事務或者事務保存點        rollback transaction tran_proc        return -1end

解釋:

1) 首先判斷當前存儲過程實例執行是否是嵌套事務調用。如果是嵌套,則存儲過程判斷的@@TRANCOUNT應該大于0,此時創建一個事務保存點,而非開啟新事務;如果不是嵌套事務,則@@TRANCOUNT應該為0,此時開啟新事務即可

2)然后,是存儲過程本身的業務處理代碼,每一步處理代碼需要判斷@@ERROR,如果<>0,執行error代碼

3)最后,如果處理正確執行,并且非嵌套調用,則提交事務;如果發生錯誤,則回滾事務或者回滾保存點。

當然調用存儲過程的地方,需要判斷存儲過程的返回值來做相應的處理

如有不對的地方,歡迎拍磚;如有其他方法,求分享,謝謝!O(∩_∩)O


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阿拉善盟| 钟祥市| 固阳县| 青田县| 万宁市| 定兴县| 田林县| 苍南县| 噶尔县| 手游| 锦州市| 福清市| 淮北市| 清新县| 钦州市| 宁海县| 博客| 隆昌县| 仁化县| 巨鹿县| 巴塘县| 隆尧县| 张家界市| 南皮县| 顺平县| 廊坊市| 麻阳| 平顺县| 呼图壁县| 安龙县| 华坪县| 柳江县| 梅州市| 吉安市| 青田县| 石首市| 保定市| 乳源| 雅安市| 黄陵县| 黄陵县|