none
Ayuda con procedure RRS feed

  • Pregunta

  • Buenas tardes, tengo una tabla llamada Proveedor_Producto en la que puedo almacenar el precio actual de un producto. La idea es que al insertar un nuevo precio, el antiguo valor del campo PrecioActual debería pasarse al campo PrecioAnterior1. Y el antiguo valor de PrecioAnterior1 debería pasarse a PrecioAnterior2. Por ejemplo en el caso de la imagen, al yo agregar un nuevo precio actual = 8 en el producto 1 del proveedor 225, los campos deberían quedar: PrecioActual = 8, PrecioAnterior1 = 9, PrecioAnterior2 = 13.

    Actualmente si los 3 campos de precio son NULL el procedure funciona correctamente. Lo mismo si el campo PrecioActual ya tiene un valor y los otros 2 son NULL. Pero cuando solo el campo PrecioAnterior2 es NULL, los campos no se modifican y se queda igual. ¿Alguien podría decirme en donde está mi error?

    procedure: 

    Create procedure Actualiza_Precios_Proveedores
    (
    @PrecioNuevo money,
    @PrecioActual money,
    @PrecioAnterior1 money,
    @IdProducto int,
    @IdProveedor int
    )
    AS
    BEGIN
    BEGIN TRY
    BEGIN TRANSACTION
    Update Proveedor_Producto set PrecioAnterior2 = PrecioAnterior1 
    where PrecioAnterior1 = (Select PrecioAnterior1 from Proveedor_Producto where PrecioAnterior1 = @PrecioAnterior1)
    and IdProducto = @IdProducto and IdProveedor = @IdProveedor
    Update Proveedor_Producto set PrecioAnterior1 = PrecioActual
    where PrecioActual = (Select PrecioActual from Proveedor_Producto where PrecioActual = @PrecioActual)
    and IdProducto = @IdProducto and IdProveedor = @IdProveedor
    Update Proveedor_Producto set PrecioActual = @PrecioNuevo where IdProducto = @IdProducto and IdProveedor = @IdProveedor
    COMMIT TRANSACTION
    END TRY
    BEGIN CATCH
    ROLLBACK TRANSACTION
    END CATCH
    END


    • Editado Manuelrodgzz miércoles, 28 de agosto de 2019 22:35 Error de redacción
    miércoles, 28 de agosto de 2019 22:34

Respuestas

Todas las respuestas