数据库-存储过程-游标-函数
一、存儲(chǔ)過(guò)程
?? SQL99標(biāo)準(zhǔn)提出的SQL-invoked-rountines的概念,它開(kāi)分為存儲(chǔ)過(guò)程與函數(shù),這里首先介紹存儲(chǔ)過(guò)程
?? 存儲(chǔ)過(guò)程分為三類(lèi):系統(tǒng)存儲(chǔ)過(guò)程(如:sp_help)、自定義存儲(chǔ)過(guò)程、擴(kuò)展存儲(chǔ)過(guò)程
?? 存儲(chǔ)過(guò)程可以理解為一個(gè)SQL語(yǔ)句塊,完成一些復(fù)雜的功能,當(dāng)然可以包含應(yīng)用程序的業(yè)務(wù),比如:分頁(yè),生成訂單號(hào)等,存儲(chǔ)過(guò)程可以接收應(yīng)用程序傳遞的參數(shù),并將查詢(xún)的結(jié)果返回給應(yīng)用程序
? 1、存儲(chǔ)過(guò)程的優(yōu)點(diǎn):
??? 1)、運(yùn)行效率高,因?yàn)榇鎯?chǔ)過(guò)程不會(huì)在每一次調(diào)用時(shí)都解釋執(zhí)行,隨便說(shuō)一句,SQL執(zhí)行后的執(zhí)行計(jì)劃會(huì)放在緩存中,這樣下一次相同的SQL執(zhí)行就不用再次優(yōu)化了,從而加快速度
??? 2)、存儲(chǔ)過(guò)程降低了客戶機(jī)與服務(wù)器的通信量,使用存儲(chǔ)過(guò)程,就不用在應(yīng)程序中拼SQL傳回服務(wù)器,只須要存儲(chǔ)過(guò)程名與參數(shù)就可以了
??? 3)、方便實(shí)施企業(yè)規(guī)則,可以在存儲(chǔ)過(guò)程里加入業(yè)務(wù)邏輯
? 2、存儲(chǔ)過(guò)程的使用(重復(fù)使用)
??? 創(chuàng)建:
二、游標(biāo)
??? 游標(biāo)可以理解為一個(gè)"指針",其指向的是一條記錄,當(dāng)用select語(yǔ)句得到一個(gè)結(jié)果集時(shí),我們可以將它放到一個(gè)游標(biāo)中,然后通過(guò)移動(dòng)游標(biāo)來(lái)讀取每一條數(shù)據(jù),并進(jìn)行處理,感覺(jué)有點(diǎn)"遍歷"數(shù)據(jù)
游標(biāo)的使用:
1、?定義游標(biāo):declare cursor_name cursor
?????????????????? For select 語(yǔ)句;
2、?打開(kāi)游標(biāo):open cursor_name
3、?循環(huán)訪問(wèn)游標(biāo)中的每一行數(shù)據(jù):
Fetch next from cursor_name into @參數(shù)列表
4、?游標(biāo)的狀態(tài):@@fetch_status,用于判斷游標(biāo)fetch的狀態(tài),當(dāng)為0時(shí)正常,不為一時(shí)異常
5、關(guān)閉并釋放資源
例:
三、函數(shù)
函數(shù)相信大家都很清楚了,傳遞參數(shù),然后返回一個(gè)結(jié)果,SQL中的函數(shù)也大致差不多,返回時(shí)使用ruturn,可以是int、varchar,table等類(lèi)型,有了函數(shù)就可以把一些功能在一起,比如對(duì)數(shù)據(jù)的處理等
函數(shù)的創(chuàng)建(例子說(shuō)明):
??最后要說(shuō)明的是,小弟初學(xué),哪里有不對(duì)的請(qǐng)指出,感激不盡!!!
?
轉(zhuǎn)載于:https://www.cnblogs.com/xin_ny/archive/2011/09/25/sql_proc_function.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的数据库-存储过程-游标-函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 图片有花
- 下一篇: 世界名著100部简介