一、存儲過程返回數據集的方式:sql
經過數據庫查詢返回數據集;數據庫
經過局部變量返回;服務器
二、設置output參數的值spa
輸出參數常常用來從存儲過程當中檢索出結果,若是某個參數在傳輸到存儲過程當中時被定義成output,則對該參數的任何修改在退出存儲以後任然有效。class
遊標可使用output(輸出)參數,但不能使用成輸入參數。也就是說,遊標能夠做爲結果返回,但卻不能傳輸到過程當中去。當遊標被用做參數時,須要限定其爲output和varying。varying關鍵字指出該結果集要用來支持輸出參數。這樣就提供了將結果集返回到調用過程的能力。 變量
三、經過return參數返回狀態 sql語句
這是一種從存儲過程返回錯誤碼的方法。存儲過程老是返回一個狀態值,用戶也可使用return語句返回本身的狀態。 語法
四、在存儲過程當中進行錯誤處理
如同其它程序同樣,在存儲過程當中進行錯誤處理是很是重要的。系統變動@@error在執行每個transact sql語句以後都會獲得一個值。對於成功的執行,@@error的值爲0,若是出現錯誤,則 @@error中將包含錯誤信息。@@error系統變量對存儲過程的錯誤處理是很是重要的。
注意:爲了防止錯誤,@@error所能設置的值在sysmessages表的「error」中反映了出來。 程序
在存儲過程當中的錯誤有兩種類型:
一、數據庫相關的錯誤
這些錯誤是由數據庫的不一致性引發的,系統使用非0的@@error值表示特定的數據庫問題。在transact sql執行以後,能夠經過@@error得到所出現的錯誤。若是發現@@error不爲0,則必須採起必要的行動,大多數狀況下,存儲將再也不繼續進行處理而返回。下面的示例展現了典型的獲取數據庫錯誤的方法。該過程將錯誤代碼放置到輸出變量中,這樣,調用程序就可以訪問到。 方法
二、業務邏輯錯誤 這些錯誤是因爲違反了業務規則而引發的。要獲取這些錯誤,首先須要定義業務規則,基於這些規則,須要在存儲過程當中增長必要的錯誤檢測代碼。人們常常使用raiserror語句通報這些錯誤。raiserror提供了返回用戶定義錯誤及將@@error變量設置成用戶定義錯誤號的能力。錯誤消息能夠被動態地創建,或者基於錯誤號從「sysmessages」表中檢索到。一旦出現了錯誤,錯誤就會以一種服務器錯誤消息的方式返回到客戶機。下面是raiserror命令的語法: