使用存儲(chǔ)過(guò)程
來(lái)源:懂視網(wǎng)
責(zé)編:小采
時(shí)間:2020-11-09 14:58:21
使用存儲(chǔ)過(guò)程
使用存儲(chǔ)過(guò)程:什么是存儲(chǔ)過(guò)程 存儲(chǔ)過(guò)程簡(jiǎn)單來(lái)說(shuō),就是為以后的使用而保存的一條或多條MySQL語(yǔ)句的集合。可將其視為批文件,雖然他們的作用不僅限于批處理。像定義了一個(gè)函數(shù),可以傳入傳出參數(shù),函數(shù)內(nèi)部進(jìn)行一定的計(jì)算。(本文是針對(duì)MySQL進(jìn)行學(xué)習(xí)和試驗(yàn)的) 為什么要使
導(dǎo)讀使用存儲(chǔ)過(guò)程:什么是存儲(chǔ)過(guò)程 存儲(chǔ)過(guò)程簡(jiǎn)單來(lái)說(shuō),就是為以后的使用而保存的一條或多條MySQL語(yǔ)句的集合。可將其視為批文件,雖然他們的作用不僅限于批處理。像定義了一個(gè)函數(shù),可以傳入傳出參數(shù),函數(shù)內(nèi)部進(jìn)行一定的計(jì)算。(本文是針對(duì)MySQL進(jìn)行學(xué)習(xí)和試驗(yàn)的) 為什么要使
什么是存儲(chǔ)過(guò)程 存儲(chǔ)過(guò)程簡(jiǎn)單來(lái)說(shuō),就是為以后的使用而保存的一條或多條MySQL語(yǔ)句的集合。可將其視為批文件,雖然他們的作用不僅限于批處理。像定義了一個(gè)函數(shù),可以傳入傳出參數(shù),函數(shù)內(nèi)部進(jìn)行一定的計(jì)算。(本文是針對(duì)MySQL進(jìn)行學(xué)習(xí)和試驗(yàn)的) 為什么要使
什么是存儲(chǔ)過(guò)程
存儲(chǔ)過(guò)程簡(jiǎn)單來(lái)說(shuō),就是為以后的使用而保存的一條或多條MySQL語(yǔ)句的集合。可將其視為批文件,雖然他們的作用不僅限于批處理。像定義了一個(gè)函數(shù),可以傳入傳出參數(shù),函數(shù)內(nèi)部進(jìn)行一定的計(jì)算。(本文是針對(duì)MySQL進(jìn)行學(xué)習(xí)和試驗(yàn)的)
為什么要使用存儲(chǔ)過(guò)程
1. 通過(guò)把處理封裝在容易使用的單元中,簡(jiǎn)化復(fù)雜的操作 2. 由于不要求反復(fù)建立一系列處理步驟,這保證了數(shù)據(jù)的完整性。 3. 簡(jiǎn)化對(duì)變動(dòng)的管理。
創(chuàng)建存儲(chǔ)過(guò)程
創(chuàng)建一個(gè)非常簡(jiǎn)單的存儲(chǔ)過(guò)程,返回產(chǎn)品平均價(jià)格的存儲(chǔ)過(guò)程:
CREATE PROCEDURE productpricing() BEGIN SELECT Avg(prod_price) AS priceaverage FROM products; END//
調(diào)用存儲(chǔ)過(guò)程比較簡(jiǎn)單:
刪除存儲(chǔ)過(guò)程: DROP PROCEDURE productpricing;
使用參數(shù)
例1
以下是productpricing的修改版本 CREATE PROCEDURE productpricing( OUT pl DECIMAL(8,2), OUT ph DECIMAL(8,2), OUT pa DECIMAL(8,2) ) BEGIN SELECT Min(prod_price) INTO pl FROM products; SELECT Max(prod_price) INTO ph FROM products; SELECT Avg(prod_price) INTO pa FROM products; END//
調(diào)用存儲(chǔ)過(guò)程 CALL productpricing(@pricelow, @pricehigh, @priceaverage)//
顯示調(diào)用結(jié)果:
例2
下面這個(gè)例子比較有實(shí)際意義,創(chuàng)建一個(gè)存儲(chǔ)過(guò)程,傳入訂單號(hào),返回該訂單總金額:
CREATE PROCEDURE ordertotal( IN onumber INT, OUT ototal DECIMAL(8,2) ) BEGIN SELECT Sum(item_price*quantity) FROM orderitems WHERE order_num = onumber INTO ototal; END //
調(diào)用存儲(chǔ)過(guò)程:
CALL ordertotal(20005, @total) //
顯示結(jié)果;
建立智能存儲(chǔ)過(guò)程
考慮建立如下存儲(chǔ)過(guò)程,計(jì)算訂單合計(jì),不過(guò)對(duì)該訂單要加增值稅,但是又不是針對(duì)所有顧客都要加增值稅。因此有如下工作: 1. 獲得合計(jì) 2. 把增值稅有條件的添加到合計(jì) 3. 返回合計(jì)
存儲(chǔ)過(guò)程的完整工作如下:
調(diào)用該存儲(chǔ)過(guò)程時(shí)需要輸入訂單編號(hào),是否收稅,最后的結(jié)果存在哪里:
使用SHOW PROCEDURE STATUS可以查看存儲(chǔ)過(guò)程狀態(tài):
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com
使用存儲(chǔ)過(guò)程
使用存儲(chǔ)過(guò)程:什么是存儲(chǔ)過(guò)程 存儲(chǔ)過(guò)程簡(jiǎn)單來(lái)說(shuō),就是為以后的使用而保存的一條或多條MySQL語(yǔ)句的集合。可將其視為批文件,雖然他們的作用不僅限于批處理。像定義了一個(gè)函數(shù),可以傳入傳出參數(shù),函數(shù)內(nèi)部進(jìn)行一定的計(jì)算。(本文是針對(duì)MySQL進(jìn)行學(xué)習(xí)和試驗(yàn)的) 為什么要使