Interface GL Daily Rates

create or replace package xxdmgl_daily_rates_pkg
is
   procedure xxdmgl_daily_rates_p 
                    (retcode out number, 
                     errbuff out varchar2,
                     p_from_date date,
                     p_to_date date);
end xxdmgl_daily_rates_pkg;


create or replace package body xxdmgl_daily_rates_pkg
is
   procedure procedure xxdmgl_daily_rates_p 
                       (retcode out number, 
                        errbuff out varchar2,
                        p_from_date date,
                        p_to_date date)
   is
      cursor c1
      is
         select *
           from xxdmgl_daily_rates_t;
         
        

   begin
      for i in c1
      loop
         insert into gl_daily_rates_interface (from_currency,
                                               to_currency,
                                               from_conversion_date,
                                               to_conversion_date,
                                               user_conversion_type,
                                               conversion_rate,
                                               mode_flag)
              values (i.from_currency,
                      i.to_currency,
                      p_from_date,
                      p_to_date,
                      I.conversion_type,
                      i.conversion_rate,
                      'I');
      end loop;
   end;
end xxdmgl_daily_rates_pkg;


DECLARE
retcode VARCHAR2(222);
errbuff VARCHAR2(222);
BEGIN
xxdmgl_daily_rates_pkg. xxdmgl_daily_rates_p (retcode,errbuff ,sysdate,sysdate);
COMMIT;
END;



SELECT * FROM GL_DAILY_RATES  where trunc(CONVERSION_DATE)=trunc(sysdate);

Check valid Email ID

function xxdm_prvd_valid_email_f(p_email varchar2)
   return varchar2
   is
   lv_emails varchar2(3000);
   begin
  
           select substr (sys_connect_by_path (email , ','), 2) emails into lv_emails
           from (select email,row_number () over (order by email ) rn,
           count (*) over () cnt
          from
        (
        select regexp_substr(p_email,'[^,]+', 1, level) email  from dual
        connect by  regexp_substr(p_email,'[^,]+', 1, level) is not null
        )
        where regexp_like (email,'^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$')
        )
        where rn = cnt
        start with rn = 1
        connect by rn =  prior rn + 1;
       
        return lv_emails;
  
   exception
   when others then
     return null;
  
   end xxdm_prvd_valid_email_f;