【超實(shí)用】SQL Server兩個(gè)常用的系統(tǒng)存儲(chǔ)過(guò)程
在平時(shí)的使用中,但需要看表結(jié)構(gòu)以及存儲(chǔ)過(guò)程的定義語(yǔ)句時(shí),你是不是這樣做的?
看表結(jié)構(gòu)
看存儲(chǔ)過(guò)程內(nèi)容
那么……
你一定需要下面的這種方法。
首先需要了解數(shù)據(jù)庫(kù)中的一種對(duì)象:存儲(chǔ)過(guò)程(Stored Procedure),簡(jiǎn)稱(chēng)SP。
微軟SQL Server幫助文檔中,關(guān)于存儲(chǔ)過(guò)程的定義如下:
SQL Server 中的存儲(chǔ)過(guò)程是由一個(gè)或多個(gè) Transact-SQL 語(yǔ)句或?qū)?Microsoft .NET Framework 公共語(yǔ)言運(yùn)行時(shí) (CLR) 方法的引用構(gòu)成的一個(gè)組。
過(guò)程與其他編程語(yǔ)言中的構(gòu)造相似,這是因?yàn)樗鼈兌伎梢裕?/p>
- 接受輸入?yún)?shù)并以輸出參數(shù)的格式向調(diào)用程序返回多個(gè)值。
- 包含用于在數(shù)據(jù)庫(kù)中執(zhí)行操作的編程語(yǔ)句(這包括調(diào)用其他過(guò)程)。
- 向調(diào)用程序返回狀態(tài)值,以指明成功或失敗(以及失敗的原因)。
簡(jiǎn)單來(lái)說(shuō),存儲(chǔ)過(guò)程就是一組執(zhí)行一定邏輯的SQL語(yǔ)句,執(zhí)行存儲(chǔ)過(guò)程就是執(zhí)行這組語(yǔ)句。
存儲(chǔ)過(guò)程有四種:
- 系統(tǒng)
- 用戶(hù)定義
- 臨時(shí)
- 擴(kuò)展的用戶(hù)定義過(guò)程
下面,我們來(lái)看看怎么通過(guò)系統(tǒng)存儲(chǔ)過(guò)程來(lái)實(shí)現(xiàn)上面的操作。
1.SP_HELP
功能:報(bào)告有關(guān)數(shù)據(jù)庫(kù)對(duì)象(sys.sysobjects 兼容視圖中列出的所有對(duì)象)、用戶(hù)定義數(shù)據(jù)類(lèi)型或某種數(shù)據(jù)類(lèi)型的信息。
使用示例:(其中E_01為數(shù)據(jù)庫(kù)中的表)
通過(guò)這個(gè)系統(tǒng)SP,我們可以很清楚的看到這個(gè)對(duì)象(E_01)的信息,比如所有者,對(duì)象類(lèi)型,創(chuàng)建時(shí)間,列信息(各個(gè)列數(shù)據(jù)類(lèi)型,長(zhǎng)度,精度,排序規(guī)則等),是否有自增列,主鍵以及索引約束等信息。
2.SP_HELPTEXT
功能:顯示用戶(hù)定義規(guī)則的定義、默認(rèn)值、未加密的 Transact-SQL 存儲(chǔ)過(guò)程、用戶(hù)定義 Transact-SQL 函數(shù)、觸發(fā)器、計(jì)算列、CHECK 約束、視圖或系統(tǒng)對(duì)象(如系統(tǒng)存儲(chǔ)過(guò)程)。
使用示例:(其中SPC_01為數(shù)據(jù)庫(kù)中的用戶(hù)定義存儲(chǔ)過(guò)程)
通過(guò)這個(gè)系統(tǒng)SP,我們可以查看對(duì)應(yīng)存儲(chǔ)過(guò)程(函數(shù)、觸發(fā)器、計(jì)算列、約束、視圖等系統(tǒng)對(duì)象)對(duì)應(yīng)的定義語(yǔ)句。(注意,前提是未加密)
好了,是不是很簡(jiǎn)單?