Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/06/2015, 07:15
Avatar de JeMaGa
JeMaGa
 
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 9 meses
Puntos: 4
Procedimiento Almacenado

Buenos Dias
Tengo este procedimiento almacenado me realiza un proceso de mayoriazacion dependiendo del centro de costo, cuando realizo una consulta en la que me muestra el valor mayor no me funciona la insercion pero si quieto esta consulta si funciona, pero no como deberia

Agradeceria toda la ayuda que me puedan brindar
Código MySQL:
Ver original
  1. DROP PROCEDURE IF EXISTS ".$nombreProc.";
  2. CREATE DEFINER=`root`@`localhost` PROCEDURE `".$nombreProc."`() DETERMINISTIC NO SQL SQL SECURITY DEFINER
  3. DECLARE v_tercero VARCHAR (20);
  4. DECLARE v_id_cabecera INT DEFAULT 0;
  5. DECLARE v_id_saldo INT DEFAULT 0;
  6. DECLARE v_codigo_cuenta VARCHAR(20);
  7. DECLARE v_sucursal VARCHAR(4);
  8. DECLARE v_debito DOUBLE(15,2);
  9. DECLARE v_credito DOUBLE(15,2);
  10. DECLARE v_centro_costo VARCHAR(6);
  11. DECLARE v_centro_costo_ce VARCHAR(6);
  12. DECLARE padre_centro_costo VARCHAR(6);
  13. DECLARE numero_paso INT DEFAULT 0;
  14. DECLARE tmp_continuar INT DEFAULT 0;
  15. DECLARE detalle_cur CURSOR FOR SELECT detalle.id_cabecera, detalle.codigo_cuenta, detalle.sucursal, detalle.debito, detalle.credito, detalle.tercero, detalle.centrocosto FROM " . $tablaMes . " as detalle HAVING detalle.id_cabecera = " . $idComprobante . ";
  16. DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET continuar = false;
  17. OPEN detalle_cur;
  18.     FETCH  detalle_cur INTO v_id_cabecera, v_codigo_cuenta, v_sucursal, v_debito, v_credito, v_tercero, v_centro_costo;
  19.     SET tmp_continuar = continuar;
  20.     SELECT v_codigo_cuenta, v_sucursal, v_debito, v_credito, v_tercero, v_centro_costo;
  21.    
  22.     IF v_codigo_cuenta IS NOT NULL THEN
  23.         loop_interno: LOOP
  24.        
  25.            SELECT id_centro_costo,id_padre FROM centros_costo WHERE id_centro_costo = v_centro_costo
  26.            INTO v_centro_costo_ce, padre_centro_costo;
  27.            SELECT v_centro_costo_ce, padre_centro_costo;
  28.  
  29.                     SET v_id_saldo=0;
  30.                     SELECT id FROM " . $tablaSaldos . " WHERE cuenta = v_codigo_cuenta and tercero = v_tercero and sucursal = v_sucursal and centroCosto = v_centro_costo INTO v_id_saldo;
  31.                     IF  v_id_saldo = 0 THEN
  32.                         INSERT INTO " . $tablaSaldos . " (cuenta,tercero,sucursal,centroCosto," . $campoDebito . "," . $campoCredito . ") VALUES(`v_codigo_cuenta`,`v_tercero`,`v_sucursal`, `v_centro_costo`,v_debito,v_credito);
  33.                     ELSE
  34.                         UPDATE " . $tablaSaldos . " SET " . $campoDebito . " = " . $campoDebito . $signo . " v_debito, " . $campoCredito . " = " . $campoCredito . $signo . " v_credito WHERE id = v_id_saldo;
  35.                     END IF;  
  36.  
  37.               SET v_id_saldo=0;
  38.               SELECT id FROM " . $tablaSaldos . " WHERE cuenta = v_codigo_cuenta and tercero IS NULL and sucursal IS NULL into v_id_saldo;
  39.               IF  v_id_saldo = 0 THEN
  40.                    INSERT INTO " . $tablaSaldos . " (cuenta,centroCosto," . $campoDebito . "," . $campoCredito . ") VALUES(`v_codigo_cuenta`,`v_centro_costo`,v_debito,v_credito);                        
  41.               ELSE
  42.                    UPDATE " . $tablaSaldos . " SET " . $campoDebito . " = " . $campoDebito . $signo . " v_debito, " . $campoCredito . " = " . $campoCredito . $signo . " v_credito WHERE id = v_id_saldo;
  43.               END IF;
  44.                
  45.            SET v_centro_costo = padre_centro_costo;
  46.            IF  v_centro_costo IS NULL THEN
  47.               LEAVE loop_interno;  
  48.            END IF;
  49.         END LOOP loop_interno;
  50.     END IF;
  51.     SET continuar= tmp_continuar;
  52. UNTIL NOT continuar END REPEAT;
  53. CLOSE detalle_cur;    
[/PHP]

Última edición por gnzsoloyo; 26/06/2015 a las 14:32 Razón: Pesimamente etiquetado... SQL no es PHP.