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 语法使用下列约定。

约定

适用对象

UPPERCASE

SQL 关键字。

斜体

SQL 语法中用户提供的参数。

|(竖线)

分隔括号或大括号中的语法项。只能选择其中一项。

[ ](方括号)

可选语法项。不要键入方括号。

{ }(大括号)

必选语法项。不要键入大括号。

[,...n]

指示上一项可以重复 n 次。用逗号分隔每一项。

[ ...n]

指示上一项可以重复 n 次。每一项由空格分隔。

<label> ::=

语法块的名称。此约定用于对可在语句中的多个位置使用的较长语法或语法单元部分进行分组和标记。可使用的语法块的每个位置由括在尖括号内的标签指示:<label>。

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