The SELECTMODE parameter allows the query author to declare the format of the values returned by the query.
It is the responsibility of the query implementation to properly format the values according to the SELECTMODE
value. If SELECTMODE is RUNTIME then the query implementation has to examine the current runtime setting and react
accordingly. The current runtime SELECTMODE value can be retrieved by calling $system.SQL.GetSelectMode(). The default value
of SELECTMODE is LOGICAL to preserve compatibility with older implementations.
REMEMBER - it is only a declaration and the implementation of the query is responsible for properly formatting the column
values in a manner consistent with the SELECTMODE setting.
qHandle is query-defined data and is typically updated by Fetch.
The Fetch method should set Row to be a $List of
values corresponding to the columns of the query. If we are past the end of the data
and no row is returned, Row should be set to null string ("").
If the non-empty row being returned is the last one, AtEnd could be
optionally set to 1, indicating that an additional call to Fetch may be avoided.
Row may also be subscripted. If any of the columns in the row are stream orefs
then the oref type information is lost in the Row $list encoded value. To retain
the oref type, place the oref into Row(0,columnNumber). %Library.ResultSet recognizes
this form and will extract the column value as the subscripted value.
FetchRows returns the next FetchCount rows in the query and updates handle for subsequent operations.
FetchCount is the number of rows to fetch. If FetchCount is zero then up to 24k of row data is
returned. ReturnCount contains the number of rows returned and AtEnd is true if there are no more
rows to be fetched. This method does not preserve swizzled streams.
Prepare the query for execution. For static queries, this method probably just
returns $$$OK. For dynamic queries this method will set up the information
returned by GetInfo. It is used by the various ResultSet objects.