2012-04-25 59 views
2

我运行一个存储过程,并跑进下面的行了一个问题:存储过程停止,如果“SELECT INTO字段名VAR”返回0行

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

感谢

+0

NULLS in join ...? – 2012-04-25 14:05:40

+0

您是否试过'限制0,1;'? – 2012-04-25 14:06:12

+1

你需要知道'photo_data_id'的价值吗?如果没有,只需做一个“COUNT(*)”查询。否则,你必须捕捉错误。 – 2012-04-25 14:09:39

回答

0

归功于@Paolo Bergantino

只需使用:

SET gallery_rel_id_check =(SELECT ...);

0

可以声明一个继续处理程序明确设置gallery_rel_id_check为适当的值如果查询不返回任何行。

例如:

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