如果“SELECT fieldname INTO var”返回0行,则存储过程停止

时间:2012-04-25 14:02:15

标签: 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不会为其分配值。

由于一些奇怪的原因,这似乎停止了存储过程。我是否应该以不同的方式分配gallery_rel_id_check,因为我需要稍后在procudure中使用它来检查它是否> 0

由于

2 个答案:

答案 0 :(得分:0)

如果查询没有返回任何行,您可以声明一个continue处理程序,以显式地将gallery_rel_id_check设置为适当的值。

例如:

DECLARE CONTINUE HANDLER FOR NOT FOUND SET gallery_rel_id_check = -1;

答案 1 :(得分:0)

归功于@Paolo Bergantino

只需使用:

SET gallery_rel_id_check =(SELECT ...);