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

本文针对MySQL存储过程中遇到的常见问题提供解决方案,包括中文字符编码处理、多层异常捕获及字符串日期转换等技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        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'))  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值