存储过程编程和事件实际生产中常见问题分析01

存储过程上线中常见问题分析

目录

1,写好存储过程代码后,在上线的时候,出现事件未执行情况。
2,存储过程不会写,怎么掌握基本语法?
3,事件怎么写?存储过程代码不会编辑
4,不知道如何对存储过程中的重复代码块进行封装。

正文:

1:写好存储过程代码后,在上线的时候,出现事件未执行情况。

分析:1,可能是你的数据库里没有开启事件,如下操作命令步骤:
a. show VARIABLES like ‘ev%’ , 显示:“event_scheduler OFF”
b.set global event_scheduler=ON // 临时开启事件,如果需要永久开启,请修改mysql安装的所在服务器配置文件,my.ini(windows),my.cnf(linux)
里面加一条 “ event_scheduler=ON ” 即可
c. 请检查数据库服务器的系统时间,是否和当前时间一致,可能时间不一致导致的,查看命令: select now();

2,存储过程不会写,怎么掌握基本语法?

分析:
方法1: 在 begin … 代码块 … end

  CREATE DEFINER=`root`@`localhost` PROCEDURE `demo`()
  BEGIN
		insert into user(name,age) VALUES('张三',22);
		-- 这里可以写你想要写的任何sql语句
	END 

方法2:下面目录4会介绍高级部分

3,事件怎么写?存储过程代码不会编辑

CREATE DEFINER=root@localhost EVENT event_demo ON SCHEDULE EVERY 1 MONTH STARTS ‘2019-07-28 03:02:35’ ENDS ‘2019-07-29 05:02:35’ ON COMPLETION NOT PRESERVE ENABLE DO call demo()

解释: call demo() – 表示调用存储过程 demo() 无返回值
SCHEDULE EVERY 1 MONTH STARTS ‘2019-07-28 03:02:35’ ENDS ‘2019-07-29 05:02:35’ – 表示 事件执行的时间是 从2019-07-28 03:02:25 开始,到 2019-07-29 05:02:35 结束,每个月执行一次。

4,不知道如何对存储过程中的重复代码块进行封装。

CREATE DEFINER=root@localhost PROCEDURE demo2()
BEGIN
#Routine body goes here…
– 查询数据库里的任务是否存在执行成功的。
– 定义一个临时值
DECLARE ageNum int ;
– 查询出的状态值赋值给statusNum
SELECT age INTO ageNum
FROM user
WHERE birth > ( select DATE_FORMAT(now(),’%Y-%m’) from dual) ;
if ageNum >6 THEN
– 需要执行以下合并表程序
call demo() ;
end if
;
END

总结:在实际生产中,使用存储过程优缺点分析:
优点:存储过程代码,可以提高数据库的执行效率。也可以处理复杂的业务逻辑。解决一些特定环境的难题。
缺点:尽量少用存错过程,因为存储过程写多了,容易出现维护比较难,情况。

作者本人知识有限,可能有一些问题没有考虑到,欢迎读者在下方评论。谢谢大家! #@#




*作者: 阿标*

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值