MySQL中存储过程(procedure)的使用及说明
更新时间:2025年11月13日 10:47:40 作者:未来的资深Java架构师
存储过程是预先定义的SQL语句集合,可在数据库中重复调用,它们提供事务性、高效性和安全性,MySQL和Java中均可创建和调用存储过程,示例展示了如何在MySQL中创建和调用存储过程,以及如何在Java中实现存储过程的调用
概念
存储过程:
在数据库中预先定义好一组SQL语句,可以被程序反复调用。
优点:
- 存储过程将一组复杂的SQL语句组成一个原子操作,保证数据一致性。
- 批处理操作,保证操作高效性。
- 通过存储过程可以限制用户对数据库中敏感数据访问。提高系统安全性。
示例1
1、MySQL创建存储过程。
DELIMITER $$
CREATE PROCEDURE GetCustomerDetails(IN haha INT)
BEGIN
SELECT * FROM customer WHERE id = haha;
END $$
DELIMITER ;
2、MySQL调用存储过程。
call GetCustomerDetails(16);
3、Java调用存储过程。
<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
用存储过程来实现往一个表里持续插入数据的操作。
-- 创建存储过程 DELIMITER $$ #重新定义结束符 CREATE PROCEDURE person_procedure ( IN minNum INT, IN maxNum INT ) BEGIN DECLARE i INT DEFAULT minNum; #设置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; #打印一个输出 END $$ DELIMITER; #重新定义结束符 -- MySQL调用存储过程 call person_procedure(1,10);
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
MySQL正则表达式regexp_replace函数的用法实例
regexp_replace的使用非常灵活,且容易忘记,故做此笔记,下面这篇文章主要给大家介绍了关于MySQL正则表达式regexp_replace函数的用法实例,需要的朋友可以参考下2022-09-09
sql语句 update字段null不能用is null问题
这篇文章主要介绍了sql语句 update字段null不能用is null问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-09-09
mysql中replace into与insert into区别
本文主要介绍了mysql中replace into与insert into区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2023-01-01


最新评论