Vamos a algunos detalles:
1) Cuando haces una inserción de este tipo, en el que se ven afectadas más de una tabla, es conveniente usar
transacciones, de modo que si algo falla, se deshagan todas las inserciones (cuestiones de consistencia).
2) Las variables de entrada no se usan con "@". Eso es de SQL Server (Microsoft) y no de MySQL. Las variables se usan simplemente declarandolas en el prototipo y usandolas con su nombre.
3) Las variables con "@" son variables de usuario y siguen existiendo y con su valor mientras dure la conexión. No es conveniente usarlas si no es estrictamente necesario precisamente por su permanencia, y cada vez que se las invoca deben ser inicializadas para evitar que guarden basura. Son muy útiles en cierto tipo de operaciones, pero no es buena prática usarlas en el prototipo de los SP, entre otras cosas porque si por alguna razón dos SP distintos que usan la misma variable son invocados por el mismo usuario en la misma sesión (threads de ejecución diferentes), el cambio de valor de la variable en un thread afectará el valor de la variable en el otro thread, simplemente porque apuntan a lo mismo...
4) Las variables no deben bajo ninguna circunstancia tener el mismo nombre de campos, tablas, bases o cualquier otro objeto de base de datos, porque el parser confundirá los objetos, ya que jerarquiza los mismos y en ese caso una tabla o un campo tienen mayor jerarquía que una variable, en consecuencia intentará acceder al campo o tabla y no a la variable, lo que puede dar lugar a errores aleatorios.
Este sería un modelo, basado en tu ejemplo:
Código MySQL:
Ver original
user_login,
user_pass,
user_activation_key)
vuser_login,
vuser_pass,
vuser_activation_key);
vuser_id,
vuser_name,
vuser_mail,
vuser_birthday,
vuser_sexo,
vuser_pais)
vuser_id,
vuser_name,
vuser_mail,
vuser_birthday,
vuser_sexo,
vuser_pais);
vuser_id,
vfecha_registro,
vip_registro)
vuser_id,
vip_registro);
Es de buenas prácticas Poner el sentido de entrada/salida de las variables, por más que el IN sea implícito. Facilita cualquier análisis rápido y además de ese modo no te olvidas de poner los OUT o INOUT cuando corresponden.