No, pero el fin de semana lo dedico más a jugar con mis hijos...
Mira, para transformar dos datos en un "código" (personalmente lo solucionaría de otra forma, pero es tu decisión), en tu caso no es necesario que uses dos stored procedures, sino un stored procedure y un stored function.
Los SF son parecidos a los SP, pero sólo devuelven un único valor, no pueden devolver tablas y todos sus parámetros son IN., pero es exactamente lo que necesitas.
El modelo de clave que usas está compuesta en realidad de dos datos, nada más: Una cadena y un número, con longitud fija y rellenado de ceros a la izquierda. Entonces para lograr una función que devuelva eso necesitas:
Código MySQL:
Ver originalDELIMITER $$
RETURN retorno;
DELIMITER ;
Este tipo de SF daría como resultado:
Código SQL:
Ver originalmysql> SELECT GENERARCLAVE('USU', 123, 5);
+-----------------------------+
| GENERARCLAVE('USU', 123, 5) |
+-----------------------------+
| USU00123 |
+-----------------------------+
1 ROW IN SET (0.00 sec)
El SP sería, entonces:
Código MySQL:
Ver originalDELIMITER $$
SET codusu
= generarclave
('usu', v_cod
, 5); DELIMIITER ;
Incluso, si lo que quieres es que te devuelva una clave que puedas crear más dinámicamnete, especificando el ancho de la cadena que quieres que tome, lo único que debes hacer es agregar el parámetro para ser usado donde corresponda.