当前位置: 代码网 > it编程>数据库>Mysql > MySQL中存储过程(procedure)的使用及说明

MySQL中存储过程(procedure)的使用及说明

2025年11月13日 Mysql 我要评论
概念存储过程:在数据库中预先定义好一组sql语句,可以被程序反复调用。优点:存储过程将一组复杂的sql语句组成一个原子操作,保证数据一致性。批处理操作,保证操作高效性。通过存储过程可以限制用户对数据库

概念

存储过程:

在数据库中预先定义好一组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);

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com