SQL存儲過程及事務

存儲過程

 存儲過程(procedure) 類似C語言中的函數,用來執行管理任務或應用複雜的業務規則。

存儲過程的優點

  1.執行速度更快 
  2.允許模塊化程序設計
  3.提高系統安全
  4.減少網絡流通量

存儲過程的分類

  1.系統存儲過程:由系統定義,存放在master數據庫中,以"sp_" 或 "xp_"開頭
  2.用戶自定義存儲過程:由用戶在自己的數據庫中創建的存儲過程。

常用的系統存儲過程

  sp_databases:列出服務器上的所有數據庫。
  sp_helpdb:報告有關指定數據庫或所有數據庫的信息。
  sp_renamedb;更改數據庫的名稱。
  sp_tables:返回當前環境下可查詢的對象的列表。
  sp_columns:返回某個表的列的信息。
  sp_help:查看某個表的所有信息。
  sp_helpconstraint:查看某個表的約束。
  sp_helpindex:查看某個表的索引。
  sp_stored_procedures:列出當前環境中的所有存儲過程。
  sp_password:添加或修改登錄賬戶的密碼。
  sp_helptext:顯示默認值,未加密的存儲過程,用戶定義的存儲過程,觸發器或視圖的實際爲本。 

定義存儲過程的語法

    create prco[edure] 存儲過程名稱
       @參數1  數據類型=默認值 output,    //output指示參數爲輸出參數
       ....,  
       @參數n 數據類型=默認值 output
    as
      SQL語句
      go

存儲過程的調用

    exec 存儲過程的名稱 @參數名 output,@參數名=值,......

或者

     exec  存儲過程名稱 

或者

      exec  存儲過程名稱 值1,值2,.....,值n

刪除存儲過程

 drop 存儲過程名稱

處理存儲過程中的錯誤

raiserror (msgid|msg_str,severity,state with option[1,...,n])
 msgid:在sysmessages系統表中指定用戶定義錯誤信息。
 msg_str:用戶定義的特定信息,最長255個字符。
 severity:定義嚴重性級別。用戶可使用級別爲0-18級。
 state:表示錯誤狀態。1-127
 option:指示是否將錯誤記錄到服務器錯誤日誌中。

例:

create prco prco_stu
    @notpassSum int output, --輸出參數
    @writtenPass int=60,
    @labPass int=60
as
    if (not @writtenPass between 0 and 100) or (not @labPass between 0 and 100)
    begin
       raiserror('及格線錯誤,請指定0-100之間的分數,統計中斷退出',16,1)
       return  --立即返回,退出存儲過程
    end

SQL中聲明一個參數

declare 參數名 數據類型
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章