En primer lugar decir que nunca he hecho un proceso almacenado, por lo que soy totalmente newbi
![sonriente](http://static.forosdelweb.com/fdwtheme/images/smilies/smile.png)
Lo segundo, planteo lo que necesito, y luego el código del proceso que he escrito, y a continuación las dudas que tengo.
Lo que hago es recuperar una serie de valores de la tabla a,
Compruebo si estos valores existen en la tabla b, mediante el campo id_usuario que esta en ambos.
Si existe en a y en b hago un update de los campos nombre y correo.
Si no esta en a.
inserto los valores en la tabla a
recupero el último id_uid de la tabla a
Inserto valores (otros) en la tabla b
inserto valores en la tabla cCierro el proceso almacenado.
Código:
mis dudas, como genero una variable en los procedimientos almacenados para guardar datos como el de SELECT LAST_INSERT_ID() AS @ultimoregistro FROM users;DELIMITER // CREATE PROCEDURE usuario_usuario (IN id_erp VARCHAR(12), IN Nombre VARCHAR (50), IN correo VARCHAR(50), IN creacion_usuario DATE, IN rol VARCHAR(50)) #comenzamos el procedimiento. BEGIN #consultamos para ver si existe el usuario. SELECT COUNT(UID) INTO @CUENTA FROM users name = id_erp; #si nos da 1, quiere decir que existe y ejecutamos la actualización IF @CUENTA ==1 UPDATE USERS SET name = id_erp, mail = correo, where name = id_erp; ENDIF #si nos da 0, quiere decir que no existe y tenemos que realizar el insert IF @cuenta == 0 INSERT INTO users (name,pass,mail,mode,sort,threshold,created,access,login,status,timezone,language,init) VALUES (id_erp,'e10adc3949ba59abbe56e057f20f883e',correo,0,0,0,creacion_usuario,0,0,1,7200,'es',correo); SELECT LAST_INSERT_ID() AS @ultimoregistro FROM users; INSERT INTO profile_values (fid, uid, value) VALUES (2, ultimoregistro, nombre); INSERT INTO users_roles (uid,rid) VALUES (ultimoregistro, rol); ENDIF END$$ DELIMITER;
¿Esta bien hecho como he hecho esto?
¿Donde y como guardo el proceso almacenado, en un archivo, en la base de datos con algún insert?
¿Algunas de los términos utilizados en las variables y en los nombres de campos como" value" y "lenguage" me los pinta como si fuesen funciones, ¿Que puedo hacer para seguir usandolos? ¿Tengo que escaparlos o comentarlos de alguna manera?.
Gracias
Oskar