存儲(chǔ)過(guò)程概述
??????單個(gè)存儲(chǔ)過(guò)程包含了增添數(shù)據(jù)、修改數(shù)據(jù)、執(zhí)行計(jì)算、返回?cái)?shù)據(jù)等多行命令語(yǔ)句。通過(guò)存儲(chǔ)過(guò)程我們可以使得對(duì)數(shù)據(jù)庫(kù)的管理、顯示關(guān)于數(shù)據(jù)庫(kù)及其用戶信息的工作變得容易
??????存儲(chǔ)過(guò)程是SQL語(yǔ)句和可選控制語(yǔ)句的預(yù)編譯集合。
存儲(chǔ)過(guò)程的優(yōu)點(diǎn)
??1)允許模塊化程序設(shè)計(jì):在程序設(shè)計(jì)中只要?jiǎng)?chuàng)建一次并將其存儲(chǔ)在數(shù)據(jù)庫(kù)中,以后即可在程序中多次調(diào)用該過(guò)程。
??2)允許更快執(zhí)行:在一個(gè)程序中如果存在大量的重復(fù)代碼,就可以使用存儲(chǔ)過(guò)程來(lái)代替;存儲(chǔ)過(guò)程在調(diào)用以后將在內(nèi)存中,下次調(diào)用該過(guò)程就變得很快,就無(wú)須在次從客戶端發(fā)送,這樣就進(jìn)行了編譯和優(yōu)化。
? 3)減少了網(wǎng)絡(luò)流量:存儲(chǔ)過(guò)程將代替大量的重復(fù)代碼。
? 4)可作用于安全機(jī)制:即使在沒(méi)有直接執(zhí)行的存儲(chǔ)過(guò)程中的語(yǔ)句的權(quán)限用戶,也可授予我們執(zhí)行該存儲(chǔ)過(guò)程的權(quán)限。
創(chuàng)建存儲(chǔ)過(guò)程
語(yǔ)法:create procedure? 存儲(chǔ)過(guò)程名 參數(shù)表
??????????? as
???????????? begin
???????????????????? 存儲(chǔ)過(guò)程主體
??????????????end;
使用存儲(chǔ)過(guò)程
?????????call? insertstudent(400,'忽忽');
??????????call? deleterow(2)???? 刪除一行
修改和刪除存儲(chǔ)過(guò)程
???drop? procedure? procname;(刪除)
???alter? procedure? procname;(修改)
??????單個(gè)存儲(chǔ)過(guò)程包含了增添數(shù)據(jù)、修改數(shù)據(jù)、執(zhí)行計(jì)算、返回?cái)?shù)據(jù)等多行命令語(yǔ)句。通過(guò)存儲(chǔ)過(guò)程我們可以使得對(duì)數(shù)據(jù)庫(kù)的管理、顯示關(guān)于數(shù)據(jù)庫(kù)及其用戶信息的工作變得容易
??????存儲(chǔ)過(guò)程是SQL語(yǔ)句和可選控制語(yǔ)句的預(yù)編譯集合。
存儲(chǔ)過(guò)程的優(yōu)點(diǎn)
??1)允許模塊化程序設(shè)計(jì):在程序設(shè)計(jì)中只要?jiǎng)?chuàng)建一次并將其存儲(chǔ)在數(shù)據(jù)庫(kù)中,以后即可在程序中多次調(diào)用該過(guò)程。
??2)允許更快執(zhí)行:在一個(gè)程序中如果存在大量的重復(fù)代碼,就可以使用存儲(chǔ)過(guò)程來(lái)代替;存儲(chǔ)過(guò)程在調(diào)用以后將在內(nèi)存中,下次調(diào)用該過(guò)程就變得很快,就無(wú)須在次從客戶端發(fā)送,這樣就進(jìn)行了編譯和優(yōu)化。
? 3)減少了網(wǎng)絡(luò)流量:存儲(chǔ)過(guò)程將代替大量的重復(fù)代碼。
? 4)可作用于安全機(jī)制:即使在沒(méi)有直接執(zhí)行的存儲(chǔ)過(guò)程中的語(yǔ)句的權(quán)限用戶,也可授予我們執(zhí)行該存儲(chǔ)過(guò)程的權(quán)限。
創(chuàng)建存儲(chǔ)過(guò)程
語(yǔ)法:create procedure? 存儲(chǔ)過(guò)程名 參數(shù)表
??????????? as
???????????? begin
???????????????????? 存儲(chǔ)過(guò)程主體
??????????????end;
使用存儲(chǔ)過(guò)程
?????????call? insertstudent(400,'忽忽');
??????????call? deleterow(2)???? 刪除一行
修改和刪除存儲(chǔ)過(guò)程
???drop? procedure? procname;(刪除)
???alter? procedure? procname;(修改)