Bueno, en el texto del SP se alcanzan a ver tres cosas:
1. Estás haciendo una inserción en una tabla... pero no has pasado los parámetros al SP, por lo que las variables estarán siempre vacías.
2. Estás llamando a un SELECT para obtener el valor del ultimo ID insertado, cuando ya existe una función de MySQL que te puede dar ese datos en un SP.
3. Estas intentando realizar una operación de actualización a una tabla secundaria en cada INSERT llamado. En sí, puede funcionar, pero estás desaprovechando la potencia del motor, porque una tarea como esa, y que debe hacerse SIEMPRE que haya un INSERT es mejor dejársela a un TRIGGER, y no a un SP.
Además de eso, estás incluyendo un COMMIT, pero no estás iniciando la transacción en ninguna parte (el BEGIN es el inicio del procedimiento, no de la transacción, que debería comenzar con START TRANSACTION;).
Para el caso, el SP debería tener un texto al estilo:
Código:
DELIMITER $$
CREATE PROCEDURE `test`(IN @nombre VARCHAR(50),
IN @apellido VARCHAR(50),
IN @asd VARCHAR(50))
BEGIN;
DECLARE idUser INT;
INSERT INTO user (FIRSTNAME, LASTNAME)
VALUES (@nombre, @apellido);
SET idUser = LAST_INSERT_ID();
INSERT INTO student (ID_USER, ADVTYPE)
VALUES (idUser, asd);
END $$
DELIMITER ;