Menggunakan SQL sebagai paket ISAM (Indexed Sequential Access Method) yang dimuliakan. Secara khusus, kursor bersarang alih-alih menggabungkan pernyataan SQL menjadi pernyataan tunggal, meskipun lebih besar. Ini juga dianggap sebagai 'penyalahgunaan pengoptimal' karena sebenarnya tidak banyak yang dapat dilakukan pengoptimal. Ini dapat dikombinasikan dengan pernyataan yang tidak disiapkan untuk inefisiensi maksimum:
DECLARE c1 CURSOR FOR SELECT Col1, Col2, Col3 FROM Table1
FOREACH c1 INTO a.col1, a.col2, a.col3
DECLARE c2 CURSOR FOR
SELECT Item1, Item2, Item3
FROM Table2
WHERE Table2.Item1 = a.col2
FOREACH c2 INTO b.item1, b.item2, b.item3
...process data from records a and b...
END FOREACH
END FOREACH
Solusi yang benar (hampir selalu) adalah menggabungkan dua pernyataan SELECT menjadi satu:
DECLARE c1 CURSOR FOR
SELECT Col1, Col2, Col3, Item1, Item2, Item3
FROM Table1, Table2
WHERE Table2.Item1 = Table1.Col2
-- ORDER BY Table1.Col1, Table2.Item1
FOREACH c1 INTO a.col1, a.col2, a.col3, b.item1, b.item2, b.item3
...process data from records a and b...
END FOREACH
Satu-satunya keuntungan untuk versi loop ganda adalah bahwa Anda dapat dengan mudah melihat jeda antara nilai-nilai dalam Table1 karena loop dalam berakhir. Ini bisa menjadi faktor dalam laporan break-control.
Selain itu, pengurutan dalam aplikasi biasanya tidak boleh.