3.3Class Recordset

Data retuned by SQL queries.

Class Recordset

The recordset class abstracts a set of data returned by SQL queries.

Data can be fetched row by row into Falcon arrays or dictionaries by the Recordset.fetch method. In the first case, the value extracted from each column is returned in the corresponding position of the returned array (the first column value at array position [0], the second column value in the array [1] and so on).

When fetching a dictionary, it will be filled with column names and values respectively as the key corresponding value entries.

The Recordset.fetch method can also be used to retrieve all the recordset contents (or part of it) into a Falcon Table.

Returned values can be of various falcon item types or classes; see the dbi_value_types section for further details.

Other than fetching data, the Recordset class can be used to retrieve general informations about the recordset (as the returned column size and names).

Note: Closing the database handle while the recordset is still open and in use may lead to various kind of errors. It's a thing that should be generally avoided.

Methods
discardDiscards one or more records in the recordset.
doCalls back a function for each row in the recordset.
fetchFetches a record and advances to the next.
nextGets the next recordset in queries returning multiple recordsets.

Methods

discard

Discards one or more records in the recordset.

Recordset.discard( count )
count The number of records to be skipped.
Returntrue if successful, false if the recordset is over.

This skips the next count records.

do

Calls back a function for each row in the recordset.

Recordset.do( cb, [item] )
cb The callback function that must be called for each row.
item A fetchable item that will be filled and then passed to cb.
Raise
DBIError if the database engine reports an error.

This method calls back a given cb callable item fetching one row at a time from the recordset, and then passing the data to cb either as parameters or as a single item.

If item is not given, all the field values in the recordset are passed directly as parameters of the given cb function. If it is given, then that item is filled along the rules of Recordset.fetch and then it is passed to the cb item.

The item may be:

The cb method may return an oob(0) value to interrupt the processing of the recordset.

The recordset is not rewinded before starting to call cb. Any previously fetched data won't be passed to cb.

fetch

Fetches a record and advances to the next.

Recordset.fetch( [item],[count] )
item Where to store the fetched record.
count Number of rows fetched when item is a Table.
ReturnThe item passed as a paramter filled with fetched data or nil when the recordset is terminated.
Raise
DBIError if the database engine reports an error.

If item is not given, a newly created array is filled with the fetched data and then returned, otherwise, the given item is filled with the data from the fetch.

The item may be:

next

Gets the next recordset in queries returning multiple recordsets.

Recordset.next()
ReturnAnother recordset on success, nil if this query didn't generate any more recordset.
Raise
DBIError if the database engine reports an error.

Some engines may cause multiple recordsets to be generated after a single query. In that case, this method may be used to retrieve the secondary recordest after the first one has been completed.

When there aren't any more recordset to be fetched, this method returns nil.

The rules to access sub-recorsets may vary depending on the final engine, but usually this can be considered safe:


   rs = dbi.query( "..." )

   // process the query result as usual
   data = [=>]
   while rs.fetch(data)
      // do things
   end

   // process the sub-queries.
   while (sub_rs = rs.next() )
      data = [=>]
      while sub_rs.fetch(data)
         // do more things things
      end
   end

   rs.close()
Made with http://www.falconpl.org