Ver Mensaje Individual
  #4 (permalink)  
Antiguo 23/11/2015, 10:34
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: 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)