The driver supports returning parameter metadata for Select statements that contain parameters in ANSI SQL 92 entry-level predicates, for example, such as COMPARISON, BETWEEN, IN, LIKE, and EXISTS predicate constructs. Refer to the ANSI SQL reference for detailed syntax.

Parameter metadata can be returned for a Select statement if one of the following conditions is true:

  • The statement contains a predicate value expression that can be targeted against the source tables in the associated FROM clause. For example:
    SELECT * FROM FOO WHERE BAR > ?

    In this case, the value expression "BAR" can be targeted against the table "FOO" to determine the appropriate metadata for the parameter.

  • The statement contains a predicate value expression part that is a nested query. The nested query's metadata must describe a single column. For example:
    SELECT * FROM FOO WHERE (SELECT X FROM Y    WHERE Z = 1) < ?

The following Select statements show further examples for which parameter metadata can be returned:

SELECT COL1, COL2 FROM FOO WHERE COL1 = ? AND COL2 > ?
SELECT ... WHERE COLNAME = (SELECT COL2 FROM T2 WHERE COL3 = ?)
SELECT ... WHERE COLNAME LIKE ?
SELECT ... WHERE COLNAME BETWEEN ? AND ?
SELECT ... WHERE COLNAME IN (?, ?, ?)
SELECT ... WHERE EXISTS(SELECT ... FROM T2 WHERE COL1 < ?)

ANSI SQL 92 entry-level predicates in a WHERE clause containing GROUP BY, HAVING, or ORDER BY statements are supported. For example:

SELECT * FROM T1 WHERE COL = ? ORDER BY 1

Joins are supported. For example:

SELECT * FROM T1,T2 WHERE T1.COL1 = ?

Fully qualified names and aliases are supported. For example:

SELECT A, B, C, D FROM T1 AS A, T2 AS B WHERE A.A = ? AND B.B = ?