Por lo general, pasé 3 horas en esto, luego, JUSTO después de publicar la pregunta, encontré el problema. Entonces, para referencia futura:parece que MySQL no distingue entre mayúsculas y minúsculas en lo que respecta a las variables. El ID
nombre de columna y id
variable aparentemente lo confundió por completo.
Cambié el nombre del parámetro de entrada del procedimiento a retId
y luego funcionó perfectamente.