none
¿Como puede hacer un procedimiento alamacenado , con datos de entrada y de salida para insertarlos en una columna de una tabla? RRS feed

  • Pregunta

  • Cree un procedimiento almacenado llamado que recibe el id de un alquiler y el monto a pagar (@pmonto) , debe hacer lo siguiente

    a Al costo del apartamento asociado al alquiler debitarle el @pmonto b. Si el resultado es menor o igual a 0, el saldo debe actualizar el saldo y colocarlo en 0 y el estado en ‘c’ c. Si el resultado es mayor a 0, el saldo debe ser actualizado con el resultado y el estado debe colocarse en ‘p’

    sábado, 27 de abril de 2019 5:46

Respuestas

  • Hola vorkuz:

    Puede ser algo similar a esto

    create procedure miProcedure (
        @pmonto decimal(12,2),
        @idApartamento int
        /* definir el tipo de parametro*/
    )
    
    as
    begin
        declare @montoActual float;
    
        set @montoActual = (select saldo from apartamento where ID = @idApartamento);
        /* buscamos el monto actual */
    
        if (@pmonto < @montoActual) /* en función de la evaluacion */
        begin
        /* aplico una udpate */
    	   update apartamento set saldo = 0, estado = 'c'where ID=@idApartamento
        end
        else
        begin
        /* o otra resto el pmonto del saldo actual.  -= */
    	   update apartamento set saldo -= @pmonto, estado ='p' where Idapartamento=@idApartamento
        end
    end
    
    /* opción 2 más compacta */
    
    create procedure miProcedure2 (
        @pmonto decimal(12,2),
        @idApartamento int
        /* definir el tipo de parametro*/
    )
    
    as
    begin
        update apartamento set saldo = (case when @pmonto > saldo then saldo - @pmonto
    								 else 0 end),
    					   estado = (case when @pmonto > saldo then 'p' 
    								   else 'c' end)
         where Idapartamento=@idApartamento
      /* utilizando case para las columnas */
    end
    

    Create procedure

    https://docs.microsoft.com/es-es/sql/t-sql/statements/create-procedure-transact-sql?view=sql-server-2017

    Case

    https://docs.microsoft.com/es-es/sql/t-sql/language-elements/case-transact-sql?view=sql-server-2017

    • Marcado como respuesta Vorkuz sábado, 27 de abril de 2019 6:21
    sábado, 27 de abril de 2019 6:05

Todas las respuestas