Saludos, estoy realizando un proyecto y necesito que las clavez se generen automáticamente en el servidor de base de datos, revise una de los procedimientos que creé en MSSQL Server y trate de adecuarlo a MySQL, el procedimiento se crea sin errores, pero al llamarlo con:
CALL SP_NUEVROL('Elemento','Descripcion del elemento');
sale un mensaje que dice que idrol no puede ser nulo o vacio, osea que el procedimiento no esta creando el codigo o no lo esta enviando correctamente al INSERT
Que podría estar mal?
CREATE PROCEDURE SP_NUEVROL (IN nomrol VARCHAR(50), IN descrol VARCHAR(150))
BEGIN
DECLARE contador TINYINT;
DECLARE codigonuevo TINYINT;
DECLARE cadenaceros VARCHAR(3);
DECLARE contcodigo VARCHAR(3);
DECLARE ultimo VARCHAR(3);
DECLARE nuevocod VARCHAR(3);
SET nuevocod = 'R00';
SELECT contador = count(idrol) from MRoles;
IF contador = 0 THEN
SET nuevocod = 'R01';
ELSE
SELECT ultimo = MAX(idrol) from MRoles;
SET contcodigo = RIGHT(ultimo,2);
SET contador = contcodigo;
SET contador = contador + 1;
SET cadenaceros = REPEAT('0', 2 - LENGTH(contador));
SET nuevocod = 'R' + cadenaceros + contador;
END IF;
INSERT INTO MRoles(idrol, nomrol, descrol) VALUES (nuevocod, nomrol, descrol);
END;
Los codigos que deberian formarse son asi: R01.....