I'm trying to store strings and concatenate using variables in my sql code but I keep getting errors. This is what I tried:
DECLARE 
    ENV VARCHAR(9999);
    MV  VARCHAR(999);
    MVNAME VARCHAR(999) := 'TEST2';
BEGIN
    -- GET ENVIRONMENT
    SELECT sys_context('USERENV','DB_NAME')
    INTO ENV
    FROM DUAL;
    MV := 'CREATE MATERIALIZED VIEW' || MVNAME ||
            'COMPRESS
            NOLOGGING
            PARTITION BY HASH (DATAID)
            PARTITIONS 16
            PARALLEL
            BUILD IMMEDIATE
            USING INDEX 
            REFRESH 
            NEXT trunc(SYSDATE, ''hh'') + 1/24        
            FAST 
            WITH ROWID 
            USING DEFAULT LOCAL ROLLBACK SEGMENT 
            ENABLE QUERY REWRITE AS ';
    IF ENV = 'CSTMP' THEN
        execute immediate MV || 'SELECT count(m.work_ownerid)
                        FROM MV_WWORK_SHRUNK m
                        WHERE WORK_STATUS = 2';   
    ELSIF ENV = 'PROD' THEN
        execute immediate MV || 'SELECT count(m.work_ownerid)
                        FROM MV_WWORK_SHRUNK m
                        WHERE WORK_STATUS = 2';             
    ELSE
        execute immediate MV || 'SELECT count(m.work_ownerid)
                        FROM MV_WWORK_SHRUNK m
                        WHERE WORK_STATUS = 2';
    END IF;
END;
 
    