2012-04-25 19 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;