BTW we can use stored procedures in SQL which provides many benefits. It is often forgotten.
Add user-defined table types used as parameters and you've got a good way to pass batches of data too.
EDIT: To those mentioning migrations, note that reviewing migrations are like reviewing patches. Sometimes you want to not review a specific patch but rather look at the whole method, and `blame` a specific line or three to get an idea of what the previous developer's intention was. You can't get that type of overview from reviewing each patch or migration.