Синтаксис DBPROPVAL_SQL_SUBMINIMUM

Требования к драйверу DBPROPVAL_SQL_SUBMINIMUM заключаются в том, что поставщик поддерживает функции DBPROPVAL_SQL_ODBC_MINIMUM со следующими отличиями.

  • Функции, содержащиеся в DBPROPVAL_SQL_ODBC_MINIMUM, но отсутствующие в DBPROPVAL_SQL_SUBMINIMUM:

    инструкции DDL; инструкции INSERT, UPDATE и DELETE; маркеры динамических параметров; несколько таблиц в предложении FROM.

  • Функции, содержащиеся в DBPROPVAL_SQL_SUBMINIMUM, но отсутствующие в DBPROPVAL_SQL_ODBC_MINIMUM:

    псевдонимы столбцов в списке выборки; целые и точные числовые константы предиката IS [NOT] NULL.

Хотя грамматика DBPROPVAL_SQL_SUBMINIMUM задана по отношению к DBPROPVAL_SQL_ODBC_MINIMUM, оптимизатор распределенных запросов SQL Server никогда не проверяет DBPROPVAL_SQL_ODBC_MINIMUM.

В грамматике DBPROPVAL_SQL_SUBMINIMUM применяет следующие соглашения.

Соглашение

Используется для

ВЫДЕЛЕНИЕ ПРОПИСНЫМИ БУКВАМИ

Ключевые слова SQL.

курсив

Пользовательские параметры в синтаксисе SQL.

| (вертикальная черта)

Разделяет элементы синтаксиса внутри квадратных или фигурных скобок. Может быть выбран только один из элементов.

[ ] (квадратные скобки)

Необязательные элементы синтаксиса. Скобки не используются.

(фигурные скобки)

Обязательные элементы синтаксиса. Фигурные скобки не используются.

[,...n]

Указывает на то, что предыдущий элемент может повторяться n раз. Отдельные вхождения разделяются запятыми.

[ ...n]

Указывает на то, что предыдущий элемент может повторяться n раз. Отдельные вхождения разделяются пробелами.

<метка> ::=

Имя синтаксического блока. Это соглашение используется для группирования и метки длинных участков синтаксиса или синтаксических блоков, которые могут использоваться в нескольких местах внутри инструкции. Каждое место, в котором может быть использован синтаксический блок, обозначается меткой, заключенной в угловые скобки: <метка>.

Следующая синтаксическая грамматика DBPROPVAL_SQL_SUBMINIMUM ожидается в SQL Server.

<select_statement> ::=
    SELECT [ALL | DISTINCT] <select_list>
    FROM <table_reference_list>
    [WHERE <search_condition>]
    [<order_by_clause>]

Предложение SELECT

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

<select_sublist> ::=
    <expression> [<alias>]

<alias> ::=          
    <user_defined_name>

Предложение FROM

<table_reference_list> ::=
    <table_reference>

<table_reference> ::=
    <table_name>

<table_name> ::=
    <table_identifier>

<table_identifier> ::=
    <user_defined_name>

Предложение WHERE

<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

<order_by_clause> ::=
    ORDER BY <sort_specification>[,...n]

<sort_specification> ::=
    { | <column_name> } [ASC | DESC]

Общие синтаксические элементы

<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]'

Символ — это любой символ из кодировки поставщика источника данных. Используйте две одинарные кавычки ('') для представления одиночной кавычки (апострофа) в строковом литерале.

<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> ::=
    .