MySQL中存儲(chǔ)過(guò)程(procedure)的使用及說(shuō)明
概念
存儲(chǔ)過(guò)程:
在數(shù)據(jù)庫(kù)中預(yù)先定義好一組SQL語(yǔ)句,可以被程序反復(fù)調(diào)用。
優(yōu)點(diǎn):
- 存儲(chǔ)過(guò)程將一組復(fù)雜的SQL語(yǔ)句組成一個(gè)原子操作,保證數(shù)據(jù)一致性。
- 批處理操作,保證操作高效性。
- 通過(guò)存儲(chǔ)過(guò)程可以限制用戶對(duì)數(shù)據(jù)庫(kù)中敏感數(shù)據(jù)訪問(wèn)。提高系統(tǒng)安全性。
示例1
1、MySQL創(chuàng)建存儲(chǔ)過(guò)程。
DELIMITER $$
CREATE PROCEDURE GetCustomerDetails(IN haha INT)
BEGIN
SELECT * FROM customer WHERE id = haha;
END $$
DELIMITER ;
2、MySQL調(diào)用存儲(chǔ)過(guò)程。
call GetCustomerDetails(16);
3、Java調(diào)用存儲(chǔ)過(guò)程。
<mapper namespace="com.example.MyMapper">
<select id="getCustomerDetails" statementType="CALLABLE">
{call GetCustomerDetails(#{customerId, mode=IN, jdbcType=INTEGER})}
</select>
<update id="updateCustomerDetails" statementType="CALLABLE">
{call UpdateCustomerDetails(
#{customerId, mode=IN, jdbcType=INTEGER},
#{firstName, mode=IN, jdbcType=VARCHAR},
#{lastName, mode=IN, jdbcType=VARCHAR}
)}
</update>
</mapper>
示例2
用存儲(chǔ)過(guò)程來(lái)實(shí)現(xiàn)往一個(gè)表里持續(xù)插入數(shù)據(jù)的操作。
-- 創(chuàng)建存儲(chǔ)過(guò)程 DELIMITER $$ #重新定義結(jié)束符 CREATE PROCEDURE person_procedure ( IN minNum INT, IN maxNum INT ) BEGIN DECLARE i INT DEFAULT minNum; #設(shè)置i初始值為minNum WHILE i <= maxNum DO INSERT INTO person (id,`name`,age,address) VALUES (i,concat( 'cve-', i, '' ),i,concat( '地址-', i, '' )); SET i = i + 1; END WHILE; SELECT CONCAT(i, ' rows inserted.') AS Result; #打印一個(gè)輸出 END $$ DELIMITER; #重新定義結(jié)束符 -- MySQL調(diào)用存儲(chǔ)過(guò)程 call person_procedure(1,10);
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
一篇文章學(xué)會(huì)MySQL基本查詢和運(yùn)算符
在MySQL數(shù)據(jù)庫(kù)操作中,運(yùn)算符扮演著較為重要的角色,連接表達(dá)式中的各個(gè)操作數(shù),其作用是用來(lái)指明對(duì)操作數(shù)所進(jìn)行的運(yùn)算,下面這篇文章主要給大家介紹了關(guān)于MySQL基本查詢和運(yùn)算符的相關(guān)資料,需要的朋友可以參考下2022-08-08
MySQL數(shù)據(jù)庫(kù)統(tǒng)計(jì)函數(shù)COUNT的使用及說(shuō)明
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)統(tǒng)計(jì)函數(shù)COUNT的使用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07
基于Mysql的Sequence實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇基于Mysql的Sequence實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09
新裝MySql后登錄出現(xiàn)root帳號(hào)提示mysql ERROR 1045 (28000): Access denied
這篇文章主要介紹了新裝MySql后登錄出現(xiàn)root帳號(hào)提示mysql ERROR 1045 (28000): Access denied for use的解決辦法,需要的朋友可以參考下2017-01-01

