A primera vista el SP está correctamente escrito. Si no ves el resultado del primer y del último SELECT es porque ambos no producen salida, sino una asignación de un valor a una variable, por lo cual todo el proceso es interno dentro de la base.
Entiende esto: Ningún lenguaje de programación ni frameworks puede acceder a resultados internos de un SP porque los mismos están en el ámbito privado de MySQL, en un subproceso del servidor de MySQL.
¿Se entiende?
De un SP sólo puedes acceder a los valores de salida en variables INOUT y OUT del prototipo, o la tabla de salida, si la última sentencia ejecutada es un SELECT.
Para recuperar el valor, deberías poner al final un