存储过程中参数名和表字段名相同的问题

作者写了一个用于修改表字段值的存储过程,发现where条件语句未起限制作用。经排查,原因是传入参数和表字段名相同,存储过程会忽略约束条件。解决办法是修改入参名称,提醒存储过程传参时参数名勿与字段名相同。

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

今天写了一个简单的存储过程,用于修改表字段的值,如下:
IN enterpriseid int ,IN total int

BEGIN
	#用于修改指定企业的消息总条数
	UPDATE website_sys_enterprise SET MessageTotal = MessageTotal+`total` 
	WHERE EnterpriseID = `enterpriseid`;
END

结果:执行完成后,发现该存储过程修改了表中所有行的信息。也就是说where条件语句并没有起到限制作用。
解决办法:修改了入参的名称。

原因:存储过程中的where条件语句,如果传入的参数和表字段名相同,存储过程就会把这个约束条件忽略。
小结:存储过程中传递的参数名不要和字段名相同。特别是修改、删除等操作,可能会对整张表产生影响。后果会很严重!!!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值