好多人都说存储过程很难?认真看这篇文章就够了
何為存儲(chǔ)過(guò)程?
存儲(chǔ)過(guò)程是在數(shù)據(jù)庫(kù)管理系統(tǒng)中保存的、預(yù)先編譯的并能實(shí)現(xiàn)某種功能的sql程序,說(shuō)直白點(diǎn),java知道吧?和java的方法一樣。
每遇到一個(gè)新的知識(shí)點(diǎn)時(shí),我們都會(huì)看看它的優(yōu)點(diǎn),從而加深對(duì)它學(xué)習(xí)的欲望,存儲(chǔ)過(guò)程也不例外,那么存儲(chǔ)過(guò)程有什么優(yōu)點(diǎn)?
執(zhí)行速度更快
允許模塊化程序設(shè)計(jì)?
提高系統(tǒng)安全性
減少網(wǎng)絡(luò)流通量
看完優(yōu)點(diǎn)之后,我們?cè)賮?lái)看看存儲(chǔ)過(guò)程的分類有哪些,然后我們按照分類一個(gè)一個(gè)的寫(演示)。
系統(tǒng)存儲(chǔ)過(guò)程
????系統(tǒng)存儲(chǔ)過(guò)程的名稱一般以“sp_”開頭
????由SQLServer創(chuàng)建、管理和使用
????存放在Resource數(shù)據(jù)庫(kù)中
????類似C#語(yǔ)言類庫(kù)中的方法
擴(kuò)展存儲(chǔ)過(guò)程
????擴(kuò)展存儲(chǔ)過(guò)程的名稱通常以“xp_”開頭
????使用編輯語(yǔ)言(如C#)創(chuàng)建的外部存儲(chǔ)過(guò)程
????以DLL形式單獨(dú)存在
用戶自定義存儲(chǔ)過(guò)程
????由用戶在自己的數(shù)據(jù)庫(kù)中創(chuàng)建的存儲(chǔ)過(guò)程
????類似C#語(yǔ)言中用戶自定義的方法
系統(tǒng)存儲(chǔ)過(guò)程
(上面已經(jīng)解釋過(guò)了,現(xiàn)在直接動(dòng)手操作)
下面我們演示一下常用的系統(tǒng)存儲(chǔ)過(guò)程:
1.列出所有的數(shù)據(jù)庫(kù)
exec?sp_databases2.修改數(shù)據(jù)庫(kù)的名稱:
exec?sp_renamedb 'jobs','job'3.當(dāng)前數(shù)據(jù)庫(kù)的所有表(包括視圖、表)
exec?sp_tables4.返回student表的列的信息
exec?sp_columns student5.查看表student的信息
exec?sp_help student6.查看表的約束(默認(rèn)約束,唯一約束)
exec?sp_helpconstraint student7.查看當(dāng)前數(shù)據(jù)庫(kù)中的存儲(chǔ)過(guò)程
exec?sp_stored_procedures擴(kuò)展存儲(chǔ)過(guò)程
(主要就演示一個(gè)xp_cmdshell)
xp_cmdshell:
可以執(zhí)行dos命令下的而一些操作
?以文本方式返回任何輸出
下面演示一下該擴(kuò)展存儲(chǔ)過(guò)程,查看某個(gè)文件夾:(D://DB)
/*若xp_cmdshell座位服務(wù)器安全配置的一部分而被關(guān)閉,需要先啟用*/ exec sp_configure 'show advanced options',1???--顯示高級(jí)配置信息 go? exec sp_configure 'xp_cmdshell',1????--打開xp_shell選項(xiàng) go? reconfigure --重新配置 go? --查看某個(gè)文件夾:(D://DB) exec xp_cmdshell 'dir D:\DB\'自定義存儲(chǔ)過(guò)程
已知有兩表,Student學(xué)生表和Grade年級(jí)表,表中數(shù)據(jù)如下:(仔細(xì)看,這是鋪墊)
Student表
Grade表
1.無(wú)參的存儲(chǔ)過(guò)程(查詢青鳥一班的所有學(xué)生姓名);
創(chuàng)建存儲(chǔ)過(guò)程:
調(diào)用存儲(chǔ)過(guò)程:
運(yùn)行結(jié)果:
2.帶參數(shù)的存儲(chǔ)過(guò)程(根據(jù)輸入的年級(jí)名稱查詢?cè)撃昙?jí)所有的學(xué)生信息)
創(chuàng)建存儲(chǔ)過(guò)程:
調(diào)用存儲(chǔ)過(guò)程:
運(yùn)行結(jié)果:
3.帶輸出參數(shù)的存儲(chǔ)過(guò)程(根據(jù)學(xué)生姓名返回年級(jí)名稱)
go create?proc job_GetGName @sname varchar(50), --輸入學(xué)生姓名 @gname varchar(50) output????--輸出年級(jí)名稱 as select?@gname = gname from?grade where?gid = (select?sgid from??student where?sname = @sname) go調(diào)用存儲(chǔ)過(guò)程:
declare?@gname varchar(50) --聲明一個(gè)變了接收年級(jí)名稱 exec job_GetGName '李太白', @gname output? print '所在年級(jí)是:'+@gname運(yùn)行結(jié)果:
JavaScript實(shí)現(xiàn)四則運(yùn)算
2020-06-12
sql server高級(jí)查詢,看這篇文章就夠了
2020-06-09
Linux基礎(chǔ)知識(shí)之【簡(jiǎn)介與安裝】
2020-06-08
老師,我沒(méi)有學(xué)過(guò)事務(wù)……同學(xué)你過(guò)來(lái),你看老師手里拿的是什么?
2020-06-11
總結(jié)
以上是生活随笔為你收集整理的好多人都说存储过程很难?认真看这篇文章就够了的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 笔记本电脑多大配置合适?
- 下一篇: 你知道i=i++;的含义吗?原理其实没有