Variable values in Oracle where clause
Just forget all that PL/SQL mess full of incorrect syntax, this is a single query:

with date_dim as 
(
  select 1 as unique_id, 'Week 6, 2018' as week_name, 
    '20180205' as week_begin, '20180211' as week_end from dual union all
  select    1, 'Week 5, 2018', '20180129', '20180204'from dual union all
  select 1, 'Week 4, 2018', '20180122', '20180128'from dual union all
  select 1, 'Week 3, 2018', '20180115', '20180121'from dual 
),
fact as 
(
  select 10001 as acct_id, '20180205' as week_name, 10  as sales from dual union all
  select 10001 as acct_id, '20180206' as week_name, 20  as sales from dual union all
  select 10001 as acct_id, '20180207' as week_name, 10  as sales from dual union all
  select 10001 as acct_id, '20180208' as week_name, 15  as sales from dual union all
  select 1002  as acct_id, '20180129' as week_name, 100 as sales from dual union all
  select 1002  as acct_id, '20180130' as week_name, 100 as sales from dual union all
  select 1002  as acct_id, '20180131' as week_name, 100 as sales from dual union all
  select 1002  as acct_id, '20180132' as week_name, 100 as sales from dual
)
select dd.week_name, sum(f.sales) as sales from date_dim dd
join fact f on (f.week_name between dd.week_begin and dd.week_end)
group by dd.week_name
;


That gives your needed output:

WEEK_NAME         SALES
------------ ----------
Week 5, 2018        400
Week 6, 2018         55