Source: https://www.oracle.com/technetwork/database/features/plsql/overview/sample2174ch2-129586.pdf