Rogue Wave banner
Previous fileTop of DocumentContentsIndexNext file

2.4 Expressions

Although all DBTools.h++ access libraries are implemented through the same interface, there are still differences in the parameters that must be passed to certain expressions. The following section outlines the differences in the ODBC access library.

2.4.1 Table and Column Names

DBTools.h++ does not place a restriction on the length of table names or column names, but, for optimum portability, object names should be chosen to meet the constraints of all ODBC drivers with which the application is likely to run. In the tutorials shipped with DBTools.h++, for example, all table names are 8 letters or less and all column names are 10 letters or less. This allows them to comply with the requirements of certain single tier drivers.

2.4.2 Global Functions

DBTools.h++ provides a predefined set of global functions, which allow an application to build portable SQL expressions.

Whenever possible, the access library for ODBC implements each global function through an escape sequence provided by the ODBC API. If the ODBC API does not supply an escape sequence analogous to the DBTools.h++ global function, default syntax from the core library is used. This default syntax may or may not be accepted by the underlying ODBC driver. As the ODBC API matures and ODBC drivers become more compliant, more of them will use the standard ODBC escape sequences.

Table 4 lists the ODBC escape sequences or the DBTools.h++ default syntax.

Table 4 -- Restrictions on the use of global functions with RWDBExpr

 
FunctionRestrictions
rwdbAvg(const RWDBExpr&)
None. Corresponds to: AVG(expr)
rwdbCast(const RWDBExpr&,
const RWDBValue&)

None. Corresponds to:
{fn CONVERT(expr, expr)}
rwdbCast(const RWDBExpr&,
const RWDBValue&,
const RWDBExpr&)

Same as the two-expression form, as ODBC does not support this form.
rwdbCast(const RWBDExpr&,
const RWDBValue&,
const RWDBExpr&,
const RWDBExpr&)

Same as the two-expression form, as ODBC does not support this form.
rwdbCharLength(const RWDBExpr&)
None. Corresponds to: {fn LENGTH(expr)}
rwdbCount(*)
None. Corresponds to: COUNT(*)
rwdbCount(const RWDBExpr&)
None. Corresponds to: COUNT(expr)
rwdbCountDistinct(const RWDBExpr&)
None. Corresponds to:
COUNT(DISTINCT expr)
rwdbCurrentUser()
None. Corresponds to: {fn USER ()}
rwdbExists(const RWDBSelectorBase&)
None. Corresponds to: EXISTS sel
rwdbLower(const RWDBExpr&)
None. Corresponds to: {fn LCASE(expr)}
rwdbMax(const RWDBExpr&)
None. Corresponds to: MAX(expr)
rwdbMin(const RWDBExpr&)
None. Corresponds to: MIN(expr)
rwdbName(const RWCString&,
const RWDBExpr&)

None. Corresponds to: expr = expr
rwdbPosition(const RWDBExpr&,
const RWDBExpr&)

None. Corresponds to:
{fn LOCATE(expr, expr)}
rwdbSessionUser()
None. Corresponds to: {fn USER() }
rwdbSubString(const RWDBExpr&,
const RWDBExpr&)

None. Corresponds to:
{fn SUBSTRING
(expr0, expr1, fn LENGTH(expr0))}

rwdbSubString(const RWDBExpr&,
const RWDBExpr&,
const RWDBExpr&)

None. Corresponds to:
{fn SUBSTRING(expr0, expr1, expr2)}
rwdbSum(const RWDBExpr&)
None. Corresponds to: SUM(expr)
rwdbSystemDateTime()
None. Corresponds to: { fn NOW() }
rwdbSystemUser()
None. Corresponds to: { fn USER() }
rwdbTrimLeading(const RWDBExpr&,
const RWDBExpr&)

None. Default from the core library:
TRIM(LEADING expr FROM expr)
rwdbTrimTrailing(const RWDBExpr&,
const RWDBExpr&)

None. Default from the core library:
TRIM(TRAILING expr FROM expr)

rwdbTrimBoth(const RWDBExpr&,
const RWDBExpr&)

None. Default from the core library:
TRIM(BOTH expr FROM expr)
rwdbUpper(const RWDBExpr&)
None. Corresponds to: {fn UCASE(expr)}


Previous fileTop of DocumentContentsIndexNext file

©Copyright 2000, Rogue Wave Software, Inc.
Contact Rogue Wave about documentation or support issues.