I think Don's right about cursors being used to get the whole rowset, but there was one pl/sql function that I ported in the CR that used two cursors to walk up and down the folder structure in the CR to compute a relative path. That was the only function in the openacs-4 kernel where having a cursor implementation in pg would have been nice - implementing it without cursors was a royal PIA. In general the use of cursors in openacs-4 turned out to be a problem because most of the packages that used them forgot to close them, thus resulting in problems due to leaking cursors.