geofox

SP MySQL

Aug 28th, 2012
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 2.61 KB | None | 0 0
  1. /* Inserción Masiva a Tablas MySQL v2 */
  2.  
  3. delimiter //
  4. DROP PROCEDURE IF exists VENTAS//
  5. CREATE PROCEDURE ventas (usuario VARCHAR(30),tarjeta_credito VARCHAR(50), productos VARCHAR(100),
  6. cantidades VARCHAR(100))
  7.  
  8. BEGIN
  9.        /* Detalle_Factura */
  10.       DECLARE vproducto VARCHAR(100);
  11.       DECLARE vcantidad VARCHAR(100);
  12.       DECLARE codproducto  VARCHAR(100);
  13.       DECLARE cantidad VARCHAR(100);
  14.       DECLARE total_items int ;
  15.       DECLARE x INT;
  16.  
  17.    
  18.       DECLARE cod_usuario INT;
  19.  
  20.       DECLARE cod_venta INT;
  21.  
  22.       DECLARE f_actual DATE;
  23.  
  24.       /* Detalle_Factura */
  25.       SET x = 1;
  26.       SET vproducto = productos;
  27.       SET vcantidad = cantidades;
  28.       SET total_items = LENGTH(vproducto);
  29.  
  30.       SET f_actual = NOW();
  31.  
  32.       SELECT codusuario INTO cod_usuario  FROM USUARIOS WHERE login=usuario LIMIT 1;
  33.        
  34.       INSERT INTO ventas(codusuario,t_credito,fecha)values(cod_usuario,tarjeta_credito,f_actual);
  35.  
  36.       SELECT codventa INTO cod_venta FROM ventas WHERE codusuario=cod_usuario AND fecha=f_actual LIMIT 1;
  37.    
  38.  
  39.    
  40.       WHILE x < total_items DO
  41.            
  42.             SET codproducto = extraer(vproducto);
  43.             SET vproducto = actualizar(vproducto);
  44.  
  45.             SET cantidad = extraer(vcantidad);
  46.             SET vcantidad = actualizar(vcantidad);
  47.  
  48.             IF (codproducto !=0  AND cantidad !=0) THEN
  49.  
  50.                     INSERT INTO detalle_venta values(cod_venta,codproducto,cantidad);
  51.  
  52.             END IF;
  53.             SET x = x + 1;
  54.            
  55.      
  56.     END WHILE;
  57.  
  58.  
  59. END//
  60. delimiter ;
  61.  
  62. call ventas('geofox','1234567890','5;6;7;8;','5;10;4;1;');
  63.  
  64.  
  65. /* by choco */
  66.  
  67.  
  68. /* Trigger Inicializar Total Envios */
  69. delimiter //
  70. DROP TRIGGER IF exists INIT_TOTAL//
  71. CREATE TRIGGER INIT_TOTAL AFTER INSERT ON ventas
  72. FOR EACH ROW
  73. BEGIN
  74. DECLARE f_actual DATE;
  75. DECLARE estado varchar(20);
  76. DECLARE total DECIMAL(8,2);
  77.  
  78. SET f_actual = NOW();
  79. SET estado = "Pendiente"; /* de Confirmación */
  80. SET total = 0.00;
  81.  
  82. INSERT INTO envios values(NEW.codventa,f_actual,estado,total);
  83.  
  84.  
  85. END//
  86. delimiter ;
  87.  
  88.  
  89.  
  90. /* by choco */
  91.  
  92.  
  93. /* Trigger Envios Total */
  94.  
  95. delimiter //
  96. DROP TRIGGER IF exists TOTAL_VENTA//
  97. CREATE TRIGGER TOTAL_VENTA AFTER INSERT ON detalle_venta
  98. FOR EACH ROW
  99. BEGIN
  100. DECLARE precio_p DECIMAL(8,2);
  101. DECLARE subtotal DECIMAL(8,2);
  102. DECLARE total_actual DECIMAL(8,2);
  103. DECLARE total_envio DECIMAL(8,2);
  104.  
  105. SELECT precio INTO precio_p FROM PRODUCTO WHERE codproducto= NEW.codproducto;
  106.  
  107. SET subtotal = (NEW.cantidad * precio_p);
  108.  
  109. SELECT total into total_actual FROM envios WHERE codventa= NEW.codventa;
  110.  
  111. SET total_envio = (subtotal + total_actual);
  112.  
  113. UPDATE envios SET total=total_envio WHERE codventa= NEW.codventa;
  114.  
  115.  
  116. END//
  117. delimiter ;
  118.  
  119. /* by choco */
Advertisement
Add Comment
Please, Sign In to add comment