Ver Mensaje Individual
  #2  
Antiguo 01-02-2006
cuburu cuburu is offline
Miembro
 
Registrado: mar 2005
Posts: 63
Reputación: 20
cuburu Va por buen camino
Quizas deberías de reestruturar tu código un poco:

Código:
CREATE PROCEDURE BAJAR_COMBO (
                                                 KEY_VIENE INTEGER,
                                                 KEY_CAB INTEGER,
                                                 KEY_PRODUCTO INTEGER,
                                                 CANTID NUMERIC(15,2))
AS
  DECLARE VARIABLE KEY_PRODUB INTEGER;
  DECLARE VARIABLE KEY_PROD INTEGER;
  DECLARE VARIABLE PCOSTO NUMERIC(15,4);
  DECLARE VARIABLE BAJAR_CANTIDAD NUMERIC(15,2);
  DECLARE VARIABLE PRECIO_ULT NUMERIC(15,4);
  DECLARE VARIABLE PRECIOA NUMERIC(15,4);
  DECLARE VARIABLE PRECIOB NUMERIC(15,4);
  DECLARE VARIABLE PRECIOC NUMERIC(15,4);
begin
/* Procedure Text */
FOR SELECT pc.key_producto,pc.key_producto_b,(pc.cantidad*:cantid) Bajar, p.pre_cos, p.precio_uing, p.precioa, p.preciob, p.precioc
FROM pdet_compuesto pc inner join producto p 
                 on pc.Key_Producto = p.key_producto
WHERE p.key_producto = :key_producto
INTO :KEY_PROD, :KEY_PRODUB, :BAJAR_CANTIDAD, :PCOSTO, :PRECIO_ULT, :PRECIOA, :PRECIOB, :PRECIOC do
BEGIN
  Update producto set saldo_fac = saldo_fac - :Bajar_cantidad
  Where key_producto = :Key_prod;

/* Se da de baja a las bodegas*/
  Update producto_bodega set cantidad = cantidad - :Bajar_cantidad
  Where key_producto_b = :Key_produb;

/* Se Ingresa a los Historicos */
  Insert Into His_mov(key_producto_b, Key_viene, viene_de, tp_mov, key_cabeza, cod_transac, key_caja, fecha_sys, cantidad, subtotal, pre_cos, Pre_uing, PrecioA, PrecioB, Precioc, saldo)
Values(:KEY_PRODUB, :KEY_viene, 'E', -1, :KEY_CAB, 'VEN', null, 'Now', :BAJAR_CANTIDAD, 1, costo, :PRECIO_ULT, :PRECIOA, :PRECIOB, :PRECIOC, 0);
END
suspend;
end
pues no encuentro un verdadero problema para ello, quizas no he revisado bien pero creo que ncesesitas reestructurar un poco tus consultas. He notado que utilizas producto cartesiano para ello en lugar de un inner join. Quizas enviandonos las estructuras de las tablas te pueda ayudar alguien del foro.

Suerte.
Responder Con Cita