Ver Mensaje Individual
  #7 (permalink)  
Antiguo 26/04/2013, 13:09
Avatar de tanliz
tanliz
 
Fecha de Ingreso: abril-2013
Ubicación: Irapuato
Mensajes: 63
Antigüedad: 11 años
Puntos: 1
Respuesta: obtener resultado de procedimiento desde un disparador

Este es el trigger:
Código MySQL:
Ver original
  1. DELIMITER $$
  2. USE `proiplus`$$
  3. DROP TRIGGER /*!50032 IF EXISTS */ `Actualiza_Cuentas_Por_Cobrar`$$
  4.  
  5.     /*!50017 DEFINER = 'proi'@'localhost' */
  6.     TRIGGER `Actualiza_Cuentas_Por_Cobrar` AFTER INSERT ON `detalle_cuentas_por_cobrar`
  7.     DECLARE nuevoAbono DECIMAL(10,2);
  8.     DECLARE nuevoSaldo DECIMAL(10,2);
  9.     DECLARE nuevaLlave VARCHAR(5);
  10.     DECLARE FormaPago VARCHAR(20);
  11.    
  12.     SET nuevoAbono =(SELECT Abono FROM cuentas_por_cobrar WHERE Cuenta_Por_Cobrar_Id=new.Cuenta_Por_Cobrar_Id)+new.Abono;
  13.     SET nuevoSaldo = (SELECT Saldo FROM cuentas_por_cobrar WHERE Cuenta_Por_Cobrar_Id=new.Cuenta_Por_Cobrar_Id) - new.Abono;
  14.    
  15.     UPDATE cuentas_por_cobrar
  16.     SET Abono=nuevoAbono, Saldo=nuevoSaldo
  17.     WHERE Cuenta_Por_Cobrar_Id=new.Cuenta_Por_Cobrar_Id;
  18.    
  19.    
  20.     IF (STRCMP(new.Forma_Pago, "Efectivo")==0) THEN
  21.         SET nuevaLlave=(SELECT IFNULL(MAX(Caja_Id),0)+1 FROM caja);
  22.         INSERT INTO caja (Caja_Id, Tipo_Id, Origen_Id, Ingreso_Id, Fecha, Descripcion, Monto, Numero_Folio, Estatus_Registro)
  23.         VALUES (nuevaLlave, 'Ingreso', 'Cuentas_Por_Cobrar', new.Detalle_Cuentas_Por_Cobrar_Id, new.Fecha, 'Abono de cliente', new.Abono, new.Moneda, 'Activo');
  24.     ELSE
  25.         SET nuevaLlave=(SELECT IFNULL(MAX(Bancos_Id),0)+1 FROM bancos);
  26.         INSERT INTO bancos (Bancos_Id, Tipo_Id, Origen_Id, Ingreso_Id, Fecha, Descipcion, Monto, Numero_Folio, Estatus_Registro)
  27.         VALUES (nuevaLlave, 'Ingreso', 'Cuentas_Por_Cobrar', new.Detalle_Cuentas_Por_Cobrar_Id, new.Fecha, 'Abono de cliente', new.Abono, new.Moneda, 'Activo');
  28.     END IF;
  29.     END;
  30. $$
  31. DELIMITER ;
  32.  
  33.  
  34. y este es el error:
  35.  
  36.  queries executed, 2 success, 1 errors, 0 warnings
  37.  
  38. Query: USE `proiplus`
  39.  
  40. Query: USE `proiplus`
  41.  
  42. 0 row(s) affected
  43.  
  44. Execution Time : 0 sec
  45. Transfer Time  : 0 sec
  46. Total Time     : 0 sec
  47. --------------------------------------------------
  48.  
  49. Query: DROP TRIGGER /*!50032 IF EXISTS */ `Actualiza_Cuentas_Por_Cobrar`
  50.  
  51. Query: DROP TRIGGER /*!50032 IF EXISTS */ `Actualiza_Cuentas_Por_Cobrar`
  52.  
  53. 0 row(s) affected, 1 warning(s)
  54.  
  55. Execution Time : 0 sec
  56. Transfer Time  : 0 sec
  57. Total Time     : 0 sec
  58.  
  59. Note: To see complete list of warning(s), enable Tools -> Preferences -> General -> Show Warning(s) in Messages Tab
  60. --------------------------------------------------
  61.  
  62. Query: CREATE /*!50017 DEFINER = 'proi'@'localhost' */ TRIGGER `Actualiza_Cuentas_Por_Cobrar` AFTER INSERT ON `detalle_cuentas_por_cobr...
  63.  
  64. Query: CREATE /*!50017 DEFINER = 'proi'@'localhost' */ TRIGGER `Actualiza_Cuentas_Por_Cobrar` AFTER INSERT ON `detalle_cuentas_por_cobr...
  65.  
  66. Error Code: 1064
  67. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '==0) then
  68.         set nuevaLlave=(SELECT IFNULL(MAX(Caja_Id),0)+1 FROM caja);
  69.         insert' at line 18
  70.  
  71. Execution Time : 0 sec
  72. Transfer Time  : 0 sec
  73. Total Time     : 0 sec