文章出處

一:存儲過程的定義:

在數據庫服務器上(DB Server)存儲的預先編譯好的一堆SQL語句

是SQL語句和控制語句的預編譯集合,保存在數據庫里,可由應用程序調用執行,而且允許用戶聲明變量、邏輯控制語句及其他強大的編譯功能。它可以接收參數、輸出參數、返回單個或多個結果集及返回值。

為什么需要存儲過程???

   增加數據庫的安全性

 

二:存儲過程的優點:

①:執行速度更快

②:允許模塊化程序設計

③:提高系統安全性

④:減少網絡流通量

 

三:存儲過程的分類:

1.系統存儲過程:

以“sp_”開頭,并存放在Resource數據庫中

常用的系統存儲過程:

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

 

 

 

 

 

 

 

 

 

語法:

exec [UTE] 存儲過程名 [參數值]

注:如果執行存儲過程的語句是批處理中的第一個語句,則可以不指定EXECUTE關鍵字

eg:

sp_databases MySchool

GO

2.常用的擴展存儲過程

語法:

exec xp_cmdshell DOS 命令[no_output]

注:exec表示調用存儲過程,no_output為可選參數,設置執行DOS命令后是否輸出返回信息

3.用戶自定義的存儲過程

創建不帶參數的存儲過程:

① 創建存儲過程

語法:

create  procedure  存儲過程名
  
         [{@參數1 數據類型} [=默認值] [output],

             ........,
 
                {@參數 n 數據類型} [=默認值] [output]

         ]
          as

          SQL語句

② 刪除存儲過程

語法:

drop procedure 存儲過程名

注:參數置于as前,并且變量前不需要加declare關鍵字

    as后的變量需要declare關鍵字

eg:創建一個可以查詢所有學生信息的存儲過程

CREATE  PROCEDURE  
AS
select * from Student

 

創建帶輸入參數的存儲過程:

①:創建帶參數的存儲過程

如果存儲過程的參數后面有"output"關鍵字,則表示此參數為輸出參數;否則視為輸入參數,輸入參數還可以設置為默認值。

②:執行帶參數的存儲過程

語法:

exec [返回變量=] 存儲過程名 [@參數1=]參數值1 [output] |[default],

.......

[@參數1=]參數值n [output] |[default]

eg:

從Result,Student表中查詢成績大于90分的學生的  姓名和成績:

 

 

 

四:帶output參數的存儲過程:

 

五:處理錯誤信息

raiserror語句:

語法:

raiserror ({msg_id | msg_str}{,severity,state} [with option[,....n]])

分析:利用raiserror語句生成用戶定義的錯誤信息并返回到應用程序。

 

六:補充

TruncateDelete 三點區別:

1.   Truncate不能加where,而delete可以

2.   Truncate刪除速度快,不記錄日志。不能恢復數據

      而delete刪除速度慢,記錄日志,可以恢復數據

3.   Truncate 截斷表。ID從1開始編號

      delete 不會從1開始編號

 


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()