Ver Mensaje Individual
  #2 (permalink)  
Antiguo 24/03/2008, 07:29
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Re: Problema con SP (Stored Procedure)

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 ;