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