SELECT DATEDEBUT, DATEFIN INTO DebutReserv2, FinReserv2 FROM RESERVATION WHERE IDCODEBARRES = v_codebarre ORDER BY DATEDEBUT LIMIT 0, 1;
RETURN(Concat(DebutReserv2, ",", FinReserv2));
If ((DebutReserv2 <= curdate()) and (FinReserv2 >= curdate())) THEN
RETURN(Concat(DebutReserv2, ",", FinReserv2));
ここで少し問題があります。最初のリターンでは、DebutReserv2 と FinReserv2 には最初の選択によって割り当てられた値がありますが、最初の if を渡すとすぐに、両方の変数の値が変化します (そして、同じループにいます)。このコードもカーソル内にあります。