Two mistakes, both easily fixable.
First, sum is a PL/SQL keyword - you shouldn't use it as a variable name. You can change it to something like sum_ (with a trailing underscore), or l_sum ("l" to suggest "local variable"), etc.
Second, n%i is the modulo notation in other languages; PL/SQL uses mod(n, i).
Make these two changes and your code will work.
If you care to, you can make the code more efficient by looping from 1 to n/2 - but that's just math, it has nothing to do with "coding".
You are also doing a few other odd things. If you start with n > 0 (which you must - the Aliquot sequence only makes sense for positive integers), the updated value of n (after the inner loop) will always be greater than 0.
Worse: while some Aliquot sequences end in 1, not all do. Some end in a perfect number (for example if the input itself is a perfect number). Some sequences become periodic, with a period of 2 or more. It is also not known whether all Aliquot sequences are eventually periodic (ending in 1, in a perfect number, or a cyclical sequence of period 2 or more). So, to avoid trouble, you should put a limit to how far the computation may continue. (This is also "just math" but it does have a direct bearing on the coding too.)