With the DataServer, cursor repositioning will work with an Oracle database the same as it does with ABL, except when the Oracle Database Manager fails to find a record. In ABL, the cursor is located after the last record that was read. In Oracle, a failed search does not affect the cursor. For example, if a cursor is positioned at custnum 50 and a request to find customer "smith" in an Oracle table fails, the cursor remains at custnum 50. The same failed request from an ABL table places the cursor after the last customer read trying to find customer "smith."
The DataServer repositions only cursors used by FIND NEXT/PREV/CURRENT statements. Cursors are never repositioned for FOR EACH statements, new queries, or dynamic FINDs. When the DataServer instructs the Oracle RDBMS to perform a join (JOIN-BY-SQLDB), the cursor that the join uses does not reposition other cursors in use by the query. The cursor for DEFINE QUERY or dynamic FIND statements does not reposition cursors in other queries.