Progress
DataServer
for ODBC Guide


Unsupported 4GL Statements

The DataServer supplies you with complete Progress functionality when accessing ODBC data sources. Nearly all 4GL language elements (statements, functions, and so forth) and Progress Data Dictionary features work the same whether your application accesses a data source through the DataServer or a Progress database.

Use the DBRESTRICTIONS function to find out which Progress features your ODBC data sources or specific tables in those data sources do not support. For the DataServer for ODBC, DBRESTRICTIONS can return SETUSERID, SET–CURRENT–VALUE, and COUNT–OF. In certain circumstances, it can return additional values:

See the DBRESTRICTIONS function reference entry in the Progress Language Reference for information on syntax.

Table 2–8 summarizes the 4GL differences between Progress databases and ODBC data sources.

Table 2–8: 4GL Differences for Progress Databases and ODBC Data Sources
Progress Feature
ODBC Data-source Difference
BEGINS operator
Abbreviated Index
USING option
When you use these 4GL elements to access data in an ODBC data source, you might get different results than from a Progress database. Suppose, for example, that you have customers named SI and SIM and that you issue this find statement:
FIND customer WHERE name BEGINS "SI".
Progress returns the customer named SI. With the DataServer, the find fails because the FIND statement is ambiguous. You receive the same results when you use an abbreviated index or the USING option in your query.
CONTAINS operator
This operator relates to word indexing, which the DataServer does not support.
COUNT–OF function
The DataServer does not support this function.
CREATE statement
Records that you create after opening a cursor might be invisible to that cursor.
CURRENT–VALUE statement
The DataServer for ODBC can retrieve CURRENT–VALUE if the data source supports the Progress Compatibility dictionary feature.
FIND statements
FOR EACH statements
OPEN QUERY statement
To reduce the number of records included in the results set, qualify your FIND statements and queries with a WHERE clause.
MATCHES function
BEGINS function
The DataServer does not support using the percent (%) or underscore (_) character with the MATCHES and BEGINS functions. Do not use these functions with a pattern that is not an expression, but is stored in an ODBC data source.
It is theoretically possible to do this with a Progress database, but using this kind of criteria results in poor performance.
NO–LOCK option1
SHARE–LOCK option
EXCLUSIVE–LOCK option
A Progress EXCLUSIVE-LOCK is emulated in the ODBC DataServer. A Progress NO-LOCK can be emulated in the ODBC database when the isolation level is set to read-uncommitted. SHARE-LOCK behavior is data-source and isolation-level dependent. See the section "Data Source Record Locking" for more information.
NULL
ODBC data source NULL = Progress unknown value("?")

Progress NULL (empty string) =
one space in ODBC data source

The ODBC data source does not distinguish between a zero-length character string and a string that contains only blank spaces.
Record creation
In an ODBC data source, a record is created at the end of a record’s scope and not when the required index information becomes available.
SETUSERID function
You cannot use this function to change the login name and password of an ODBC data source.
  1. For more information, see the "Data Source Record Locking" section.


Copyright © 2004 Progress Software Corporation
www.progress.com
Voice: (781) 280-4000
Fax: (781) 280-4095