Mysql 存储过程在以下情况下停止";选择fieldname INTO var";返回0行
我正在运行一个存储过程,遇到以下行的问题:Mysql 存储过程在以下情况下停止";选择fieldname INTO var";返回0行,mysql,sql,stored-procedures,percona,Mysql,Sql,Stored Procedures,Percona,我正在运行一个存储过程,遇到以下行的问题: SELECT photo_data_id INTO gallery_rel_id_check FROM photo_data WHERE object_type = 4 AND data_id = 0 AND photo_id = row_photo_id LIMIT 1; 在某些情况下,此查询将返回0行,因此gallery_rel_id_check不会获得分配给它的值 出于某种奇怪的原因,这似乎停止了存储过程。我是否
SELECT photo_data_id
INTO gallery_rel_id_check
FROM photo_data
WHERE object_type = 4
AND data_id = 0
AND photo_id = row_photo_id LIMIT 1;
在某些情况下,此查询将返回0行,因此gallery_rel_id_check不会获得分配给它的值
出于某种奇怪的原因,这似乎停止了存储过程。我是否应该以不同的方式分配gallery_rel_id_check,因为我需要在以后的过程中使用它来检查它是否>0
谢谢如果查询没有返回任何行,您可以声明一个continue处理程序来显式地将gallery\u rel\u id\u check设置为适当的值 例如:
DECLARE CONTINUE HANDLER FOR NOT FOUND SET gallery_rel_id_check = -1;
如果查询未返回任何行,则可以声明一个continue处理程序,将gallery_rel_id_check显式设置为适当的值 例如:
DECLARE CONTINUE HANDLER FOR NOT FOUND SET gallery_rel_id_check = -1;
归功于@Paolo Bergantino 只需使用:
设置图库\u rel\u id\u check=(选择…) 归功于@Paolo Bergantino 只需使用:
设置图库\u rel\u id\u check=(选择…) 您是否尝试过
限制0,1代码>?您需要知道照片数据id的值吗?如果没有,只需执行COUNT(*)
查询即可。否则您必须捕获错误。您还可以执行SET gallery\u rel\u id\u check=(选择…)
@Paulo,这就成功了,把它放在一个答案里,我会记下:)你试过限制0,1代码>?您需要知道照片数据id的值吗?如果没有,只需执行COUNT(*)
查询即可。否则您必须捕获错误。您还可以执行SET gallery\u rel\u id\u check=(选择…)代码>@Paulo,这就成功了,把它放在答案里,我会记下:)