您好,登錄后才能下訂單哦!
這篇文章主要介紹了如何創建CLR對象,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
一 創建CLR對象
1.在解決方案中添加新的C#SQL數據庫項目,命名為“ServiceClient”
2.為你的目標數據庫選擇或添加注釋。(如果未被提示:右擊ServiceClient項目,選擇屬性,數據庫,瀏覽并選擇你的連接)
3.為創建的服務添加聲明
1)在解決方案瀏覽器中右擊“service”項目,選擇“調試”>“Start New Instance”
2)服務運行:右擊“ServiceClient”項目,選擇“Add Service Reference”
3)在“Service URI”中輸入:http://localhost:8000/services
4)點擊“OK”
二 CLR觸發器案例
[Microsoft.SqlServer.Server.SqlTrigger(Name="Trigger1",Target="ERP_STOCKYaoHuoDingDan",Event="FORINSERT")] publicstaticvoidDingDanIDSameGongYingShangGUIDMustSame() { using(SqlConnectionconnection=newSqlConnection(@"contextconnection=true")) { connection.Open(); SqlCommandcommand=newSqlCommand(@"SELECTCOUNT(A.DingDanID)FROMERP_STOCKYaoHuoDingDanASA,INSERTEDASBWHEREA.DingDanID=B.DingDanIDANDA.GongYingShangGUID<>B.GongYingShangGUID",connection); inti=(int)command.ExecuteScalar(); if(i>0) { try { //如果要插入的記錄不合法,則回滾. TransactionTransactiontrans=Transaction.Current; trans.Rollback(); } catch(SqlExceptionex) {
當在觸發器內部調用Transaction.Rollback方法時,將引發異常并顯示不明確的錯誤消息,必須在try/catch塊中包裝此方法或命令。您會看到如下錯誤消息:
Msg6549,Level16,State1,Proceduretrig_InsertValidator,Line0A.NETFrameworkerroroccurredduringexecutionofuserdefinedroutineoraggregate 'trig_InsertValidator':System.Data.SqlClient.SqlException:Transactionisnotallowedtorollbackinsideauserdefinedroutine, triggeroraggregatebecausethetransactionisnotstartedinthatCLRlevel.Changeapplicationlogictoenforcestricttransactionnesting…Usertransaction,ifany,willberolledback. 此異常是預期行為,需要try/catch塊才能繼續執行代碼。當完成執行觸發器代碼時,將引發另一個異常。 Msg3991,Level16,State1,Proceduretrig_InsertValidator,Line1Thecontexttransactionwhichwasactivebeforeenteringuserdefinedroutine, triggeroraggregate"trig_InsertValidator"hasbeenendedinsideofit,whichisnotallowed.Changeapplicationlogictoenforcestricttransactionnesting. Thestatementhasbeenterminated.此異常也是預期行為。 } } connection.Close(); } }
調用CLR觸發器的例子
盡管引發了兩個異常,仍可以回滾事務,并且更改不會提交到表中。
try { //用到此觸發器的方法 } catch(SqlExceptionex) { if(ex.Number==3991) { LabelInfor.Text="同一張訂單必須是同一家供應商。"; } } catch(Exceptionex) { }
感謝你能夠認真閱讀完這篇文章,希望小編分享的“如何創建CLR對象”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。