天天看点

mysql存储过程编写时碰到的问题

        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'))  

继续阅读