DBPROPVAL_SQL_SUBMINIMUM Syntax

Accessing and Changing Relational Data

Accessing and Changing Relational Data

DBPROPVAL_SQL_SUBMINIMUM Syntax

The requirements for DBPROPVAL_SQL_SUBMINIMUM are that the provider supports the features of DBPROPVAL_SQL_ODBC_MINIMUM, with these differences:

  • Features in DBPROPVAL_SQL_ODBC_MINIMUM, but not in DBPROPVAL_SQL_SUBMINIMUM:

    DDL statements.
    INSERT, UPDATE, and DELETE statements.
    Dynamic parameter markers.
    Multiple tables in the FROM clause.

  • Features in DBPROPVAL_SQL_SUBMINIMUM, but not in DBPROPVAL_SQL_ODBC_MINIMUM:

    Column aliases in the select list.
    Integer and exact numeric constants
    IS [NOT] NULL predicate.

Although the DBPROPVAL_SQL_SUBMINIMUM grammar is defined in relation to DBPROPVAL_SQL_ODBC_MINIMUM, the SQL Server distributed query optimizer never tests for DBPROPVAL_SQL_ODBC_MINIMUM.

The DBPROPVAL_SQL_SUBMINIMUM grammar uses these conventions.

Convention Used for
UPPERCASE SQL keywords.
italic User-supplied parameters in SQL syntax.
| (vertical bar) Separating syntax items within brackets or braces. You can choose only one of the items.
[ ] (brackets) Optional syntax items. Do not type the brackets.
{} (braces) Required syntax items. Do not type the braces.
[,...n] Indicating that the preceding item can be repeated n number of times. Commas separate the occurrences.
[ ...n] Indicating that the preceding item can be repeated n number of times. The occurrences are separated by blanks.
<label> ::= The name for a block of syntax. This convention is used to group and label portions of lengthy syntax or a unit of syntax that can be used in more than one place within a statement. Each location in which the block of syntax can be used is indicated with the label enclosed in chevrons: <label>.

This is the syntax grammar for DBPROPVAL_SQL_SUBMINIMUM, as expected by SQL Server:

<select_statement> ::=

                    SELECT [ALL | DISTINCT] <select_list>

                    FROM <table_reference_list>

                    [WHERE <search_condition>]

                    [<order_by_clause>]

SELECT clause

<select_list> ::=    * | <select_sublist>[,...n]

<select_sublist> ::=

                    expression [<alias>]

<alias> ::=        <user_defined_name>

FROM clause

<table_reference_list> ::=

                    <table_reference>

<table_reference> ::=

                    <table_name>

<table_name> ::=

                    <table_identifier>

<table_identifier> ::=

                    <user_defined_name>

WHERE clause

<search_condition> ::=

                    <boolean_term> [OR <search_condition>]

<boolean_term> ::=

                    <boolean_factor> [AND <boolean_term>]

<boolean_factor> ::=

                    [NOT] <boolean_primary>

<boolean_primary> ::=

                    <comparison_predicate> | <search_condition>

<comparison_predicate> ::=

                    <expression> <comparison_operator> <expression>

                    | <expression> IS [NOT] NULL

<comparison_operator> ::=

                    < | > | <= | >= | = | <>

ORDER BY clause

<order_by_clause> ::=

                    ORDER BY <sort_specification>[,...n]

<sort_specification> ::=

                    { | <column_name> } [ASC | DESC]

Common Syntactic Elements

<expression> ::=

                    <term> | <expression> {+|_} <term>

<term> ::=        <factor> | <term> {*|/} <factor>

<factor>::=        [+|-] <primary>

<primary> ::=    <column_name> | <literal> | (<expression>)

<column_name> ::=

                    [<table_name>].<column_identifier>

<literal> ::=        <character_string_literal>

                    | <integer_literal>

                    | <exact_numeric_literal>

<character_string_literal> ::=

                    '{character}[...n]'

Character is any character in the character set of the provider or data source. Use two single quotation marks ('') to represent a single quotation mark (apostrophe) in the literal string.

<integer_literal> ::=

                    [+|-] <unsigned_integer>

<exact_numeric_literal>::=

                    [+|-] <unsigned_integer> [<period><unsigned_integer]

                    | <period><unsigned_integer>

<column_identifier> ::=

                    <user_defined_name>

<user_defined_name> ::=

                    <letter>[<digit>|<letter>|_][...n]

<unsigned_integer> ::=

                    {<digit>}[...n]

<digit> ::=        0|1|2|3|4|5|6|7|8|9

<letter> ::=        <lower_case_letter>|<upper_case_letter>

<lower_case_letter> ::=

                    a|b|c|d|e|f|g|h|I|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|z

<upper_case_letter> ::=

                    A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|X|Y|Z

<period> ::=        .