NO.1
MYSQL 编写存储过程中,申明字符串变量,当将中文放入变量中时,报错。错误信息如下:
Procedure execution failed
1366 - Incorrect string value: '\xE8\xA9\xB9\xE5\x8D\x8E' for column 'param_name' at row 351
改进方法:
在申明字符变量时指定字符编码,即可解决上述问题:
DECLARE param_name VARCHAR(50) CHARACTER SET utf8 DEFAULT 'xx';
NO.2
MYSQL 编写存储过程中,如何捕捉多层异常。如申明
DECLARE CONTINUE HANDLER FOR NOT FOUND set done=1; 如果多条select均未在数据库表中
找到记录都会使done=1,导致done不能按照意愿实现功能。
解决方法:
可将需要捕捉异常的sql定义在不同的块中。
NO.3
问题:
数据库中的日期字段使用的是字符串类型,使用时间函数计算两个日期差时报错:
解决方法:
将字符串转换为日期类型,再计算:
TIMEDIFF(STR_TO_DATE(sign_afternoontime,'%Y/%m/%d %H:%i'),STR_TO_DATE(sign_morningtime,'%Y/%m/%d %H:%i'))