sqldebuggingsnowflake-cloud-data-platform

IF ELSE statement in snowflake


Can someone please help me to debug why the following script cannot run in snowflake? It said it has syntax error inside. Thanks

DECLARE
    current_database STRING;
    current_schema STRING;
BEGIN
    current_database := CURRENT_DATABASE();
    current_schema := CURRENT_SCHEMA();

 IF current_database <> 'DEV' OR current_schema <> 'CONFIG' THEN
     RETURN 'WRONG SCHEMA SELECTED';
     ELSE RETURN 'GOOD'
 END IF;

END;

Solution

  • If needs PARENs, but the big kicker is your return 'good' is missing the semicolon:

    DECLARE
        current_database STRING;
        current_schema STRING;
    BEGIN
        current_database := CURRENT_DATABASE();
        current_schema := CURRENT_SCHEMA();
    
     IF (current_database <> 'DEV' OR current_schema <> 'CONFIG') THEN
         RETURN 'WRONG SCHEMA SELECTED';
         ELSE RETURN 'GOOD';
     END IF;
    
    END;
    

    enter image description here

    It can also be shrank a bit more:

    BEGIN
        let current_database string := CURRENT_DATABASE();
        let current_schema string := CURRENT_SCHEMA();
    
        IF (current_database <> 'DEV' OR current_schema <> 'CONFIG') THEN
            return 'WRONG SCHEMA SELECTED';
        END IF;
        
        return 'GOOD';
    END;
    

    or even to:

    BEGIN
        IF (CURRENT_DATABASE() <> 'DEV' OR CURRENT_SCHEMA() <> 'CONFIG') THEN
            return 'WRONG SCHEMA SELECTED';
        END IF;
        
        return 'GOOD';
    END;