Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] Recuparar ID de una Insercion con un SP

Estas en el tema de Recuparar ID de una Insercion con un SP en el foro de Mysql en Foros del Web. Hola a todos tengo el siguiente SP @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original CREATE DEFINER = `root` @ `localhost` PROCEDURE `sp _ segpap _ duplicar` ...
  #1 (permalink)  
Antiguo 23/11/2015, 09:41
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años
Puntos: 2
Recuparar ID de una Insercion con un SP

Hola a todos tengo el siguiente SP
Código MySQL:
Ver original
  1. CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_segpap_duplicar`(IN jc_usuario_id_dp INT(11),IN jc_empresa_id_dp INT(11),IN jc_contacto_id_dp INT(11),IN jc_actividad_id_dp INT(11),
  2. IN seg_estatus_id_dp INT(11),IN seg_referencia_id_dp INT(11),IN seg_pap_fecha_requerimiento_dp DATE,IN seg_pap_fecha_ultimo_contac_dp DATE,IN seg_pap_fecha_proximo_contac_dp DATE,
  3. IN jc_unidad_negocio_id_dp INT(11),IN seg_pap_observaciones_dp VARCHAR(500))
  4.  INSERT INTO seg_pap (jc_usuario_id,jc_empresa_id,jc_contacto_id,jc_actividad_id,seg_estatus_id,seg_referencia_id,seg_pap_fecha_requerimiento,seg_pap_fecha_ultimo_contac,
  5.                     seg_pap_fecha_proximo_contac,jc_unidad_negocio_id,seg_pap_observaciones)
  6.                     VALUES(jc_usuario_id_dp,jc_empresa_id_dp,jc_contacto_id_dp,jc_actividad_id_dp,seg_estatus_id_dp,seg_referencia_id_dp,seg_pap_fecha_requerimiento_dp,seg_pap_fecha_proximo_contac_dp,
  7.                     seg_pap_fecha_ultimo_contac_dp,jc_unidad_negocio_id_dp,seg_pap_observaciones_dp);
el cual funciona bien mi duda es como recupero el id de la inserción que estoy realizando no se si es que existe alguna funcion de Mysql que hace eso o que tengo que hacer Graciass
  #2 (permalink)  
Antiguo 23/11/2015, 10:08
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Recuparar ID de una Insercion con un SP

El manual de referencia es una buena ayuda...

LAST_INSERT_ID()
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 23/11/2015, 10:24
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años
Puntos: 2
Respuesta: Recuparar ID de una Insercion con un SP

Hola y gracias por responder bueno si vi eso ahora tengo mi SP asi pero no si esta bien
ya que ejecuto el SP me muestra un error de numero de variables
Código MySQL:
Ver original
  1. CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_segpap_duplicar`(IN `jc_usuario_id_dp` INT(11), IN `jc_empresa_id_dp` INT(11), IN `jc_contacto_id_dp` INT(11), IN `jc_actividad_id_dp` INT(11), IN `seg_estatus_id_dp` INT(11), IN `seg_referencia_id_dp` INT(11), IN `seg_pap_fecha_requerimiento_dp` DATE, IN `seg_pap_fecha_ultimo_contac_dp` DATE, IN `seg_pap_fecha_proximo_contac_dp` DATE, IN `jc_unidad_negocio_id_dp` INT(11), IN `seg_pap_observaciones_dp` VARCHAR(500), OUT `seg_pap_id_dp` INT(11))
  2.  INSERT INTO seg_pap (jc_usuario_id,jc_empresa_id,jc_contacto_id,jc_actividad_id,seg_estatus_id,seg_referencia_id,seg_pap_fecha_requerimiento,seg_pap_fecha_ultimo_contac,
  3.                     seg_pap_fecha_proximo_contac,jc_unidad_negocio_id,seg_pap_observaciones)
  4.                     VALUES(jc_usuario_id_dp,jc_empresa_id_dp,jc_contacto_id_dp,jc_actividad_id_dp,seg_estatus_id_dp,seg_referencia_id_dp,seg_pap_fecha_requerimiento_dp,seg_pap_fecha_proximo_contac_dp,
  5.                     seg_pap_fecha_ultimo_contac_dp,jc_unidad_negocio_id_dp,seg_pap_observaciones_dp);
  6. SET seg_pap_id_dp = LAST_INSERT_ID(); //con esta variables quiero recoger el ID
cuando lo ejecuto me sale este error
Código MySQL:
Ver original
  1. Incorrect number of arguments for PROCEDURE d2000177_jmerpv1.sp_segpap_duplicar; expected 12, got 11
me dice que el numero de varaibles no es el correcto claro que al ultima variable es de salida y no ingreso
  #4 (permalink)  
Antiguo 23/11/2015, 10:34
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Recuparar ID de una Insercion con un SP

Primero, trata de estructurar tus codigos de modo que resulte fácil lleerlo. Un bloque enormemente largo es imposible de entender a simple vista.

Código MySQL:
Ver original
  1. CREATE PROCEDURE `sp_segpap_duplicar`(
  2.     IN `jc_usuario_id_dp` INT(11),
  3.     IN `jc_empresa_id_dp` INT(11),
  4.     IN `jc_contacto_id_dp` INT(11),
  5.     IN `jc_actividad_id_dp` INT(11),
  6.     IN `seg_estatus_id_dp` INT(11),
  7.     IN `seg_referencia_id_dp` INT(11),
  8.     IN `seg_pap_fecha_requerimiento_dp` DATE,
  9.     IN `seg_pap_fecha_ultimo_contac_dp` DATE,
  10.     IN `seg_pap_fecha_proximo_contac_dp` DATE,
  11.     IN `jc_unidad_negocio_id_dp` INT(11),
  12.     IN `seg_pap_observaciones_dp` VARCHAR(500),
  13.     OUT `seg_pap_id_dp` INT(11))
  14.  INSERT INTO seg_pap
  15.     (jc_usuario_id,
  16.     jc_empresa_id,
  17.     jc_contacto_id,
  18.     jc_actividad_id,
  19.     seg_estatus_id,
  20.     seg_referencia_id,
  21.     seg_pap_fecha_requerimiento,
  22.     seg_pap_fecha_ultimo_contac,
  23.     seg_pap_fecha_proximo_contac,
  24.     jc_unidad_negocio_id,
  25.     seg_pap_observaciones)
  26.   VALUES(
  27.     jc_usuario_id_dp,
  28.     jc_empresa_id_dp,
  29.     jc_contacto_id_dp,
  30.     jc_actividad_id_dp,
  31.     seg_estatus_id_dp,
  32.     seg_referencia_id_dp,
  33.     seg_pap_fecha_requerimiento_dp,
  34.     seg_pap_fecha_proximo_contac_dp,
  35.     seg_pap_fecha_ultimo_contac_dp,
  36.     jc_unidad_negocio_id_dp,
  37.     seg_pap_observaciones_dp);
  38.  
  39. SET seg_pap_id_dp = LAST_INSERT_ID();
En segundo lugar, si un SP tiene N parametros, debes enviar N variables, SIEMPRE.
Si no pones la variable de salida en el CALL, ¿a dónde piensas que depositará el valor MySQL?
No puedes enviar N-1 variables...
Eso usualmente se resuelve a nivel programación, pero dependerá de las capacidades del lenguaje y su librería asociada el saber como y de que manera pones la variable y luego recuperas el valor (en .Net es facil).

De lo contrario, simplemente lo tratas como dato de saliuda de una query:

Código MySQL:
Ver original
  1. CREATE PROCEDURE `sp_segpap_duplicar`(
  2.     IN `jc_usuario_id_dp` INT(11),
  3.     IN `jc_empresa_id_dp` INT(11),
  4.     IN `jc_contacto_id_dp` INT(11),
  5.     IN `jc_actividad_id_dp` INT(11),
  6.     IN `seg_estatus_id_dp` INT(11),
  7.     IN `seg_referencia_id_dp` INT(11),
  8.     IN `seg_pap_fecha_requerimiento_dp` DATE,
  9.     IN `seg_pap_fecha_ultimo_contac_dp` DATE,
  10.     IN `seg_pap_fecha_proximo_contac_dp` DATE,
  11.     IN `jc_unidad_negocio_id_dp` INT(11),
  12.     IN `seg_pap_observaciones_dp` VARCHAR(500),
  13.     OUT `seg_pap_id_dp` INT(11))
  14.  INSERT INTO seg_pap
  15.     (jc_usuario_id,
  16.     jc_empresa_id,
  17.     jc_contacto_id,
  18.     jc_actividad_id,
  19.     seg_estatus_id,
  20.     seg_referencia_id,
  21.     seg_pap_fecha_requerimiento,
  22.     seg_pap_fecha_ultimo_contac,
  23.     seg_pap_fecha_proximo_contac,
  24.     jc_unidad_negocio_id,
  25.     seg_pap_observaciones)
  26.   VALUES(
  27.     jc_usuario_id_dp,
  28.     jc_empresa_id_dp,
  29.     jc_contacto_id_dp,
  30.     jc_actividad_id_dp,
  31.     seg_estatus_id_dp,
  32.     seg_referencia_id_dp,
  33.     seg_pap_fecha_requerimiento_dp,
  34.     seg_pap_fecha_proximo_contac_dp,
  35.     seg_pap_fecha_ultimo_contac_dp,
  36.     jc_unidad_negocio_id_dp,
  37.     seg_pap_observaciones_dp);
  38.  
Eso devolvería una tabla resultado con un sólo campo, con valro del ID autorogenerado, o cero, si no se pudo insertar nada.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 23/11/2015, 11:53
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años
Puntos: 2
Respuesta: Recuparar ID de una Insercion con un SP

Gracias por responder funciono como mencionaste
Código MySQL:
Ver original
  1. CREATE PROCEDURE `sp_segpap_duplicar`(
  2.     IN `jc_usuario_id_dp` INT(11),
  3.     IN `jc_empresa_id_dp` INT(11),
  4.     IN `jc_contacto_id_dp` INT(11),
  5.     IN `jc_actividad_id_dp` INT(11),
  6.     IN `seg_estatus_id_dp` INT(11),
  7.     IN `seg_referencia_id_dp` INT(11),
  8.     IN `seg_pap_fecha_requerimiento_dp` DATE,
  9.     IN `seg_pap_fecha_ultimo_contac_dp` DATE,
  10.     IN `seg_pap_fecha_proximo_contac_dp` DATE,
  11.     IN `jc_unidad_negocio_id_dp` INT(11),
  12.     IN `seg_pap_observaciones_dp` VARCHAR(500))
  13.  INSERT INTO seg_pap
  14.     (jc_usuario_id,
  15.     jc_empresa_id,
  16.     jc_contacto_id,
  17.     jc_actividad_id,
  18.     seg_estatus_id,
  19.     seg_referencia_id,
  20.     seg_pap_fecha_requerimiento,
  21.     seg_pap_fecha_ultimo_contac,
  22.     seg_pap_fecha_proximo_contac,
  23.     jc_unidad_negocio_id,
  24.     seg_pap_observaciones)
  25.   VALUES(
  26.     jc_usuario_id_dp,
  27.     jc_empresa_id_dp,
  28.     jc_contacto_id_dp,
  29.     jc_actividad_id_dp,
  30.     seg_estatus_id_dp,
  31.     seg_referencia_id_dp,
  32.     seg_pap_fecha_requerimiento_dp,
  33.     seg_pap_fecha_proximo_contac_dp,
  34.     seg_pap_fecha_ultimo_contac_dp,
  35.     jc_unidad_negocio_id_dp,
  36.     seg_pap_observaciones_dp);
  37.  
con la diferencia que ahora saque la variable de salida ahora ya vere como hago que php me muestre ese Id devuelto por el Sp Graciasssss
  #6 (permalink)  
Antiguo 23/11/2015, 12:03
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Recuparar ID de una Insercion con un SP

Para simplificarte la vida, ponle un alias:

Código MySQL:
Ver original 
De esa forma puedes invocar la clave en el array recuperado por PHP.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 23/11/2015, 12:05
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años
Puntos: 2
Respuesta: Recuparar ID de una Insercion con un SP

disculpa mi ignorancia en Mysql pero se puede hacer eso y luego llevarlo a PHP sin algun parametro mmm y si fuese así como lo recogería nuevamente Graciasss por tu atención al tema

Etiquetas: fecha
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:20.