Aleksander Kmetec <aleksander.kmetec@xxxxxxxxx> writes: > We're using the following technique for counting the number of rows in a cursor: > DECLARE instance_cur_1 SCROLL CURSOR FOR > SELECT util.row_number(), * > FROM ( > $LONG_RUNNING_QUERY > ) ss > FETCH LAST IN instance_cur_1; > util.row_number() is a volatile function written in C which simply returns "++internal_counter" every time it is called. This isn't gonna work very well if your query involves sorting, because the SELECT-list is evaluated before the sort step ... regards, tom lane