OK so this is the example where the cursor is being used :
The screen in question creates a row in a table called dinner. There is a child table called dinner_item which will hold all of the dinner items.
In the meta data we define for each type of dinner, what the default set of dinner items are.
So for cooked breakfast we have :
Fried tomato
Bacon
Beans
Sausage
Mushrooms
So when we create a dinner row, we want to automajically populate the dinner items from the meta data. So the cursor would open the list of dinner_items from the meta data, and then pop one row in the dinner_item table.
It could be done from the application layer, but this would not only perform better but would be easier to change the stored procedure than rush out a new version of the app.
The stored procedure debate trundles on, but we were forced into using stored procs as Oracle doesn't have an identity field, so we need to use sequences so this is all wrapped up in the insert stored proc, and the new id value returned as an output variable.