SQL存儲過程分為三類,下面將為您詳細介紹這三類SQL存儲過程,供您參考,如果您對此有興趣的話,不妨一看,相信對您會有所啟迪。
SQL存儲過程:
系統存儲過程:(System stored Procedure)sp_開頭,為SQLSERVER內置存儲過程。
擴展存儲過程:(Extended stored Procedure),也就是外掛程序,用于擴展SQLSERVER的功能,以sp_或者xp_開頭,以DLL的形式單獨存在。
(系統存儲過程和擴展存儲過程都是在master數據庫中。sp_開頭的可是全局的,任何一個數據庫都可以直接調用的。)
系統存儲過程主要分為以下幾類:
目錄存儲過程,例如:
sp_columns 返回當前環境中可查詢的指定表或視圖的列信息。
sp_tables 返回當前環境下可查詢的對象的列表(任何可出現在 FROM 子句中的對象)。
sp_stored_procedures 返回當前環境中的存儲過程列表。
復制類存儲過程,例如:
sp_addarticle 創建項目并將其添加到發布中。此存儲過程在發布服務器的發布數據庫上執行。
安全管理類存儲過程,例如:
sp_addrole 在當前數據庫創建新的 Microsoft® SQL Server™ 角色。
sp_password 添加或更改 Microsoft® SQL Server™ 登錄的密碼。
分布式查詢存儲過程,例如:
sp_foreignkeys 返回引用主鍵的外鍵,這些主鍵在鏈接服務器中的表上。
sp_primarykeys 返回指定遠程表的主鍵列,每個鍵列占一行。
擴展存儲過程:
xp_sendmail 向指定的收件人發送郵件和查詢結果集附件。
xp_startmail 啟動 SQL 郵件客戶端會話。
xp_cmdshell 以操作系統命令行解釋器的方式執行給定的命令字符串,并以文本行方式返回任何輸出。授予非管理用戶執行xp_cmdshell 的權限。
用戶定義的存儲過程:(User-defined stored Procedure),這個就是用戶在具體的數據庫中自己定義的,名字最好不要以sp_和xp_開頭,防止混亂。
注意事項:
1.在存儲過程中,有些建立對象的語句是不可使用的:create default,create trigger,create procedure,create view,create rule.
2.在同一數據庫中,不同的所有者可以建立相同名稱的對象名。例如:a.sample,b.sample,c.sample三個數據表可以同時存在。如果存儲過程中未指明對象的所有者(例如存儲過程中的語句select * from sample,這句中的sample沒有指明所有者),在執行的過程中默認的所有者查找順序是:相應的存儲過程的建立者->相應數據庫的所有者。如果這個查找過程中沒有把所有者確定下來,系統就要報錯。
(這里我額外插一句:如果需要嚴密的數據操作,在任何操作中盡量加上所有者,例如leijun.sample)
3.在存儲過程名稱前邊添加#或者##,所建立的存儲過程則是“臨時存儲過程“(#是局部臨時存儲過程,##是全局臨時存儲過程)。
該文章在 2011/5/4 17:40:47 編輯過