<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_ships_that_have_variations(db_connection):
 """ Gets a list of all published ship type IDs that have at least 3 variations. :return: :rtype: list """


    if not hasattr(get_ships_that_have_variations, '_results'):
        sql = 'CALL get_ships_that_have_variations();'
        results = execute_sql(sql, db_connection)
        get_ships_that_have_variations._results = results

    return get_ships_that_have_variations._results