日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

4存储过程

發(fā)布時間:2024/4/17 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 4存储过程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

4.1存儲過程

存儲過程概念

是一門結(jié)構(gòu)的語言,用函數(shù)可以提高代碼的重用性(反復(fù)使用),方便模塊化設(shè)計,提高執(zhí)行

效率。
?4.1.1什么是存儲過程
??????? 是SQL查詢語句與控制流程語句的預(yù)編譯集合,并以特定的名稱保存在數(shù)據(jù)庫中。數(shù)據(jù)庫也

是數(shù)據(jù)庫對象。
?? 存儲過程分為系統(tǒng)存儲過程和用戶自定義存儲過程
???????? (1)系統(tǒng)存儲過程:
????????????? 1.它是一組預(yù)編譯的T-SQL語句,系統(tǒng)存儲過程提供了管理數(shù)據(jù)庫和更新數(shù)據(jù)表的機(jī)

制。主要用途是充當(dāng)管理和檢索系統(tǒng)信息的快捷方式。
????????????? 2.由系統(tǒng)定義,存放在master數(shù)據(jù)庫中
????????????? 3.類似C語言中的系統(tǒng)函數(shù)
????????????? 4.系統(tǒng)存儲過程的名稱都以“sp_”開頭或”xp_”開頭
????????? 注釋:xp_開頭的存儲過程是擴(kuò)展的存儲過程。
???????? (2)用戶自定義存儲過程:
?????????????? 1.是開發(fā)人員自行定義的存儲過程,所實現(xiàn)的功能完全由開發(fā)人員自行設(shè)計與編寫


?????????????? 2.由用戶在自己的數(shù)據(jù)庫中創(chuàng)建的存儲過程
?????????????? 3.類似C語言中的用戶自定義函數(shù)

4.1.2存儲過程的優(yōu)點
???????? 1.執(zhí)行速度快,效率高(編譯執(zhí)行)。
???????? 2.模塊式編程(多次被調(diào)用,提高程序的可移植性)。
???????? 3.減少網(wǎng)絡(luò)流量(只需要使用一個存儲過程名及參數(shù),提高運行速度)。
???????? 4.提高安全性(對不同權(quán)限的用戶使用不同的存儲過程)。
常用的系統(tǒng)存儲過程

系統(tǒng)存儲過程說明語法
sp_columns 查看指定列表的信息execute sp_columns '表格'
sp_databases列出服務(wù)器上的所有數(shù)據(jù)庫?
sp_help查看某個表的所有信息?
sp_helpconstraint查看某個表的約束?
sp_helpdb 列出指定數(shù)據(jù)庫或所有數(shù)據(jù)庫信息?
sp_helptext 顯示默認(rèn)值、未加密的存儲過程、用戶定義的存儲過程、觸發(fā)
器或視圖的實際文本
?
sp_helpindex查看某個表的索引?
sp_renamedb更改數(shù)據(jù)庫的名稱?
sp_stored_procedures列出當(dāng)前環(huán)境中可用的所有存儲過程?
?

?


??????????????????????
?????????????????????
???????????????????
????????????????????
?????????????????????
????????????????
?????????????????????
?????????????
????????????????????
????????????

????? 4.1.3常用的系統(tǒng)存儲過程
????????? 常用的擴(kuò)展存儲過程:xp_cmdshell
?????????? (1).可以執(zhí)行DOS命令下的一些的操作
?????????? (2).以文本行方式返回任何輸出
?????????? (3). 調(diào)用語法:
?????????? (4).EXEC xp_cmdshell DOS命令 [NO_OUTPUT]
????????? 注釋:no_output表示是否輸出存儲過程返回的信息。
4.1.4如何創(chuàng)建存儲過程
????????? 定義存儲過程的語法
????????? (1).和C語言的函數(shù)一樣,參數(shù)可選
????????? (2).參數(shù)分為輸入?yún)?shù)、輸出參數(shù)(默認(rèn)為輸入?yún)?shù),output為輸出參數(shù))
????????? (3).輸入?yún)?shù)允許有默認(rèn)值
???????????? **如何創(chuàng)建如下
????????? CREATE? PROC[EDURE]? 存儲過程名
???????????? @參數(shù)1? 數(shù)據(jù)類型[= 默認(rèn)值 OUTPUT]
????????????? …… ,
???????????? @參數(shù)n? 數(shù)據(jù)類型[= 默認(rèn)值 OUTPUT]
????????? AS
??????????? SQL語句........
????????? GO
(4)調(diào)用存儲過程
????????? (1).EXECUTE(執(zhí)行)語句用來調(diào)用存儲過程。
????????? (2).調(diào)用的語法如下:
???????????? EXECUTE? 過程名? [參數(shù)] ?
(5)不帶參的存儲過程 ?
????????? 語法:CREATE? PROC[EDURE]? 存儲過程名
??????????????? ***沒有參數(shù)
?????????????? AS
??????????????? SQL語句........
?????????????? GO
(6)帶參數(shù)的存儲過程
????????? 存儲過程的參數(shù)分兩種:
????????? ①.輸入?yún)?shù)
??????????? 用于向存儲過程傳入值,類似C語言的按值傳遞;
???????????? 語法: CREATE? PROC[EDURE]? 存儲過程名
??????????????????? @pcuse int
?????????????????? AS
??????????????????? SQL語句........
?????????????????? GO???????? ?
????????? ②.輸出參數(shù)
??????????? 用于在調(diào)用存儲過程后返回結(jié)果,類似C語言的按引用傳遞;
????????????? 語法:CREATE? PROC[EDURE]? 存儲過程名
?????????????????????? @pcuse int output
??????????????????? AS
???????????????????? SQL語句........
??????????????????? GO

4.1.5return的使用
????????? return關(guān)鍵字可以終止存儲過程或者返回數(shù)值
1.處理存儲過程中的錯誤
????????? (1).可以使用PRINT語句顯示錯誤信息,但這些信息是臨時的,只能顯示給用戶。
????????? (2).RAISERROR 顯示用戶定義的錯誤信息時可指定嚴(yán)重級別,設(shè)置系統(tǒng)變量@@ERROR記錄

所發(fā)生的錯誤等
4.1.6RAISERROR語句的用法如下:
????????? (1).msg_id:在sysmessages系統(tǒng)表中指定用戶定義錯誤信息
????????? (2).msg_str:用戶定義的特定信息,最長255個字符
????????? (3).severity:定義嚴(yán)重性級別。用戶可使用的級別為0–18級
????????? (4).state:表示錯誤的狀態(tài),1至127之間的值
????????? (5).option:指示是否將錯誤記錄到服務(wù)器錯誤日志中
????????? 語法:RAISERROR (msg_id | msg_str,severity,state WITH option[,...n]])
??????????????? RAISERROR(自定義的錯誤信息,錯誤的嚴(yán)重級別,錯誤的狀態(tài))
4.1.7T-SQL中輸出錯誤信息的方法和print輸出有什么區(qū)別?
????????? (1).用PRINT語句顯示錯誤信息,但這 些信息是臨時的,只能顯示給用戶;
????????? (2).RAISERROR 顯示用戶定義的錯誤信息時可指定嚴(yán)重級別設(shè)置系統(tǒng)變量@@ERROR,記錄

所發(fā)生的錯誤等

如何刪除一個存儲過程?
????????? drop 存儲過程名 刪除存儲過程

轉(zhuǎn)載于:https://www.cnblogs.com/chef5-3/archive/2013/06/13/3133515.html

總結(jié)

以上是生活随笔為你收集整理的4存储过程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。