1、 事務
begin tran開始事務, commit tran提交事務, rollback tran復原事務, save tran儲存事務
前面三個十分熟悉, 最後一個save tran要好好理解與研究
其實save tran 儲存點的名稱, 就是一個書籤標誌, 像很多種操作在一個事務中的時候, 一個事務也分第一步第二步第三步..., 如果第一步沒錯, 第二步出錯, 需要復原, 這樣在第一步與第二步
之間添加一個save tran FirstStep, 通過rollback tran FirstStep來復原到相應的位置。
2、預存程序
預存程序在聲明資料類型時有一件特殊的事情要注意, 聲明Cursor型別參數時,必須也同時使用Varying和Output選項。
OoutPut:向外輸出值時可義output型別參數
Return:預存程序其實都有傳回值,預設時預存程序完成後會返回一個0, 如果想返回一個值, 可以使用return <整數傳回值>
如果你在中途想返回預存程序不讓他執行下面的, 可以直接用return.
3、錯誤處理
SQl裡面也可以使用try catch形式來對錯誤處理. 當然也可以使用@@error來進行檢測錯誤。
4、手工建置錯誤
Raiserror (<訊息>,錯誤層級,狀態)
例如: Raiserror('Error, Please check the proc',1,1)
5、錯誤層級:
1-10: 純粹資訊性錯誤
11-16:如果沒有錯誤處理則會終止執行並在用戶端產生一個錯誤,有錯誤處理塊, 那麼錯誤處理器會被調用
17: 只有sql server使用這個層級,十分嚴重, 例如:tampdb滿了
18-19: 這兩類錯誤是提醒系統管理員的注意
20-25:致命錯誤,使用者串連都會有可以被存壞
注意:後面二類錯誤, with log選項是必需的。
6、添加自己的錯誤訊息
添加錯誤訊息
sp_addmessage [@msgnum=]<訊息id> [@severity=]<錯誤層級> [@msgtext=]<'訊息字串'>[,[@lang=]]<'語言'>][,[@with_log=]<true|false>][,[@replace=]'repalce']
@replace: 如果正在編輯一個現有的訊息,而不是建立一個新的訊息,必須將這個參數設定為'repalce'
刪除錯誤訊息
sp_dropmessage