CREATE FUNCTION [f_calc_capacity]
( 
   @p_einh_tag NUMERIC(8, 2),
   @p_berechnung3 NUMERIC(8, 2) = 0,
   @p_wert3       NUMERIC(8, 2) = 0, 
   @p_einheit3    VARCHAR       = 'h', 
   @p_faktor_be3  NUMERIC(8, 2) = 1, 
                           
   @p_berechnung4 NUMERIC(8, 2) = 1,
   @p_wert4       NUMERIC(8, 2) = 0, 
   @p_einheit4    VARCHAR       = 'h', 
   @p_faktor_be4  NUMERIC(8, 2) = 1, 
                           
   @p_berechnung5 NUMERIC(8, 2) = 0, 
   @p_wert5       NUMERIC(8, 2) = 0, 
   @p_einheit5    VARCHAR       = 'h', 
   @p_faktor_be5  NUMERIC(8, 2) = 1
)
RETURNS NUMERIC(8, 2)
AS 
BEGIN		   
	DECLARE
         @v_result       NUMERIC(8, 2),
         @wert_std       NUMERIC(8, 2),
         @berechnungstyp NUMERIC(8, 2),
         -- Default Values, falls Parameter als NULL geliefert werden
         @einh_tag       NUMERIC(8, 2) = 8,
         @berechnung3    NUMERIC(1)    = 0,
         @berechnung4    NUMERIC(1)    = 1,
         @berechnung5    NUMERIC(1)    = 0,
         @wert3          NUMERIC(8,2)  = 0,
         @wert4          NUMERIC(8,2)  = 0,
         @wert5          NUMERIC(8,2)  = 0,
         @einheit3       VARCHAR(2)    = 'h',
         @einheit4       VARCHAR(2)    = 'h',
         @einheit5       VARCHAR(2)    = 'h',
         @faktor_be3     NUMERIC(8,2)  = 1,
         @faktor_be4     NUMERIC(8,2)  = 1,
         @faktor_be5     NUMERIC(8,2)  = 1;
	
    -- Default Values überschreiben, falls Parameter Werte geliefert wurden
    if @p_einh_tag is not null 
    begin 
        set @einh_tag = @p_einh_tag;
    end
    
    if @p_berechnung3 is not null
    begin
        set @berechnung3 = @p_berechnung3;
    end
    
    if @p_berechnung4 is not null
    begin
        set @berechnung4 = @p_berechnung4;
    end
    
    if @p_berechnung5 is not null
    begin
        set @berechnung5 = @p_berechnung5;
    end
    
    if @p_wert3 is not null
    begin
        set @wert3 = @p_wert3;
    end
    
    if @p_wert4 is not null
    begin
        set @wert4 = @p_wert4;
    end
    
    if @p_wert5 is not null
    begin
        set @wert5 = @p_wert5;
    end
    
    if @p_einheit3 is not null
    begin
        set @einheit3 = @p_einheit3;
    end
    
    if @p_einheit4 is not null
    begin
        set @einheit4 = @p_einheit4;
    end
    
    if @p_einheit5 is not null
    begin
        set @einheit5 = @p_einheit5;
    end
    
    if @p_faktor_be3 is not null
    begin
        set @faktor_be3 = @p_faktor_be3;
    end
    
    if @p_faktor_be4 is not null
    begin
        set @faktor_be4 = @p_faktor_be4;
    end
    
    if @p_faktor_be5 is not null
    begin
        set @faktor_be5 = @p_faktor_be5;
    end
    
    set @v_result = @einh_tag;
    
    --------------------------------------------
    
    if @einheit3 = 'h'
    begin
        set @wert_std = @wert3;
    end
    else if @einheit3 = 'T'
    begin
        set @wert_std = @wert3 * @faktor_be3;
    end
    else
    begin
        set @wert_std = @wert3 / 100 * @einh_tag;
    end
    
    if @berechnung3 = 0
    begin
        set @berechnungstyp = -1;
    end
    else
    begin
        set @berechnungstyp = 1;
    end
    
    set @v_result = @v_result + (@wert_std * @berechnungstyp)
    
    -------------------------
    
    if @einheit4 = 'h'
    begin
        set @wert_std = @wert4;
    end
    else if @einheit4 = 'T'
    begin
        set @wert_std = @wert4 * @faktor_be4;
    end
    else
    begin
        set @wert_std = @wert4 / 100 * @einh_tag;
    end
    
    if @berechnung4 = 0
    begin
        set @berechnungstyp = -1;
    end
    else
    begin
        set @berechnungstyp = 1;
    end
    
    set @v_result = @v_result + (@wert_std * @berechnungstyp)

    -------------------------
    
    if @einheit5 = 'h'
    begin
        set @wert_std = @wert5;
    end
    else if @einheit5 = 'T'
    begin
        set @wert_std = @wert5 * @faktor_be5;
    end
    else
    begin
        set @wert_std = @wert5 / 100 * @einh_tag;
    end
    
    if @berechnung5 = 0
    begin
        set @berechnungstyp = -1;
    end
    else
    begin
        set @berechnungstyp = 1;
    end
    
    set @v_result = @v_result + (@wert_std * @berechnungstyp)
    
    -------------------------
    
	RETURN @v_result

END;

