В зависимости от языка, который вы используете для реализации, вы получите разные результаты.
Некоторые языки возвращают ссылку на объект. Поэтому первый вариант будет делать то, что вы ожидаете, потому что новый объект создается и добавляется в коллекцию со своими собственными значениями.
iterating over a resultset do
create an object
set instance data in object to some resultset data
put object in collection
next
Но если язык просто возвращает ссылку на объект, и вы пытаетесь выполнить второй метод
create an object (x)
iterate over resultset do
set instance data in object (x) to resultset data (returns a reference to x with updated data)
put object in collection (puts a reference to x in collection)
next
Таким образом, после итерации набора результатов вы получите кучу ссылок на один и тот же объект в вашей коллекции со значениями, которые были последними назначенными.