Patent ID: 7849109

Claim:
A client computer system for use in communicating over a network with a second computer system on which a database server is executing the client computer system comprising: a processing unit; an application executing on the processing unit that issues a database query to request a set of results from the database server via the network; a data access layer executing on the processing unit that receives the database query from the application and transforms the database query into a first series of commands that, when executed by the database server, cause the database server to (a) declare a first server cursor within the database using parameters of the database query received from the application, (b) retrieve a specified number of rows by commanding the database server to open the first server cursor and fetch the specified number of rows from a starting position of the first server cursor, (c) close the first server cursor, and (d) de-allocate the first server cursor, wherein commanding the database server to de-allocate the first server cursor avoids state associated with the database query received from the application from being held on the server until a subsequent request by the client computer system for additional results responsive to the database query; the data access layer transmitting the commands of the first series of commands to the database server via the network, receiving the rows specified by the first server cursor from the database server, and returning the rows specified by the first server cursor to the application in response to the query, upon a request for additional results responsive to the database query, the data access layer generating a second series of commands that, when executed by the database server, cause the database server to (a) declare a second server cursor within the database using parameters of the database query received from the application, (b) retrieve a specified number of rows by commanding the database server to open the second server cursor and fetch the specified number of rows from a starting position of the second server cursor, (c) close the second server cursor, and (d) de-allocate the second server cursor; the data access layer transmitting the commands of the second series of commands to the database server via the network, receiving the rows specified by the second server cursor from the database server, and returning the rows specified by the second server cursor to the application in further response to the query, and wherein each of the first and second series of commands is grouped together in a single call and is transmitted to the database server together as part of that single call.