• Suggest adding:

    SET @mSQL1 = 'TRUNCATE TABLE dbo.DBRoles'

    EXECUTE (@mSql1)

    After the initial DECLARE's to clear out the table if you run the Proc more than once.  (Assumes you created the table under dbo). (Chose dynamic SQL in keeping with the style of the proc.)

    Alternativey, you may want to include some "NOT EXISTS" logic to prevent adding duplicate role information, assuming the cur_date field enables you to track changes over time.