• Data Warehouse Service

dws
  1. Help Center
  2. Data Warehouse Service
  3. Developer Guide
  4. Stored Procedures
  5. Control Statements
  6. Conditional Statements

Conditional Statements

Conditional statements are used to decide whether given conditions are met. Operations are executed based on the decisions made.

DWS supports five usages of IF:

  • IF_THEN
    Figure 1 IF_THEN::=

    IF_THEN is the simplest form of IF. If the condition is true, statements are executed. If it is false, they are skipped.

    Example

    IF v_user_id <> 0 THEN
        UPDATE users SET email = v_email WHERE user_id = v_user_id;
    END IF;
  • IF_THEN_ELSE
    Figure 2 IF_THEN_ELSE::=

    IF-THEN-ELSE statements add ELSE branches and can be executed if the condition is false.

    Example

    IF parentid IS NULL OR parentid = ''
    THEN
        RETURN;
    ELSE
        hp_true_filename(parentid); -- Call the stored procedure.
    END IF;
  • IF_THEN_ELSE IF

    IF statements can be nested in the following way:

    IF sex = 'm' THEN
        pretty_sex := 'man';
    ELSE
        IF sex = 'f' THEN
            pretty_sex := 'woman';
        END IF;
    END IF;

    Actually, this is a way of an IF statement nesting in the ELSE part of another IF statement. Therefore, an END IF statement is required for each nesting IF statement and another END IF statement to end the parent IF-ELSE statement. To set multiple options, use the following form:

  • IF_THEN_ELSIF_ELSE
    Figure 3 IF_THEN_ELSIF_ELSE::=

    Example

    IF number_tmp = 0 THEN
        result := 'zero';
    ELSIF number_tmp > 0 THEN 
        result := 'positive';
    ELSIF number_tmp < 0 THEN
        result := 'negative';
    ELSE
        result := 'NULL';
    END IF;
  • IF_THEN_ELSEIF_ELSE

    ELSEIF is an alias of ELSIF.

    Example
    CREATE OR REPLACE PROCEDURE proc_control_structure(i in integer) 
    AS
        BEGIN
            IF i > 0 THEN
                raise info 'i:% is greater than 0. ',i; 
            ELSIF i < 0 THEN
                raise info 'i:% is smaller than 0. ',i; 
            ELSE
                raise info 'i:% is equal to 0. ',i; 
            END IF;
            RETURN;
        END;
    /
    
    CALL proc_control_structure(3);
    
    -- Delete the stored procedure:
    DROP PROCEDURE proc_control_structure;