How to create stored procedure for loop and queries?

I want to do query optimization. Here is my query with for loop. I need to create Procedure for this query. I am totally confused on how to create procedure.

$interval = $start->diff($end);
$period = $interval->format('%a');
$start_date = $start->format('Y-m-d');
$end_date = $end->format('Y-m-d');

$dsqls="";
for($i = $period; $i >=0;  $i--){
    if ($i == $period){
        $dsqls .= "SELECT  '$start_date' as click_date 
                   union all ";
    }else{
        if($i==0){
            $dsqls .= "SELECT date_sub('$end_date', interval $i day) as click_date ";
        }else{
            $dsqls .= "SELECT date_sub('$end_date', interval $i day) as click_date 
                        union all ";
        }   
    }
}

$sql ="select a.click_date,DATE_FORMAT(a.click_date,'%e') as nameday,
                ifnull(b.count,0) as count
        from ($dsqls) a 
            left join (
                  select date(created_at) as datetime, count(*) as count
                  from enquiries where delete_status='0'
                  group by date(created_at)
                ) b on a.click_date = b.datetime";

Does I want to create procedure for this full query or shall I only create procedure for loop and call procedure here. Is this possible? Pls give me ideas.