在学习的路上不断前进,该文是MySQL的存储过程小结
在遇到修改某表时,需要判断是否有该值的记录。于是乎想到了存储过程。
存储过程、函数、触发器用得好的话,少很多需要维护的代码。
虽然不进场写SQL代码,毕竟navicat还是很方便的
创建存储过程
CREATE PROCEDURE procName (OUT param1 INT)//返回值
BEGIN
SELECT COUNT(*) INTO param1 FROM t;
END;
返回受影响行数
SELECT ROW_COUNT();
事务
DROP PROCEDURE IF EXISTS test_pro
CREATE PROCEDURE test_pro( )
BEGIN
DECLARE t_error INTEGER DEFAULT 0;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1;
START TRANSACTION;//开启事务
INSERT INTO test VALUES(NULL, 'test sql 001');
INSERT INTO test VALUES('1', 'test sql 002');
IF t_error = 1 THEN
ROLLBACK;//回滚
ELSE
COMMIT;//提交
END IF;
select t_error; //返回标识位的结果;
END
MyBatis调用事务
CALL pro_name(#{param});