Ver Mensaje Individual
  #8 (permalink)  
Antiguo 12/04/2012, 10:43
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
Respuesta: Procedimientos almacenados variable out

Volvamos al principio:
Procedimiento Genera:
Código MySQL:
Ver original
  1. DELIMITER $$
  2. CREATE PROCEDURE Genera(IN param VARCHAR(40), OUT codgen V(8))
  3.     DECLARE ceros INT;
  4.     DECLARE ult INT;
  5.     SET ULT = (SELECT (numero + 1) FROM `generador` WHERE Parametro = param);
  6.     SET ceros = 3 - LENGTH(ult);
  7.          /* Suponiendo que lo que quieres es crear una cadena rellena con ceros a la izquierda,
  8.          más  un numero final. */
  9.     SET codgen = CONCAT(LPAD('0',ceros, LEFT(param,5), ult);
  10.     UPDATE `generador` SET numero = ult WHERE parametro = param;
  11. END$$
  12. DELIMITER ;

Procedimiento usu_nuevo:
Código MySQL:
Ver original
  1. DELIMITER $$
  2. CREATE PROCEDURE usu_nuevo(INOUT codusu VARCHAR(8),IN id VARCHAR(20), IN pass VARCHAR(20))
  3.     DECLARE xcod VARCHAR(8);
  4.     CALL Genera('usuarios', xcod);
  5.     INSERT INTO usuarios VALUES(xcod, id, pass);
  6.     SET codusu = xcod;
  7. END$$
  8. DELIMIITER ;

Llamando a USU_NUEVO:
Código MySQL:
Ver original
  1. SET @id := ''; /* Crear una variable de sesión de usuario, sin ella, el  llamado no funciona*/
  2. CALL usu_nuevo(@id, 'clever', '123');
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)