mysql简单操作存储过程
是对sql语句的预编译
它的优点
1.存储过程一次编译后,存储在数据库中,后续调用不需要再编译,执行速度快。
2.存储过程是在数据库内部进行数据处理,相较于外部程序调用接口(如Java 程序的 JDBC 接口)访问数据库内部数据,性能更优
它的缺点
1.存储过程依赖于数据库,例如Oracle的存储过程和MySQL的存储过程语法存在差异。若需要从Oracle迁移到MySQL,带来的改造量将是巨大的,这也是部分架构人员不推荐使用存储过程的原因。
2.存储过程将处理逻辑和数据库绑定,不利于系统解耦。
3.存储过程代码管理困难,不利于团队协作开发;当数据库表变化时,可能会影响存储过程。
一般银行项目,很老的项目中会大量使用存储过程,但是目前很多公司都慢慢的使用其他方案代替存储过程,但是因为涉及很多部分,所以替换难度也是很大
主要是二次开发难度增加,阅读性很差
表准备
CREATE TABLE net_type( id INT PRIMARY KEY AUTO_INCREMENT COMMENT '主键', n_type VARCHAR(20) COMMENT '网站类型', n_time VARCHAR(20) COMMENT '类型添加时间', n_user VARCHAR(20) COMMENT '类型添加人' )
创建添加的存储过程
DELIMITER $$ USE `yourheartTest`$$ DROP PROCEDURE IF EXISTS `pkg_net_type`$$ CREATE DEFINER=`qiuxie`@`%` PROCEDURE `pkg_net_type`(IN nType VARCHAR(20),IN nUser VARCHAR(20)) BEGIN INSERT INTO net_type(n_type,n_time,n_user) VALUE(nType,NOW(),nUser); END$$ DELIMITER ;
调用
CALL pkg_net_type('存储过程学习','xiaomi')
创建查询存储过程
DELIMITER $$ USE `yourheartTest`$$ DROP PROCEDURE IF EXISTS `get_net_type`$$ CREATE DEFINER=`qiuxie`@`%` PROCEDURE `get_net_type`(IN nUser VARCHAR(255)) BEGIN SELECT * FROM net_type WHERE n_user=nUser; END$$ DELIMITER ;