@variables ne sont pas DECLARED .
Soit :
DECLARE user_same BOOLEAN;
SELECT 1 INTO user_same WHERE ...
ou
SELECT @user_same := 1 WHERE ...
Mieux encore, cela évite d'avoir besoin de la variable.
IF (EXISTS SELECT * FROM ...)
N'utilisez pas non plus la construction IN ( SELECT ... ); il est généralement préférable d'utiliser WHERE EXISTS ( SELECT * FROM ... ) ou JOIN ... ON ... .
(Il peut y avoir plus de problèmes après les avoir corrigés.)