From e332aaa338b7754566121873a86485d23d4ba104 Mon Sep 17 00:00:00 2001 From: Ron Savage Date: Sun, 5 Feb 2017 12:31:06 +1100 Subject: [PATCH 01/33] Set theme jekyll-theme-merlot --- _config.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 _config.yml diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..c50ff38 --- /dev/null +++ b/_config.yml @@ -0,0 +1 @@ +theme: jekyll-theme-merlot \ No newline at end of file From 5500ccd449f0a98ba78ae084e2a55e70f354e464 Mon Sep 17 00:00:00 2001 From: Jonathan Leffler Date: Sat, 4 Feb 2017 22:00:03 -0800 Subject: [PATCH 02/33] Create README.md file Convert the index.html file to Markdown file. --- README.md | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..18c0be7 --- /dev/null +++ b/README.md @@ -0,0 +1,84 @@ +# BNF Grammars for SQL-92, SQL-99 and SQL-2003 + + +## SQL-92 + +The file [`sql-92.bnf.html`](sql-92.bnf.html) is a heavily hyperlinked HTML +version of the BNF grammar for SQL-92 (ISO/IEC 9075:1992 - Database Language - +SQL). + +The plain text file [`sql-92.bnf`](sql-92.bnf), from which it was +automatically converted, is more useful (read legible) for reading +without a browser. + +## SQL-99 + +The file [`sql-99.bnf.html`](sql-99.bnf.html) is a heavily hyperlinked HTML +version of the BNF grammar for SQL-99 (ISO/IEC 9075-2:1999 - Database +Languages - SQL - Part 2: Foundation (SQL/Foundation)). + +The plain text file [`sql-99.bnf`](sql-99.bnf), from which it was +automatically converted, is more useful (read legible) for reading +without a browser. + +## SQL-2003 + +The file [`sql-2003-2.bnf.html`](sql-2003-2.bnf.html) is a heavily hyperlinked HTML +version of the BNF grammar for SQL-2003 (ISO/IEC 9075-2:2003 - Database +Languages - SQL - Part 2: Foundation (SQL/Foundation)). + +The plain text file [`sql-2003-2.bnf`](sql-2003-2.bnf), from which it was +automatically converted, is more useful (read legible) for reading +without a browser. + + +There is a separate file [`sql-2003-1.bnf.html`](sql-2003-1.bnf.html) for +the information from ISO/IEC 9075-1:2003 - Database Languages - SQL - Part +1: Framework (SQL/Framework). + +It was automatically converted from the plain text file [`sql-2003-1.bnf`](sql-2003-1.bnf), +which is more useful (read legible) for reading without a browser. + + +Also available: + +
  • SQL 2003 Core Features
  • +
  • SQL 2003 Non-Core Features
  • +
    + +## Informix OUTER Join Syntax + +The file [`outer-joins.html`](outer-joins.html) is an explanation of the +non-standar Informix OUTER join syntax and semantics. + +## Conversion tools + + +The plain text was converted to HTML by the Perl script +[`bnf2html`](bnf2html.perl.txt) which you may use if you wish. +The `bnf2html` script also uses the C program +WEBCODE version 1.09 +which you can download as a [gzipped tar file](webcode-1.09.tgz). + +See also [`bnf2yacc`](bnf2yacc.perl.txt), an experimental +script to convert BNF into an outline Yacc grammar. +The generated grammar typically includes some unacceptable tokens, such +as _`%token 0`_, that should be handled by the lexical analyzer +rather than the grammar. +The SQL standard includes such rules as grammar rules; consequently, you won't +get a clean Yacc grammar from the SQL BNF files. + +_(The Perl scripts should normally be renamed after downloading.)_ + +## Download + +You can download a gzipped tar file containing the raw grammars, the +HTML versions of those grammars, and the conversion tools as the gzipped +tar file sql-bnf.tgz . + +
    +Please send feedback to Jonathan Leffler: + jonathan.leffler@gmail.com . + +Last modified: +4th February 2017 From 1e31f793d43e75423e40e832990da9a737dad0ef Mon Sep 17 00:00:00 2001 From: Jonathan Leffler Date: Fri, 10 Feb 2017 07:55:47 -0800 Subject: [PATCH 03/33] Update README.md Revise heading of this document to give current (not entirely satisfactory) method of getting to the HTML for browsing. Revise the 'download' section since the sql-bnf.tgz file isn't in the repository (and neither should it be). --- README.md | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 18c0be7..2c6ed18 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,28 @@ # BNF Grammars for SQL-92, SQL-99 and SQL-2003 +This repository contains the BNF (Backus-Naur Form) grammars for three versions of standard SQL — SQL-92, SQL-99 and SQL-2003. + +It is still in transition to GitHub. +The links in this README.md file lead to the pages in GitHub. +Most of them will display the HTML source — not a rendered HTML image. +There probably are ways around that; we're learning GitHub as we go. + +For a long time, this material was hosted by Ron Savage at +[http://savage.net.au/SQL](http://savage.net.au) — many thanks, Ron! — +but that site now points to here. + +At the moment, the suggested method of operation is: + +* Clone this repository to your machine — e.g. into the `/home/somebody/SQL` directory +* Point your browser to `file:///home/somebody/SQL/index.html`. + +This should give you full HTML access to the material. +Alternatively, you can download the latest release of this material +(instead of cloning the repo), and then extract that into a directory +and point your browser to the `index.html` file in that directory. + +Yes: it is sub-optimal. +Yes: we'll fix it when we know how to fix it. ## SQL-92 @@ -72,13 +95,18 @@ _(The Perl scripts should normally be renamed after downloading.)_ ## Download +You should be able to get a release of this repository from the releases area +of this GitHub repository. + +
    Please send feedback to Jonathan Leffler: jonathan.leffler@gmail.com . Last modified: -4th February 2017 +10th February 2017 From 89ac712fdf6e12315232f110b049128c78d4baa3 Mon Sep 17 00:00:00 2001 From: Jonathan Leffler Date: Fri, 10 Feb 2017 08:15:29 -0800 Subject: [PATCH 04/33] Update README.md Add link to latest release and hence to downloadable version of the repository. --- README.md | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 2c6ed18..9cffa8b 100644 --- a/README.md +++ b/README.md @@ -95,14 +95,9 @@ _(The Perl scripts should normally be renamed after downloading.)_ ## Download -You should be able to get a release of this repository from the releases area -of this GitHub repository. - - +You should be able to get the downloadable version of the latest release of this +repository from the releases area — +[https://github.com/ronsavage/SQL/releases/latest](https://github.com/ronsavage/SQL/releases/latest)
    Please send feedback to Jonathan Leffler: From 7b245d8ebcd47abbc05b53cfbdda6e3a74bbaf4b Mon Sep 17 00:00:00 2001 From: Jonathan Leffler Date: Fri, 10 Feb 2017 08:48:25 -0800 Subject: [PATCH 05/33] Update README.md Add link to https://ronsavage.github.io/SQL and mildly modify the surrounding material. --- README.md | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 9cffa8b..1c9456b 100644 --- a/README.md +++ b/README.md @@ -2,10 +2,18 @@ This repository contains the BNF (Backus-Naur Form) grammars for three versions of standard SQL — SQL-92, SQL-99 and SQL-2003. -It is still in transition to GitHub. -The links in this README.md file lead to the pages in GitHub. +You should be able to find a version of this site with 'active HTML' at: + +* https://ronsavage.github.io/SQL/ + +It may not be the most recent release, but the technical content is mostly valid. +The download link is not functional — you can obtain the material for the latest +release from https://github.com/ronsavage/SQL/releases/latest. + +*This project is still in transition to GitHub. +The links in this README.md file lead to the pages in the GitHub source tree. Most of them will display the HTML source — not a rendered HTML image. -There probably are ways around that; we're learning GitHub as we go. +There probably are ways around that; we're learning GitHub as we go.* For a long time, this material was hosted by Ron Savage at [http://savage.net.au/SQL](http://savage.net.au) — many thanks, Ron! — From 34a990d1a139c7a9fdb58ec591c59446789e7cfb Mon Sep 17 00:00:00 2001 From: Jonathan Leffler Date: Fri, 10 Feb 2017 15:20:15 -0800 Subject: [PATCH 06/33] Update README.md Add Ron Savage's email as an additional contact person. --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 1c9456b..06e0ac9 100644 --- a/README.md +++ b/README.md @@ -104,12 +104,14 @@ _(The Perl scripts should normally be renamed after downloading.)_ ## Download You should be able to get the downloadable version of the latest release of this -repository from the releases area — -[https://github.com/ronsavage/SQL/releases/latest](https://github.com/ronsavage/SQL/releases/latest) +repository from the releases area: + +* https://github.com/ronsavage/SQL/releases/latest
    Please send feedback to Jonathan Leffler: - jonathan.leffler@gmail.com . + jonathan.leffler@gmail.com _and_ +Ron Savage ron@savage.net.au . Last modified: 10th February 2017 From 27365046643d367cfdd21ef7adeb8a586e5764e1 Mon Sep 17 00:00:00 2001 From: Jonathan Leffler Date: Fri, 10 Feb 2017 15:26:23 -0800 Subject: [PATCH 07/33] Update README.md Reformat the email links for feedback. --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 06e0ac9..ce5fc6a 100644 --- a/README.md +++ b/README.md @@ -109,9 +109,9 @@ repository from the releases area: * https://github.com/ronsavage/SQL/releases/latest
    -Please send feedback to Jonathan Leffler: - jonathan.leffler@gmail.com _and_ -Ron Savage ron@savage.net.au . +Please send feedback to Jonathan Leffler +( jonathan.leffler@gmail.com ) _and_ +Ron Savage ( ron@savage.net.au ). Last modified: 10th February 2017 From e144a0103998742319dbc04fba4f061ccf6a794e Mon Sep 17 00:00:00 2001 From: Jonathan Leffler Date: Sun, 12 Feb 2017 22:38:48 -0800 Subject: [PATCH 08/33] Update index.html Primarily fix download link and its description to reference the GitHub latest version URL. Minor tweaks for consistency with README.md. Lose the RCS ID information. --- index.html | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/index.html b/index.html index 5be988a..9b11386 100644 --- a/index.html +++ b/index.html @@ -1,5 +1,3 @@ - - BNF Grammars for SQL-92, SQL-99 and SQL-2003 @@ -64,7 +62,7 @@

    Informix OUTER Join Syntax

    Conversion tools

    -The plain text was converted to HTML by the Perl script +The plain text `.bnf` files were converted to HTML by the Perl script bnf2html which you may use if you wish. The bnf2html script also uses the C program WEBCODE version 1.09 @@ -86,16 +84,18 @@

    Conversion tools

    Download

    -You can download a gzipped tar file containing the raw grammars, the -HTML versions of those grammars, and the conversion tools as the gzipped -tar file sql-bnf.tgz . +You can download a gzipped tar file or a zip file containing the latest version +of the raw grammars, the +HTML versions of those grammars, and the conversion tools from + GitHub .
    -Please send feedback to Jonathan Leffler, variously: - jleffler@us.ibm.com or - jonathan.leffler@gmail.com . +Please send feedback to Jonathan Leffler +( jonathan.leffler@gmail.com ) _and_ +Ron Savage ( ron@savage.net.au ). +

    Last modified: -21st January 2017 +13th February 2017 From fbf69b2ff763ff06f9319fcca4d33befa70967c0 Mon Sep 17 00:00:00 2001 From: Jonathan Leffler Date: Sun, 12 Feb 2017 22:55:46 -0800 Subject: [PATCH 09/33] Update index.html Use HTML instead of MarkDown for and indent per GitHub editor style. --- index.html | 206 ++++++++++++++++++++++++++++------------------------- 1 file changed, 107 insertions(+), 99 deletions(-) diff --git a/index.html b/index.html index 9b11386..3bacd42 100644 --- a/index.html +++ b/index.html @@ -1,101 +1,109 @@ - - BNF Grammars for SQL-92, SQL-99 and SQL-2003 - - - -

    BNF Grammars for SQL-92, SQL-99 and SQL-2003

    - -

    SQL-92

    - -Here is a heavily hyperlinked HTML -version of the BNF grammar for SQL-92 (ISO/IEC 9075:1992 - Database Language - -SQL). - -The plain text file from which it was -automatically converted is more useful (read legible) for reading -without a browser. - -

    SQL-99

    - -Here is a heavily hyperlinked HTML -version of the BNF grammar for SQL-99 (ISO/IEC 9075-2:1999 - Database -Languages - SQL - Part 2: Foundation (SQL/Foundation)). - -The plain text file from which it was -automatically converted is more useful (read legible) for reading -without a browser. - -

    SQL-2003

    -

    -Here is a heavily hyperlinked HTML -version of the BNF grammar for SQL-2003 (ISO/IEC 9075-2:2003 - Database -Languages - SQL - Part 2: Foundation (SQL/Foundation)). - -The plain text file from which it was -automatically converted is more useful (read legible) for reading -without a browser. -

    - -

    -There is a separate file HTML for -the information from ISO/IEC 9075-1:2003 - Database Languages - SQL - Part -1: Framework (SQL/Framework). - -It was automatically converted from the plain -text file, which is more useful (read legible) for reading without -a browser. -

    - -

    -Also available: - -

  • SQL 2003 Core Features
  • -
  • SQL 2003 Non-Core Features
  • - - -

    Informix OUTER Join Syntax

    - -Here is an HTML explanation of the -Informix OUTER join syntax. - -

    Conversion tools

    - -

    -The plain text `.bnf` files were converted to HTML by the Perl script - bnf2html which you may use if you wish. -The bnf2html script also uses the C program - WEBCODE version 1.09 -which you can download as a gzipped tar file. -

    - -

    -See also bnf2yacc , an experimental -script to convert BNF into an outline Yacc grammar. -The generated grammar typically includes some unacceptable tokens, such -as %token 0, that should be handled by the lexical analyzer -rather than the grammar. -The SQL standard includes such rules as grammar rules. -

    - -

    -(The Perl scripts should normally be renamed after downloading.) -

    - -

    Download

    - -You can download a gzipped tar file or a zip file containing the latest version -of the raw grammars, the -HTML versions of those grammars, and the conversion tools from - GitHub . - -
    -Please send feedback to Jonathan Leffler -( jonathan.leffler@gmail.com ) _and_ -Ron Savage ( ron@savage.net.au ). - -

    -Last modified: -13th February 2017 - + + BNF Grammars for SQL-92, SQL-99 and SQL-2003 + + +

    BNF Grammars for SQL-92, SQL-99 and SQL-2003

    +

    SQL-92

    +

    + Here is a heavily hyperlinked HTML + version of the BNF grammar for SQL-92 (ISO/IEC 9075:1992 - Database Language - SQL). +

    + +

    + The plain text file from which it was + automatically converted is more useful (more legible) for reading + without a browser. +

    + +

    SQL-99

    +

    + Here is a heavily hyperlinked HTML + version of the BNF grammar for SQL-99 (ISO/IEC 9075-2:1999 - Database + Languages - SQL - Part 2: Foundation (SQL/Foundation)). +

    + +

    + The plain text file from which it was + automatically converted is more useful (more legible) for reading + without a browser. +

    + +

    SQL-2003

    +

    + Here is a heavily hyperlinked HTML + version of the BNF grammar for SQL-2003 (ISO/IEC 9075-2:2003 - Database + Languages - SQL - Part 2: Foundation (SQL/Foundation)). +

    + +

    + The plain text file from which it was + automatically converted is more useful (more legible) for reading + without a browser. +

    + +

    + There is a separate file HTML for + the information from ISO/IEC 9075-1:2003 - Database Languages - SQL - + Part 1: Framework (SQL/Framework). +

    +

    + It was automatically converted from the plain + text file, which is more useful (more legible) for reading without + a browser. +

    + +

    + Also available: + +

  • SQL 2003 Core Features
  • +
  • SQL 2003 Non-Core Features
  • + +

    +

    Informix OUTER Join Syntax

    +

    + Here is an HTML explanation of the + Informix OUTER join syntax. +

    + +

    Conversion tools

    +

    + The plain text .bnf files were converted to HTML by the Perl script + bnf2html which you may use if you wish. + The bnf2html script also uses the C program + WEBCODE version 1.09 + which you can download as a gzipped tar file. +

    + +

    + See also bnf2yacc , an experimental + script to convert BNF into an outline Yacc grammar. + The generated grammar typically includes some unacceptable tokens, such + as %token 0, that should be handled by the lexical analyzer + rather than the grammar. + The SQL standard includes such rules as grammar rules. +

    + +

    + (The Perl scripts should normally be renamed after downloading.) +

    + +

    Download

    +

    + You can download a gzipped tar file or a zip file containing the latest version + of the raw grammars, the + HTML versions of those grammars, and the conversion tools from + GitHub . +

    +
    +

    + Please send feedback to Jonathan Leffler + (jonathan.leffler@gmail.com) and + Ron Savage (ron@savage.net.au). +

    + +

    + Last modified: 13th February 2017 +

    + From c3f74e70e0a6d6af1b9a3cfca6a746362f6c3e07 Mon Sep 17 00:00:00 2001 From: Jonathan Leffler Date: Mon, 13 Mar 2017 11:34:46 -0700 Subject: [PATCH 10/33] Update README.md Add pointer to ANSI press release on SQL 2016 being released. Still need to find other versions of the standard between 2003 and 2016. --- README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ce5fc6a..5439e38 100644 --- a/README.md +++ b/README.md @@ -108,10 +108,15 @@ repository from the releases area: * https://github.com/ronsavage/SQL/releases/latest +## SQL 2016 Released + +[ISO/IEC JTC 1/SC 32 Publishes Updated SQL Database Language Standard](https://www.ansi.org/news_publications/news_story?menuid=7&articleid=753a952d-1244-415b-bb92-0010750bb8cd) — SQL 2016. + +
    Please send feedback to Jonathan Leffler ( jonathan.leffler@gmail.com ) _and_ Ron Savage ( ron@savage.net.au ). Last modified: -10th February 2017 +13th March 2017 From 21d5681c4e4449dc7309c998318def926c59cc63 Mon Sep 17 00:00:00 2001 From: Jonathan Leffler Date: Wed, 4 Oct 2017 08:04:10 -0700 Subject: [PATCH 11/33] Update sql-2003-2.bnf Remove repeated entry for `` in sql-2003-2.bnf, as indicated by Euan Rochester. Update RCS version information. The generated sql-2003-2.bnf.html file still has to be regenerated (so this isn't ready for commit to master). --- sql-2003-2.bnf | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/sql-2003-2.bnf b/sql-2003-2.bnf index 24b046a..dd6bf9e 100644 --- a/sql-2003-2.bnf +++ b/sql-2003-2.bnf @@ -1,7 +1,7 @@ BNF Grammar for ISO/IEC 9075-2:2003 - Database Language SQL (SQL-2003) SQL/Foundation ===================================================================================== -@(#)$Id: sql-2003-2.bnf,v 1.19 2016/07/24 15:30:25 jleffler Exp $ +@(#)$Id: sql-2003-2.bnf,v 1.20 2017/10/04 14:57:52 jleffler Exp $ --p Information taken from the Final Committee Draft (FCD) of ISO/IEC 9075-2:2003. @@ -1343,8 +1343,6 @@ grammar. ::= - ::= - ::= | ::= ARRAY [ ] @@ -5086,7 +5084,7 @@ NOTE 402 - This statement has no effect on any SQL-transactions subsequent to th If an SQL-transaction is currently active, then set the constraint mode for that SQL-transaction in the current SQL-session. If no SQL-transaction is currently active, then set the constraint mode for the next SQL-transaction in the current SQL-session for the SQL-agent. -NOTE 404 � This statement has no effect on any SQL-transactions subsequent to this SQL-transaction. +NOTE 404 – This statement has no effect on any SQL-transactions subsequent to this SQL-transaction. --/p ::= SET CONSTRAINTS { DEFERRED | IMMEDIATE } From a143407ce1813533329ea545e99aed62de0895fc Mon Sep 17 00:00:00 2001 From: Jonathan Leffler Date: Wed, 4 Oct 2017 08:20:47 -0700 Subject: [PATCH 12/33] Update sql-2003-2.bnf and sql-2003-2.bnf.html Replace U+0096 SPA (start of guarded area) with a colon in sql-2003-2.bnf. Regenerate sql-2003-2.bnf.html from updated sql-2003-2.bnf. --- sql-2003-2.bnf | 4 ++-- sql-2003-2.bnf.html | 16 +++++++--------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/sql-2003-2.bnf b/sql-2003-2.bnf index dd6bf9e..1bfb06d 100644 --- a/sql-2003-2.bnf +++ b/sql-2003-2.bnf @@ -1,7 +1,7 @@ BNF Grammar for ISO/IEC 9075-2:2003 - Database Language SQL (SQL-2003) SQL/Foundation ===================================================================================== -@(#)$Id: sql-2003-2.bnf,v 1.20 2017/10/04 14:57:52 jleffler Exp $ +@(#)$Id: sql-2003-2.bnf,v 1.21 2017/10/04 15:15:18 jleffler Exp $ --p Information taken from the Final Committee Draft (FCD) of ISO/IEC 9075-2:2003. @@ -5084,7 +5084,7 @@ NOTE 402 - This statement has no effect on any SQL-transactions subsequent to th If an SQL-transaction is currently active, then set the constraint mode for that SQL-transaction in the current SQL-session. If no SQL-transaction is currently active, then set the constraint mode for the next SQL-transaction in the current SQL-session for the SQL-agent. -NOTE 404 – This statement has no effect on any SQL-transactions subsequent to this SQL-transaction. +NOTE 404: This statement has no effect on any SQL-transactions subsequent to this SQL-transaction. --/p ::= SET CONSTRAINTS { DEFERRED | IMMEDIATE } diff --git a/sql-2003-2.bnf.html b/sql-2003-2.bnf.html index eed5f22..5965e04 100644 --- a/sql-2003-2.bnf.html +++ b/sql-2003-2.bnf.html @@ -16,9 +16,9 @@

    BNF Grammar for ISO/IEC 9075-2:2003 - Database Language SQL (SQL-2003) SQL/

    -Derived from file sql-2003-2.bnf version 1.19 dated 2016/07/24 15:30:25 +Derived from file sql-2003-2.bnf version 1.21 dated 2017/10/04 15:15:18
    -Generated on 2017-01-17 05:18:34+00:00 by file bnf2html.pl version 3.12 dated 2016/04/18 05:13:47 +Generated on 2017-10-04 15:17:56+00:00 by file bnf2html.pl version 3.12 dated 2016/04/18 05:13:47

    @@ -742,8 +742,6 @@

    6.1 <data type> (p161)

    <path-resolved user-defined type name>    ::=   <user-defined type name> -

    <path-resolved user-defined type name>    ::=   <user-defined type name> -

    <collection type>    ::=   <array type> | <multiset type>

    <array type>    ::=   <data type> ARRAY [ <left bracket or trigraph> <unsigned integer> <right bracket or trigraph> ] @@ -3844,7 +3842,7 @@

    16.3 <set constraints mode sta If an SQL-transaction is currently active, then set the constraint mode for that SQL-transaction in the current SQL-session. If no SQL-transaction is currently active, then set the constraint mode for the next SQL-transaction in the current SQL-session for the SQL-agent. -NOTE 404 � This statement has no effect on any SQL-transactions subsequent to this SQL-transaction. +NOTE 404: This statement has no effect on any SQL-transactions subsequent to this SQL-transaction.

    <set constraints mode statement>    ::=   SET CONSTRAINTS <constraint name list> { DEFERRED | IMMEDIATE } @@ -13085,16 +13083,16 @@

    Cross-Reference Table: Keywords

    <object name> - double - <C numeric variable> - - DOUBLE <approximate numeric type> <Fortran type specification> <reserved word> + double + <C numeric variable> + + DOUBLE_PRECISION <Ada qualified type specification> <Ada unqualified type specification> From 98789504960d6b95efa3ab372bafdc75cec36f43 Mon Sep 17 00:00:00 2001 From: Jonathan Leffler Date: Mon, 13 Nov 2017 22:33:36 -0800 Subject: [PATCH 13/33] Finish the fix for duplicate rules. Upgrade the `bnf2html.pl` script to spot repeated rule definitions. Update `sql-2003-2.bnf` and `sql-99.bnf` to eliminate various repeated rules. The repeats in SQL-99 mostly come from extra information in 9075-4 (SQL/PSM) and 9075-5 (SQL/Bindings). The repeat in SQL-2003-2 was similar. Also, update contact information. --- bnf2html.perl.txt | 51 ++++++-- bnf2html.pl | 51 ++++++-- index.html | 205 ++++++++++++++++----------------- outer-joins.html | 6 +- sql-2003-1.bnf.html | 4 +- sql-2003-2.bnf | 49 ++++++-- sql-2003-2.bnf.html | 77 ++++++++----- sql-2003-core-features.html | 5 +- sql-2003-noncore-features.html | 5 +- sql-92.bnf.html | 20 ++-- sql-99.bnf | 60 ++++++++-- sql-99.bnf.html | 115 ++++++++++++------ 12 files changed, 413 insertions(+), 235 deletions(-) diff --git a/bnf2html.perl.txt b/bnf2html.perl.txt index ff6a68e..b954981 100644 --- a/bnf2html.perl.txt +++ b/bnf2html.perl.txt @@ -1,23 +1,44 @@ #!/usr/bin/env perl # -# @(#)$Id: bnf2html.pl,v 3.12 2016/04/18 05:13:47 jleffler Exp $ +# @(#)$Id: bnf2html.pl,v 3.14 2017/11/13 20:42:26 jleffler Exp $ # # Convert SQL-92, SQL-99 BNF plain text file into hyperlinked HTML. use strict; use warnings; use POSIX qw(strftime); +#use Data::Dumper; use constant debug => 0; my(%rules); # Indexed by rule names w/o angle-brackets; each entry is a ref to a hash. my(%keywords); # Index by keywords; each entry is a ref to a hash. +my(%names); # Indexed by rule names w/o angle-brackets; each entry is a ref to an array of line numbers sub top { print "

    Top

    \n\n"; } +# Usage: add_rule_name(\%names, $rulename, $.); +sub add_rule_name +{ + my($reflist, $lhs, $line) = @_; + #print "\nrulename = $lhs; line = $line\n"; + if (defined ${$reflist}{$lhs}) + { + #print Data::Dumper->Dump([ ${$reflist}{$lhs} ], qw[ ${$reflist}{$lhs} ]); + #print Data::Dumper->Dump([ \@{${$reflist}{$lhs}} ], qw[ \@{${$reflist}{$lhs}} ]); + my @lines = @{${$reflist}{$lhs}}; + print STDERR "\n$0: Rule <$lhs> at line $line already seen at line(s) ", join(", ", @lines), "\n\n"; + } + else + { + ${$reflist}{$lhs} = []; + } + push @{${$reflist}{$lhs}}, $line; +} + # Usage: add_entry(\%keywords, $keyword, $rule); # Usage: add_entry(\%rules, $rhs, $rule); sub add_entry @@ -169,6 +190,15 @@ sub print_tail return($tcount); } +sub undo_web_coding +{ + my($line) = @_; + $line =~ s%>%>%g; + $line =~ s%<%<%g; + $line =~ s%&%&%g; + return $line; +} + my $hr_count = 0; my $tcount = 0; # Ick! my $def; # Current rule @@ -188,10 +218,15 @@ while (<$WEBCODE>) { print "
    \n"; } + elsif (/^--@@\s*(.*)$/) + { + my $comment = undo_web_coding($1); + print "\n"; + } elsif (/^@.#..Id:/) { # Convert what(1) string identifier into version information - my $id = '$Id: bnf2html.pl,v 3.12 2016/04/18 05:13:47 jleffler Exp $'; + my $id = '$Id: bnf2html.pl,v 3.14 2017/11/13 20:42:26 jleffler Exp $'; my($v1) = rcs_id($_); my $v2 = rcs_id($id); print "

    \n"; @@ -201,7 +236,7 @@ while (<$WEBCODE>) print "Generated on $today by $v2\n"; print "

    \n"; } - elsif (/ ::=/) + elsif (/\s+::=/) { # Definition line $def = $_; @@ -210,6 +245,7 @@ while (<$WEBCODE>) $tail =~ s%.*::=\s*%%; print qq'

    <$def>    ::='; $tcount = 0; + add_rule_name(\%names, $def, $.); if ($def eq "vertical bar") { # Needs special case attention to avoid a /* Nothing */ comment appearing. @@ -244,10 +280,7 @@ while (<$WEBCODE>) } elsif (m%^--##%) { - # Undo web-coding - s%>%>%g; - s%<%<%g; - s%&%&%g; + $_ = undo_web_coding($_); s%^--##\s*%%; print "$_\n"; } @@ -362,7 +395,7 @@ print "


    \n"; } printf "%s\n", q'Please send feedback to Jonathan Leffler, variously:'; -printf "%s\n", q' jleffler@us.ibm.com or'; +printf "%s\n", q' jonathan.leffler@hcl.com or'; printf "%s\n", q' jonathan.leffler@gmail.com .'; print "\n\n\n"; @@ -427,6 +460,6 @@ Any other line is passed through verbatim. =head1 AUTHOR -Jonathan Leffler +Jonathan Leffler =cut diff --git a/bnf2html.pl b/bnf2html.pl index ff6a68e..b954981 100644 --- a/bnf2html.pl +++ b/bnf2html.pl @@ -1,23 +1,44 @@ #!/usr/bin/env perl # -# @(#)$Id: bnf2html.pl,v 3.12 2016/04/18 05:13:47 jleffler Exp $ +# @(#)$Id: bnf2html.pl,v 3.14 2017/11/13 20:42:26 jleffler Exp $ # # Convert SQL-92, SQL-99 BNF plain text file into hyperlinked HTML. use strict; use warnings; use POSIX qw(strftime); +#use Data::Dumper; use constant debug => 0; my(%rules); # Indexed by rule names w/o angle-brackets; each entry is a ref to a hash. my(%keywords); # Index by keywords; each entry is a ref to a hash. +my(%names); # Indexed by rule names w/o angle-brackets; each entry is a ref to an array of line numbers sub top { print "

    Top

    \n\n"; } +# Usage: add_rule_name(\%names, $rulename, $.); +sub add_rule_name +{ + my($reflist, $lhs, $line) = @_; + #print "\nrulename = $lhs; line = $line\n"; + if (defined ${$reflist}{$lhs}) + { + #print Data::Dumper->Dump([ ${$reflist}{$lhs} ], qw[ ${$reflist}{$lhs} ]); + #print Data::Dumper->Dump([ \@{${$reflist}{$lhs}} ], qw[ \@{${$reflist}{$lhs}} ]); + my @lines = @{${$reflist}{$lhs}}; + print STDERR "\n$0: Rule <$lhs> at line $line already seen at line(s) ", join(", ", @lines), "\n\n"; + } + else + { + ${$reflist}{$lhs} = []; + } + push @{${$reflist}{$lhs}}, $line; +} + # Usage: add_entry(\%keywords, $keyword, $rule); # Usage: add_entry(\%rules, $rhs, $rule); sub add_entry @@ -169,6 +190,15 @@ sub print_tail return($tcount); } +sub undo_web_coding +{ + my($line) = @_; + $line =~ s%>%>%g; + $line =~ s%<%<%g; + $line =~ s%&%&%g; + return $line; +} + my $hr_count = 0; my $tcount = 0; # Ick! my $def; # Current rule @@ -188,10 +218,15 @@ sub print_tail { print "
    \n"; } + elsif (/^--@@\s*(.*)$/) + { + my $comment = undo_web_coding($1); + print "\n"; + } elsif (/^@.#..Id:/) { # Convert what(1) string identifier into version information - my $id = '$Id: bnf2html.pl,v 3.12 2016/04/18 05:13:47 jleffler Exp $'; + my $id = '$Id: bnf2html.pl,v 3.14 2017/11/13 20:42:26 jleffler Exp $'; my($v1) = rcs_id($_); my $v2 = rcs_id($id); print "

    \n"; @@ -201,7 +236,7 @@ sub print_tail print "Generated on $today by $v2\n"; print "

    \n"; } - elsif (/ ::=/) + elsif (/\s+::=/) { # Definition line $def = $_; @@ -210,6 +245,7 @@ sub print_tail $tail =~ s%.*::=\s*%%; print qq'

    <$def>    ::='; $tcount = 0; + add_rule_name(\%names, $def, $.); if ($def eq "vertical bar") { # Needs special case attention to avoid a /* Nothing */ comment appearing. @@ -244,10 +280,7 @@ sub print_tail } elsif (m%^--##%) { - # Undo web-coding - s%>%>%g; - s%<%<%g; - s%&%&%g; + $_ = undo_web_coding($_); s%^--##\s*%%; print "$_\n"; } @@ -362,7 +395,7 @@ sub print_index_key } printf "%s\n", q'Please send feedback to Jonathan Leffler, variously:'; -printf "%s\n", q' jleffler@us.ibm.com or'; +printf "%s\n", q' jonathan.leffler@hcl.com or'; printf "%s\n", q' jonathan.leffler@gmail.com .'; print "\n\n\n"; @@ -427,6 +460,6 @@ =head1 INPUT FORMAT =head1 AUTHOR -Jonathan Leffler +Jonathan Leffler =cut diff --git a/index.html b/index.html index 3bacd42..9b23048 100644 --- a/index.html +++ b/index.html @@ -1,109 +1,100 @@ + + - - BNF Grammars for SQL-92, SQL-99 and SQL-2003 - - -

    BNF Grammars for SQL-92, SQL-99 and SQL-2003

    -

    SQL-92

    -

    - Here is a heavily hyperlinked HTML - version of the BNF grammar for SQL-92 (ISO/IEC 9075:1992 - Database Language - SQL). -

    - -

    - The plain text file from which it was - automatically converted is more useful (more legible) for reading - without a browser. -

    - -

    SQL-99

    -

    - Here is a heavily hyperlinked HTML - version of the BNF grammar for SQL-99 (ISO/IEC 9075-2:1999 - Database - Languages - SQL - Part 2: Foundation (SQL/Foundation)). -

    - -

    - The plain text file from which it was - automatically converted is more useful (more legible) for reading - without a browser. -

    - -

    SQL-2003

    -

    - Here is a heavily hyperlinked HTML - version of the BNF grammar for SQL-2003 (ISO/IEC 9075-2:2003 - Database - Languages - SQL - Part 2: Foundation (SQL/Foundation)). -

    - -

    - The plain text file from which it was - automatically converted is more useful (more legible) for reading - without a browser. -

    - -

    - There is a separate file HTML for - the information from ISO/IEC 9075-1:2003 - Database Languages - SQL - - Part 1: Framework (SQL/Framework). -

    -

    - It was automatically converted from the plain - text file, which is more useful (more legible) for reading without - a browser. -

    - -

    - Also available: - -

  • SQL 2003 Core Features
  • -
  • SQL 2003 Non-Core Features
  • - -

    -

    Informix OUTER Join Syntax

    -

    - Here is an HTML explanation of the - Informix OUTER join syntax. -

    - -

    Conversion tools

    -

    - The plain text .bnf files were converted to HTML by the Perl script - bnf2html which you may use if you wish. - The bnf2html script also uses the C program - WEBCODE version 1.09 - which you can download as a gzipped tar file. -

    - -

    - See also bnf2yacc , an experimental - script to convert BNF into an outline Yacc grammar. - The generated grammar typically includes some unacceptable tokens, such - as %token 0, that should be handled by the lexical analyzer - rather than the grammar. - The SQL standard includes such rules as grammar rules. -

    - -

    - (The Perl scripts should normally be renamed after downloading.) -

    - -

    Download

    -

    - You can download a gzipped tar file or a zip file containing the latest version - of the raw grammars, the - HTML versions of those grammars, and the conversion tools from - GitHub . -

    -
    -

    - Please send feedback to Jonathan Leffler - (jonathan.leffler@gmail.com) and - Ron Savage (ron@savage.net.au). -

    - -

    - Last modified: 13th February 2017 -

    - + + BNF Grammars for SQL-92, SQL-99 and SQL-2003 + + + +

    BNF Grammars for SQL-92, SQL-99 and SQL-2003

    + +

    SQL-92

    + +Here is a heavily hyperlinked HTML +version of the BNF grammar for SQL-92 (ISO/IEC 9075:1992 - Database Language - +SQL). + +The plain text file from which it was +automatically converted is more useful (read legible) for reading +without a browser. + +

    SQL-99

    + +Here is a heavily hyperlinked HTML +version of the BNF grammar for SQL-99 (ISO/IEC 9075-2:1999 - Database +Languages - SQL - Part 2: Foundation (SQL/Foundation)). + +The plain text file from which it was +automatically converted is more useful (read legible) for reading +without a browser. + +

    SQL-2003

    +

    +Here is a heavily hyperlinked HTML +version of the BNF grammar for SQL-2003 (ISO/IEC 9075-2:2003 - Database +Languages - SQL - Part 2: Foundation (SQL/Foundation)). + +The plain text file from which it was +automatically converted is more useful (read legible) for reading +without a browser. +

    + +

    +There is a separate file HTML for +the information from ISO/IEC 9075-1:2003 - Database Languages - SQL - Part +1: Framework (SQL/Framework). + +It was automatically converted from the plain +text file, which is more useful (read legible) for reading without +a browser. +

    + +

    +Also available: + +

  • SQL 2003 Core Features
  • +
  • SQL 2003 Non-Core Features
  • + + +

    Informix OUTER Join Syntax

    + +Here is an HTML explanation of the +Informix OUTER join syntax. + +

    Conversion tools

    + +

    +The plain text was converted to HTML by the Perl script + bnf2html which you may use if you wish. +The bnf2html script also uses the C program + WEBCODE version 1.09 +which you can download as a gzipped tar file. +

    + +

    +See also bnf2yacc , an experimental +script to convert BNF into an outline Yacc grammar. +The generated grammar typically includes some unacceptable tokens, such +as %token 0, that should be handled by the lexical analyzer +rather than the grammar. +The SQL standard includes such rules as grammar rules. +

    + +

    +(The Perl scripts should normally be renamed after downloading.) +

    + +

    Download

    + +You can download a gzipped tar file containing the raw grammars, the +HTML versions of those grammars, and the conversion tools as the gzipped +tar file sql-bnf.tgz . + +
    +Please send feedback to Jonathan Leffler: + jonathan.leffler@gmail.com . +

    +Last modified: +13th November 2017 + diff --git a/outer-joins.html b/outer-joins.html index f5b8663..c9f6ccb 100644 --- a/outer-joins.html +++ b/outer-joins.html @@ -1,4 +1,4 @@ - + @@ -1432,9 +1432,9 @@

    IBB_V_Post_Resp2


    Transcribed and annotated by -Jonathan Leffler. +Jonathan Leffler.
    -Last updated: 2007-01-09 +Last updated: 2017-11-13 diff --git a/sql-2003-1.bnf.html b/sql-2003-1.bnf.html index a39e07a..3610d7f 100644 --- a/sql-2003-1.bnf.html +++ b/sql-2003-1.bnf.html @@ -18,7 +18,7 @@

    BNF Grammar for ISO/IEC 9075-1:2003 SQL/Foundation - Database Language SQL

    Derived from file sql-2003-1.bnf version 1.3 dated 2009/06/24 17:15:49
    -Generated on 2017-01-17 05:18:34+00:00 by file bnf2html.pl version 3.12 dated 2016/04/18 05:13:47 +Generated on 2017-11-14 05:32:24+00:00 by file bnf2html.pl version 3.14 dated 2017/11/13 20:42:26

    @@ -916,7 +916,7 @@

    Cross-Reference Table: Keywords


    Please send feedback to Jonathan Leffler, variously: - jleffler@us.ibm.com or + jonathan.leffler@hcl.com or jonathan.leffler@gmail.com . diff --git a/sql-2003-2.bnf b/sql-2003-2.bnf index 1bfb06d..d93ab7e 100644 --- a/sql-2003-2.bnf +++ b/sql-2003-2.bnf @@ -1,7 +1,7 @@ BNF Grammar for ISO/IEC 9075-2:2003 - Database Language SQL (SQL-2003) SQL/Foundation ===================================================================================== -@(#)$Id: sql-2003-2.bnf,v 1.21 2017/10/04 15:15:18 jleffler Exp $ +@(#)$Id: sql-2003-2.bnf,v 1.22 2017/11/14 05:32:12 jleffler Exp $ --p Information taken from the Final Committee Draft (FCD) of ISO/IEC 9075-2:2003. @@ -231,12 +231,16 @@ Specifying lexical units (tokens and separators) that participate in SQL languag --p --i --small -Previous standard said: ---br - ::= | +The previous version of the SQL standard defined an identifier start as +either an or an . +Neither of the defining terms is defined in SQL 2003 (and the SQL 99 +definitions of those defininng terms referred to the syntax rules), but +the result of the SQL 2003 syntax rules will be similar to SQL 99 ones +except with Unicode support added. --/small --/i --/p +--@@ ::= | ::= !! See the Syntax Rules. @@ -264,7 +268,6 @@ The productions for and so on are new in SQL-2003 U - ::= [ UESCAPE ] ::= ... @@ -1515,7 +1518,6 @@ grammar. --h3 6.11 (p197) --/h3 - ::= | ::= @@ -4486,6 +4488,17 @@ Define an SQL-client module. ::= COLLATION [ FOR ] +--p +--i +--small +There was another definition in section 18.3. +That was slightly different in format (simpler) but functionally equivalent. +It is not clear why it was repeated. +The alternative definition is now commented out. +--/small +--/i +--/p + ::= [ { }... ] ::= @@ -5302,7 +5315,14 @@ set. SET COLLATION [ FOR ] | SET NO COLLATION [ FOR ] - ::= [ , ... ] +--@@ This is a second definition; the first +--@@ is in section 13.1. +--@@ It is marginally different in detail from the previous version, but the +--@@ overall effect is the same — a comma-separated list of items. +--@@ It isn't clear why there's a repeat of the rule or the difference in the expansion. +--@@ +--@@ ::= [ , ... ] ::= @@ -5351,6 +5371,15 @@ Get information from an SQL descriptor area. ::= +--p +--i +--small +The rule for was repeated verbatim in section 19.5. +That rule is now omitted. +--/small +--/i +--/p + ::= ::= @@ -5417,7 +5446,8 @@ Set information in an SQL descriptor area. ::= - ::= +--@@ This is a repeat of the rule in section 19.4 +--@@ ::= --h3 19.6 (p941) --/h3 @@ -6478,7 +6508,6 @@ returning an implementation-defined subclass in conjunction with one of the classes successful completion, warning, or no data. --/p - --p The 'Category' column has the following meanings: 'S' means that the class value given corresponds to successful completion and is a completion condition; 'W' means that the class value given @@ -6652,7 +6681,6 @@ Table 31 - SQLSTATE class and subclass values --## X with check option violation 44 (no subclass) 000 --## - --hr --h2 24 Conformance --/h2 @@ -6711,7 +6739,6 @@ Table 33 - Implied feature relationships --## T612 Advanced OLAP operations T611 Elementary OLAP operations --## - --hr --h2 END OF SQL-2003 Part 2 (SQL/Foundation) GRAMMAR --/h2 diff --git a/sql-2003-2.bnf.html b/sql-2003-2.bnf.html index 5965e04..fd04328 100644 --- a/sql-2003-2.bnf.html +++ b/sql-2003-2.bnf.html @@ -16,9 +16,9 @@

    BNF Grammar for ISO/IEC 9075-2:2003 - Database Language SQL (SQL-2003) SQL/

    -Derived from file sql-2003-2.bnf version 1.21 dated 2017/10/04 15:15:18 +Derived from file sql-2003-2.bnf version 1.22 dated 2017/11/14 05:32:12
    -Generated on 2017-10-04 15:17:56+00:00 by file bnf2html.pl version 3.12 dated 2016/04/18 05:13:47 +Generated on 2017-11-14 05:32:24+00:00 by file bnf2html.pl version 3.14 dated 2017/11/13 20:42:26

    @@ -217,12 +217,16 @@

    5.2 <token> and <separat

    -Previous standard said: -
    -

    <identifier start>    ::=   <initial alphabetic character> | <ideographic character> +The previous version of the SQL standard defined an identifier start as +either an <initial alphabetic character> or an <ideographic character>. +Neither of the defining terms is defined in SQL 2003 (and the SQL 99 +definitions of those defininng terms referred to the syntax rules), but +the result of the SQL 2003 syntax rules will be similar to SQL 99 ones +except with Unicode support added.

    +

    <identifier start>    ::=   !! See the Syntax Rules. @@ -248,7 +252,6 @@

    5.2 <token> and <separat

    <Unicode delimited identifier>    ::=
             U <ampersand> <double quote> <Unicode delimiter body> <double quote>
             <Unicode escape specifier> -

    <Unicode escape specifier>    ::=   [ UESCAPE <quote> <Unicode escape character> <quote> ]

    <Unicode delimiter body>    ::=   <Unicode identifier part> ... @@ -876,7 +879,6 @@

    6.10 <window function> (p193)

    6.11 <case expression> (p197)

    -

    <case expression>    ::=   <case abbreviation> | <case specification>

    <case abbreviation>    ::= @@ -3374,6 +3376,17 @@

    13.1 <SQL-client module definiti

    <module collation specification>    ::=   COLLATION <collation name> [ FOR <character set specification list> ] +

    + + +There was another definition <character set specification list> in section 18.3. +That was slightly different in format (simpler) but functionally equivalent. +It is not clear why it was repeated. +The alternative definition is now commented out. + + +

    +

    <character set specification list>    ::=   <character set specification> [ { <comma> <character set specification> }... ]

    <module contents>    ::= @@ -4058,7 +4071,14 @@

    18.10 <set session collation

    <set session collation statement>    ::=
             SET COLLATION <collation specification> [ FOR <character set specification list> ]
         |     SET NO COLLATION [ FOR <character set specification list> ] -

    <character set specification list>    ::=   <character set specification> [ , <character set specification> ... ] + + + + + + + +

    <collation specification>    ::=   <value specification> @@ -4107,6 +4127,15 @@

    19.4 <get descriptor statement> <get item information>    ::=   <simple target specification 2> <equals operator> <descriptor item name> +

    + + +The rule for <item number> was repeated verbatim in section 19.5. +That rule is now omitted. + + +

    +

    <item number>    ::=   <simple value specification>

    <simple target specification 1>    ::=   <simple target specification> @@ -4134,7 +4163,8 @@

    19.5 <set descriptor statement> <simple value specification 2>    ::=   <simple value specification> -

    <item number>    ::=   <simple value specification> + +

    19.6 <prepare statement> (p941)

    @@ -4869,7 +4899,6 @@

    23.1 SQLSTATE (p1069) the classes successful completion, warning, or no data.

    -

    The 'Category' column has the following meanings: 'S' means that the class value given corresponds to successful completion and is a completion condition; 'W' means that the class value given @@ -5043,7 +5072,6 @@

    23.1 SQLSTATE (p1069) X with check option violation 44 (no subclass) 000 -

    Top


    @@ -5104,7 +5132,6 @@

    24.1 General Conformance Requirements (p1079) T612 Advanced OLAP operations T611 Elementary OLAP operations -

    Top


    @@ -7859,10 +7886,6 @@

    Cross-Reference Table: Rules

    <like options> - ideographic character - <identifier start> - - implementation-defined character set name <character set specification> @@ -7910,10 +7933,6 @@

    Cross-Reference Table: Rules

    <embedded variable specification> - initial alphabetic character - <identifier start> - - input using clause <dynamic open statement> <parameter using clause> @@ -13083,16 +13102,16 @@

    Cross-Reference Table: Keywords

    <object name> + double + <C numeric variable> + + DOUBLE <approximate numeric type> <Fortran type specification> <reserved word> - double - <C numeric variable> - - DOUBLE_PRECISION <Ada qualified type specification> <Ada unqualified type specification> @@ -13288,16 +13307,16 @@

    Cross-Reference Table: Keywords

    <PL/I type fixed decimal> + float + <C numeric variable> + + FLOAT <approximate numeric type> <PL/I type float binary> <reserved word> - float - <C numeric variable> - - FLOOR <floor function> <non-reserved word> @@ -15784,7 +15803,7 @@

    Cross-Reference Table: Keywords


    Please send feedback to Jonathan Leffler, variously: - jleffler@us.ibm.com or + jonathan.leffler@hcl.com or jonathan.leffler@gmail.com . diff --git a/sql-2003-core-features.html b/sql-2003-core-features.html index abbac06..8aebdd7 100644 --- a/sql-2003-core-features.html +++ b/sql-2003-core-features.html @@ -248,13 +248,12 @@

    SQL 2003 (Annex F, Table 34) Feature Taxonomy and Definition for Core SQL <

    -Please send feedback to Jonathan Leffler, variously: - jleffler@us.ibm.com or +Please send feedback to Jonathan Leffler: jonathan.leffler@gmail.com .

    -@(#)$Id: sql-2003-core-features.html,v 1.2 2005/07/18 22:51:48 jleffler Exp $ +@(#)$Id: sql-2003-core-features.html,v 1.3 2017/11/13 20:45:42 jleffler Exp $

    diff --git a/sql-2003-noncore-features.html b/sql-2003-noncore-features.html index 4043e7a..a2fd254 100644 --- a/sql-2003-noncore-features.html +++ b/sql-2003-noncore-features.html @@ -279,13 +279,12 @@


    -Please send feedback to Jonathan Leffler, variously: - jleffler@us.ibm.com or +Please send feedback to Jonathan Leffler: jonathan.leffler@gmail.com .

    -@(#)$Id: sql-2003-noncore-features.html,v 1.2 2005/07/18 22:51:30 jleffler Exp $ +@(#)$Id: sql-2003-noncore-features.html,v 1.3 2017/11/13 20:45:42 jleffler Exp $

    diff --git a/sql-92.bnf.html b/sql-92.bnf.html index 5c779b5..ecef783 100644 --- a/sql-92.bnf.html +++ b/sql-92.bnf.html @@ -18,7 +18,7 @@

    BNF Grammar for ISO/IEC 9075:1992 - Database Language SQL (SQL-92)

    Derived from file sql-92.bnf version 2.5 dated 2017/01/17 01:05:03
    -Generated on 2017-01-17 05:18:33+00:00 by file bnf2html.pl version 3.12 dated 2016/04/18 05:13:47 +Generated on 2017-11-14 05:32:23+00:00 by file bnf2html.pl version 3.14 dated 2017/11/13 20:42:26

    @@ -4953,10 +4953,6 @@

    Cross-Reference Table: Keywords

    <non-reserved word> - char - <C character variable> - - CHAR <Ada qualified type specification> <Ada unqualified type specification> @@ -4965,6 +4961,10 @@

    Cross-Reference Table: Keywords

    <reserved word> + char + <C character variable> + + CHARACTER <Ada qualified type specification> <C character variable> @@ -5490,15 +5490,15 @@

    Cross-Reference Table: Keywords

    <reserved word> + float + <C numeric variable> + + FLOAT <approximate numeric type> <reserved word> - float - <C numeric variable> - - FOR <allocate cursor statement> <bit substring function> @@ -6615,7 +6615,7 @@

    Cross-Reference Table: Keywords


    Please send feedback to Jonathan Leffler, variously: - jleffler@us.ibm.com or + jonathan.leffler@hcl.com or jonathan.leffler@gmail.com . diff --git a/sql-99.bnf b/sql-99.bnf index 1766d0f..158aae8 100644 --- a/sql-99.bnf +++ b/sql-99.bnf @@ -1,7 +1,7 @@ BNF Grammar for ISO/IEC 9075:1999 - Database Language SQL (SQL-99) ================================================================== -@(#)$Id: sql-99.bnf,v 2.8 2004/07/26 18:00:06 jleffler Exp $ +@(#)$Id: sql-99.bnf,v 2.9 2017/11/14 06:20:28 jleffler Exp $ --p Using Appendix G of "SQL:1999 Understanding Relational Language Components" by J @@ -461,10 +461,12 @@ The lexical analyzer would normally deal with this sort of issue. ::= ADA | C | COBOL | FORTRAN | MUMPS | PASCAL | PLI | SQL - ::= - SCHEMA - | AUTHORIZATION - | SCHEMA AUTHORIZATION +--@@ This module authorization clause is superceded by a variant from 9075-5 SQL/Bindings. + +--@@ ::= +--@@ SCHEMA +--@@ | AUTHORIZATION +--@@ | SCHEMA AUTHORIZATION ::= @@ -1647,7 +1649,8 @@ Normally, the lexical analyzer would return as a symbol. ::= [ ] - ::= | +--@@ This definition of interval primary is superceded by the version from 9075-5 SQL/Bindings +--@@ ::= | ::= @@ -2238,9 +2241,12 @@ used here. [ FOR EACH { ROW | STATEMENT } ] [ WHEN ] - ::= - - | BEGIN ATOMIC { }... END +--@@ This definition of triggered SQL statement is superceded by the +--@@ variant from 9075-4 (SQL/PSM). +--@@ Consequently, this one is commented out. +--@@ ::= +--@@ +--@@ | BEGIN ATOMIC { }... END ::= CREATE TYPE @@ -3524,6 +3530,17 @@ used here. ::= DROP MODULE +--p +--small +--i +This definition of is from 9075-4 (SQL/PSM) +and is documented with: +--/i +NOTE 13 – The preceding production defining completely supersedes the +definition in ISO/IEC 9075-2. +--/small +--/p + ::= --hr @@ -3645,8 +3662,6 @@ Much, if not all, of the following material comes from ISO/IEC 9075-5:1999, SQL/ ::= - ::= - ::= GET [ SQL ] DESCRIPTOR @@ -4405,10 +4420,33 @@ and are not designated more accurately. ::= !! (See the Syntax Rules.) +--p +--small +--i +This interval primary definition from 9075-5 (SQL/Bindings) is very +similar to a previous occurrence from 9075-2 (SQL/Foundation), but adds +the optional interval qualifier. +The earlier definition is commented out. +--/i +--/small +--/p + ::= [ ] | +--p +--small +--i +This module authorization clause definition from 9075-5 (SQL/Bindings) +is similar to a previous occurrence from 9075-2 (SQL/Foundation) but the +optional 'FOR STATIC ONLY' and 'FOR STATIC AND DYNAMIC' clauses were not +present before. +The earlier definition is commented out. +--/i +--/small +--/p + ::= SCHEMA | AUTHORIZATION diff --git a/sql-99.bnf.html b/sql-99.bnf.html index 835a9d8..3e1b6b4 100644 --- a/sql-99.bnf.html +++ b/sql-99.bnf.html @@ -16,9 +16,9 @@

    BNF Grammar for ISO/IEC 9075:1999 - Database Language SQL (SQL-99)


    -Derived from file sql-99.bnf version 2.8 dated 2004/07/26 18:00:06 +Derived from file sql-99.bnf version 2.9 dated 2017/11/14 06:20:28
    -Generated on 2017-01-17 05:18:34+00:00 by file bnf2html.pl version 3.12 dated 2016/04/18 05:13:47 +Generated on 2017-11-14 06:20:30+00:00 by file bnf2html.pl version 3.14 dated 2017/11/13 20:42:26

    @@ -427,8 +427,13 @@

    Literal Numbers, Strings, Dates and Times

    <language name>    ::=   ADA | C | COBOL | FORTRAN | MUMPS | PASCAL | PLI | SQL -

    <module authorization clause>    ::= -
             SCHEMA <schema name>
         |     AUTHORIZATION <module authorization identifier>
         |     SCHEMA <schema name> AUTHORIZATION <module authorization identifier> + + + + + + +

    <module authorization identifier>    ::=   <authorization identifier>

    <authorization identifier>    ::=   <role name> | <user identifier> @@ -1314,7 +1319,8 @@

    Query expression components
             <interval factor>
         |     <interval term 2> <asterisk> <factor>
         |     <interval term 2> <solidus> <factor>
         |     <term> <asterisk> <interval factor>

    <interval factor>    ::=   [ <sign> ] <interval primary> -

    <interval primary>    ::=   <value expression primary> | <interval value function> + +

    <interval value function>    ::=   <interval absolute value function> @@ -1763,8 +1769,13 @@

    SQL Schema Definition Statements

    <triggered action>    ::=
             [ FOR EACH { ROW | STATEMENT } ]
             [ WHEN <left paren> <search condition> <right paren> ] <triggered SQL statement> -

    <triggered SQL statement>    ::= -
             <SQL procedure statement>
         |     BEGIN ATOMIC { <SQL procedure statement> <semicolon> }... END + + + + + + +

    <user-defined type definition>    ::=   CREATE TYPE <user-defined type body>

    @@ -2618,6 +2629,17 @@

    Session Attributes

    <drop module statement>    ::=   DROP MODULE <SQL-server module name> <drop behavior> +

    + + +This definition of <triggered SQL statement> is from 9075-4 (SQL/PSM) +and is documented with: + +NOTE 13 – The preceding production defining <triggered SQL statement> completely supersedes the +definition in ISO/IEC 9075-2. + +

    +

    <triggered SQL statement>    ::=   <SQL procedure statement>

    Top

    @@ -2680,8 +2702,6 @@

    Dynamic SQL
             CARDINALITY
         |     CHARACTER_SET_CATALOG
         |     CHARACTER_SET_NAME
         |     CHARACTER_SET_SCHEMA
         |     COLLATION_CATALOG
         |     COLLATION_NAME
         |     COLLATION_SCHEMA
         |     DATA
         |     DATETIME_INTERVAL_CODE
         |     DATETIME_INTERVAL_PRECISION
         |     DEGREE
         |     INDICATOR
         |     KEY_MEMBER
         |     LENGTH
         |     LEVEL
         |     NAME
         |     NULLABLE
         |     OCTET_LENGTH
         |     PARAMETER_MODE
         |     PARAMETER_ORDINAL_POSITION
         |     PARAMETER_SPECIFIC_CATALOG
         |     PARAMETER_SPECIFIC_NAME
         |     PARAMETER_SPECIFIC_SCHEMA
         |     PRECISION
         |     RETURNED_CARDINALITY
         |     RETURNED_LENGTH
         |     RETURNED_OCTET_LENGTH
         |     SCALE
         |     SCOPE_CATALOG
         |     SCOPE_NAME
         |     SCOPE_SCHEMA
         |     TYPE
         |     UNNAMED
         |     USER_DEFINED_TYPE_CATALOG
         |     USER_DEFINED_TYPE_NAME
         |     USER_DEFINED_TYPE_SCHEMA

    <simple value specification 2>    ::=   <simple value specification> -

    <item number>    ::=   <simple value specification> -

    <get descriptor statement>    ::=
             GET [ SQL ] DESCRIPTOR <descriptor name> <get descriptor information>

    <get descriptor information>    ::= @@ -3123,8 +3143,31 @@

    Dynamic SQL

    <host PL/I label variable>    ::=   !! (See the Syntax Rules.) +

    + + +This interval primary definition from 9075-5 (SQL/Bindings) is very +similar to a previous occurrence from 9075-2 (SQL/Foundation), but adds +the optional interval qualifier. +The earlier definition is commented out. + + +

    +

    <interval primary>    ::=
             <value expression primary> [ <interval qualifier> ]
         |     <interval value function> +

    + + +This module authorization clause definition from 9075-5 (SQL/Bindings) +is similar to a previous occurrence from 9075-2 (SQL/Foundation) but the +optional 'FOR STATIC ONLY' and 'FOR STATIC AND DYNAMIC' clauses were not +present before. +The earlier definition is commented out. + + +

    +

    <module authorization clause>    ::=
             SCHEMA <schema name>
         |     AUTHORIZATION <module authorization identifier>
             [ FOR STATIC { ONLY | AND DYNAMIC } ]
         |     SCHEMA <schema name> AUTHORIZATION <module authorization identifier>
             [ FOR STATIC { ONLY | AND DYNAMIC } ]

    <preparable statement>    ::= @@ -8226,7 +8269,6 @@

    Cross-Reference Table: Rules

    <terminated local declaration> <terminated local handler declaration> <terminated SQL statement> - <triggered SQL statement> separator @@ -9964,7 +10006,6 @@

    Cross-Reference Table: Keywords

    ATOMIC <compound statement> <non-reserved word> - <triggered SQL statement> ATTRIBUTE @@ -10000,7 +10041,6 @@

    Cross-Reference Table: Keywords

    <embedded SQL begin declare> <embedded SQL MUMPS declare> <reserved word> - <triggered SQL statement> BETWEEN @@ -10390,15 +10430,15 @@

    Cross-Reference Table: Keywords

    <non-reserved word> + Connect + <CLI generic name> + + CONNECT <connect statement> <reserved word> - Connect - <CLI generic name> - - CONNECTION <reserved word> <set connection statement> @@ -10783,15 +10823,15 @@

    Cross-Reference Table: Keywords

    <Part 5 direct yes> - Disconnect - <CLI generic name> - - DISCONNECT <disconnect statement> <reserved word> + Disconnect + <CLI generic name> + + DISPATCH <dispatch clause> <non-reserved word> @@ -10964,7 +11004,6 @@

    Cross-Reference Table: Keywords

    <simple case> <simple case statement> <SQL-server module definition> - <triggered SQL statement> <while statement> @@ -11060,16 +11099,16 @@

    Cross-Reference Table: Keywords

    <truth value> - Fetch - <CLI generic name> - - FETCH <dynamic fetch statement> <fetch statement> <reserved word> + Fetch + <CLI generic name> + + FetchScroll <CLI generic name> @@ -11090,16 +11129,16 @@

    Cross-Reference Table: Keywords

    <PL/I type fixed decimal> - float - <C numeric variable> - - FLOAT <approximate numeric type> <PL/I type float binary> <reserved word> + float + <C numeric variable> + + FOR <bit substring function> <blob overlay function> @@ -11961,10 +12000,6 @@

    Cross-Reference Table: Keywords

    <Part (n) no> - no - <Part (n)> - - NO <commit statement> <cursor scrollability> @@ -11975,6 +12010,10 @@

    Cross-Reference Table: Keywords

    <SQL-data access indication> + no + <Part (n)> + + NONE <reserved word> <role specification> @@ -13545,14 +13584,14 @@

    Cross-Reference Table: Keywords

    <reserved word> - Yes - <Package PKG(i)> - - yes <Part (n)> + Yes + <Package PKG(i)> + + ZONE <reserved word> <set local time zone statement> @@ -13566,7 +13605,7 @@

    Cross-Reference Table: Keywords


    Please send feedback to Jonathan Leffler, variously: - jleffler@us.ibm.com or + jonathan.leffler@hcl.com or jonathan.leffler@gmail.com . From 6d980c56855b67a1f982aca08ca2e549db1f71a6 Mon Sep 17 00:00:00 2001 From: Jonathan Leffler Date: Mon, 13 Nov 2017 22:56:55 -0800 Subject: [PATCH 14/33] Strip trailing blanks - oops! --- bnf2html.perl.txt | 11 +- bnf2html.pl | 11 +- bnf2yacc.perl.txt | 6 +- bnf2yacc.pl | 6 +- sql-2003-1.bnf | 4 +- sql-2003-1.bnf.html | 7 +- sql-2003-2.bnf | 398 ++++++++++++++++++++++---------------------- sql-2003-2.bnf.html | 23 ++- sql-92.bnf.html | 29 ++-- sql-99.bnf | 8 +- sql-99.bnf.html | 73 ++++---- 11 files changed, 285 insertions(+), 291 deletions(-) diff --git a/bnf2html.perl.txt b/bnf2html.perl.txt index b954981..faad6e6 100644 --- a/bnf2html.perl.txt +++ b/bnf2html.perl.txt @@ -1,6 +1,6 @@ #!/usr/bin/env perl # -# @(#)$Id: bnf2html.pl,v 3.14 2017/11/13 20:42:26 jleffler Exp $ +# @(#)$Id: bnf2html.pl,v 3.16 2017/11/14 06:53:22 jleffler Exp $ # # Convert SQL-92, SQL-99 BNF plain text file into hyperlinked HTML. @@ -226,7 +226,7 @@ while (<$WEBCODE>) elsif (/^@.#..Id:/) { # Convert what(1) string identifier into version information - my $id = '$Id: bnf2html.pl,v 3.14 2017/11/13 20:42:26 jleffler Exp $'; + my $id = '$Id: bnf2html.pl,v 3.16 2017/11/14 06:53:22 jleffler Exp $'; my($v1) = rcs_id($_); my $v2 = rcs_id($id); print "

    \n"; @@ -353,7 +353,7 @@ foreach my $rule (sort { uc $a cmp uc $b } keys %rules) print qq'$pad <$ref> \n'; $pad = " "; } - print " \n\n"; + print " \n\n"; } print "\n"; print "
    \n"; @@ -386,7 +386,7 @@ foreach my $keyword (sort { uc $a cmp uc $b } keys %keywords) print qq'$pad <$ref> \n'; $pad = " "; } - print " \n\n"; + print " \n\n"; } print "\n"; print "
    \n"; @@ -394,8 +394,7 @@ top; print "


    \n"; } -printf "%s\n", q'Please send feedback to Jonathan Leffler, variously:'; -printf "%s\n", q' jonathan.leffler@hcl.com or'; +printf "%s\n", q'Please send feedback to Jonathan Leffler:'; printf "%s\n", q' jonathan.leffler@gmail.com .'; print "\n\n\n"; diff --git a/bnf2html.pl b/bnf2html.pl index b954981..faad6e6 100644 --- a/bnf2html.pl +++ b/bnf2html.pl @@ -1,6 +1,6 @@ #!/usr/bin/env perl # -# @(#)$Id: bnf2html.pl,v 3.14 2017/11/13 20:42:26 jleffler Exp $ +# @(#)$Id: bnf2html.pl,v 3.16 2017/11/14 06:53:22 jleffler Exp $ # # Convert SQL-92, SQL-99 BNF plain text file into hyperlinked HTML. @@ -226,7 +226,7 @@ sub undo_web_coding elsif (/^@.#..Id:/) { # Convert what(1) string identifier into version information - my $id = '$Id: bnf2html.pl,v 3.14 2017/11/13 20:42:26 jleffler Exp $'; + my $id = '$Id: bnf2html.pl,v 3.16 2017/11/14 06:53:22 jleffler Exp $'; my($v1) = rcs_id($_); my $v2 = rcs_id($id); print "

    \n"; @@ -353,7 +353,7 @@ sub print_index_key print qq'$pad <$ref> \n'; $pad = " "; } - print " \n\n"; + print " \n\n"; } print "\n"; print "
    \n"; @@ -386,7 +386,7 @@ sub print_index_key print qq'$pad <$ref> \n'; $pad = " "; } - print " \n\n"; + print " \n\n"; } print "\n"; print "
    \n"; @@ -394,8 +394,7 @@ sub print_index_key print "


    \n"; } -printf "%s\n", q'Please send feedback to Jonathan Leffler, variously:'; -printf "%s\n", q' jonathan.leffler@hcl.com or'; +printf "%s\n", q'Please send feedback to Jonathan Leffler:'; printf "%s\n", q' jonathan.leffler@gmail.com .'; print "\n\n\n"; diff --git a/bnf2yacc.perl.txt b/bnf2yacc.perl.txt index b23308f..d2ffab8 100644 --- a/bnf2yacc.perl.txt +++ b/bnf2yacc.perl.txt @@ -1,6 +1,6 @@ #!/usr/bin/perl -w # -# @(#)$Id: bnf2yacc.pl,v 1.15 2009/02/02 04:15:04 jleffler Exp $ +# @(#)$Id: bnf2yacc.pl,v 1.16 2017/11/14 06:53:22 jleffler Exp $ # # Convert SQL-92, SQL-99 BNF plain text file into YACC grammar. @@ -378,7 +378,7 @@ sub process_rhs } } print "==== process_rhs: @rule\n" if debug; - record_rule($lhs, 0, @rule); + record_rule($lhs, 0, @rule); print "<<== process_rhs\n" if debug; } @@ -429,7 +429,7 @@ while () elsif (/^--##/) { print "/* $_ */\n"; - } + } else { print "/* Unrecognized 2: $_ */\n"; diff --git a/bnf2yacc.pl b/bnf2yacc.pl index b23308f..d2ffab8 100644 --- a/bnf2yacc.pl +++ b/bnf2yacc.pl @@ -1,6 +1,6 @@ #!/usr/bin/perl -w # -# @(#)$Id: bnf2yacc.pl,v 1.15 2009/02/02 04:15:04 jleffler Exp $ +# @(#)$Id: bnf2yacc.pl,v 1.16 2017/11/14 06:53:22 jleffler Exp $ # # Convert SQL-92, SQL-99 BNF plain text file into YACC grammar. @@ -378,7 +378,7 @@ sub process_rhs } } print "==== process_rhs: @rule\n" if debug; - record_rule($lhs, 0, @rule); + record_rule($lhs, 0, @rule); print "<<== process_rhs\n" if debug; } @@ -429,7 +429,7 @@ sub count_unmatched_keys elsif (/^--##/) { print "/* $_ */\n"; - } + } else { print "/* Unrecognized 2: $_ */\n"; diff --git a/sql-2003-1.bnf b/sql-2003-1.bnf index 325a675..3682476 100644 --- a/sql-2003-1.bnf +++ b/sql-2003-1.bnf @@ -1,7 +1,7 @@ BNF Grammar for ISO/IEC 9075-1:2003 SQL/Foundation - Database Language SQL (SQL-2003) ===================================================================================== -@(#)$Id: sql-2003-1.bnf,v 1.3 2009/06/24 17:15:49 jleffler Exp $ +@(#)$Id: sql-2003-1.bnf,v 1.4 2017/11/14 06:53:22 jleffler Exp $ --p Information taken from the Final Committee Draft (FCD) of ISO/IEC 9075-1:2003. @@ -199,7 +199,7 @@ the SQL object identifier claims to provide the package. --h2 Annex B (informative) SQL Packages: --/h2 ---## +--##
    --## --## --## diff --git a/sql-2003-1.bnf.html b/sql-2003-1.bnf.html index 3610d7f..d2d6973 100644 --- a/sql-2003-1.bnf.html +++ b/sql-2003-1.bnf.html @@ -16,9 +16,9 @@

    BNF Grammar for ISO/IEC 9075-1:2003 SQL/Foundation - Database Language SQL

    -Derived from file sql-2003-1.bnf version 1.3 dated 2009/06/24 17:15:49 +Derived from file sql-2003-1.bnf version 1.4 dated 2017/11/14 06:53:22
    -Generated on 2017-11-14 05:32:24+00:00 by file bnf2html.pl version 3.14 dated 2017/11/13 20:42:26 +Generated on 2017-11-14 06:53:25+00:00 by file bnf2html.pl version 3.16 dated 2017/11/14 06:53:22

    @@ -915,8 +915,7 @@

    Cross-Reference Table: Keywords

    Top


    -Please send feedback to Jonathan Leffler, variously: - jonathan.leffler@hcl.com or +Please send feedback to Jonathan Leffler: jonathan.leffler@gmail.com . diff --git a/sql-2003-2.bnf b/sql-2003-2.bnf index d93ab7e..a726988 100644 --- a/sql-2003-2.bnf +++ b/sql-2003-2.bnf @@ -1,7 +1,7 @@ BNF Grammar for ISO/IEC 9075-2:2003 - Database Language SQL (SQL-2003) SQL/Foundation ===================================================================================== -@(#)$Id: sql-2003-2.bnf,v 1.22 2017/11/14 05:32:12 jleffler Exp $ +@(#)$Id: sql-2003-2.bnf,v 1.23 2017/11/14 06:53:22 jleffler Exp $ --p Information taken from the Final Committee Draft (FCD) of ISO/IEC 9075-2:2003. @@ -252,7 +252,7 @@ except with Unicode support added. ::= - ::= ... + ::= ... ::= | @@ -1444,7 +1444,7 @@ grammar. ::= [ INDICATOR ] ::= - + ::= | @@ -1663,12 +1663,12 @@ grammar. --/h3 ::= - + --hr --h3 6.24 (p235) --/h3 - + ::= ELEMENT @@ -1874,7 +1874,7 @@ Specify a function yielding a value of type character string or binary string. ::= - ::= + ::= OVERLAY PLACING FROM [ FOR ] [ USING ] @@ -1956,7 +1956,7 @@ Specify a function yielding a value of type datetime. --h3 6.32 (p271) --/h3 ---p +--p Specify an interval value. --/p @@ -2132,7 +2132,7 @@ Specify a value or list of values to be constructed into a row or partial row. --h3 7.2 (p296) --/h3 ---p +--p Specify a row value. --/p @@ -2157,7 +2157,7 @@ Specify a row value. --h3 7.3
    1 PKG001 Enhanced datetime facilities
    2 PKG002 Enhanced integrity management
    3 PKG004 PSM
    (p298) --/h3 ---p +--p Specify a set of s to be constructed into a table. --/p @@ -2172,7 +2172,7 @@ Specify a set of s to be constructed into a table. --h3 7.4
    (p300) --/h3 ---p +--p Specify a table or a grouped table. --/p @@ -2186,7 +2186,7 @@ Specify a table or a grouped table. --h3 7.5 (p301) --/h3 ---p +--p Specify a table derived from one or more tables. --/p @@ -2197,7 +2197,7 @@ Specify a table derived from one or more tables. --h3 7.6
    (p303) --/h3 ---p +--p Reference a table. --/p @@ -2244,7 +2244,7 @@ Reference a table. --h3 7.7 (p312) --/h3 ---p +--p Specify a table derived from a Cartesian product, inner or outer join, or union join. --/p @@ -2268,7 +2268,7 @@ Specify a table derived from a Cartesian product, inner or outer join, or union ::= USING - ::= INNER | [ OUTER ] + ::= INNER | [ OUTER ] ::= LEFT | RIGHT | FULL @@ -2277,7 +2277,7 @@ Specify a table derived from a Cartesian product, inner or outer join, or union --h3 7.8 (p319) --/h3 ---p +--p Specify a table derived by the application of a to the result of the preceding . --/p @@ -2287,7 +2287,7 @@ Specify a table derived by the application of a to the result --h3 7.9 (p320) --/h3 ---p +--p Specify a grouped table derived by the application of the to the result of the previously specified clause. --/p @@ -2333,7 +2333,7 @@ previously specified clause. --h3 7.10 (p329) --/h3 ---p +--p Specify a grouped table derived by the elimination of groups that do not satisfy a . --/p @@ -2342,7 +2342,7 @@ Specify a grouped table derived by the elimination of groups that do not satisfy --h3 7.11 (p331) --/h3 ---p +--p Specify one or more window definitions. --/p @@ -2401,7 +2401,7 @@ Specify one or more window definitions. --h3 7.12 (p341) --/h3 ---p +--p Specify a table derived from the result of a
    . --/p @@ -2430,7 +2430,7 @@ Specify a table derived from the result of a
    . --h3 7.13 (p350) --/h3 ---p +--p Specify a table. --/p @@ -2477,7 +2477,7 @@ Specify a table. --h3 7.14 (p363) --/h3 ---p +--p Specify the generation of ordering and cycle detection information in the result of recursive query expressions. --/p @@ -2516,7 +2516,7 @@ expressions. --h3 7.15 (p368) --/h3 ---p +--p Specify a scalar value, a row, or a table derived from a . --/p @@ -2535,7 +2535,7 @@ Specify a scalar value, a row, or a table derived from a . --h3 8.1 (p371) --/h3 ---p +--p Specify a condition that can be evaluated to give a boolean value. --/p @@ -2561,7 +2561,7 @@ Specify a condition that can be evaluated to give a boolean value. --h3 8.2 (p373) --/h3 ---p +--p Specify a comparison of two row values. --/p @@ -2580,7 +2580,7 @@ Specify a comparison of two row values. --h3 8.3 (p380) --/h3 ---p +--p Specify a range comparison. --/p @@ -2591,11 +2591,11 @@ Specify a range comparison. --h3 8.4 (p381) --/h3 ---p +--p Specify a quantified comparison. --/p - ::= + ::= ::= [ NOT ] IN @@ -2608,7 +2608,7 @@ Specify a quantified comparison. --h3 8.5 (p383) --/h3 ---p +--p Specify a pattern-match comparison. --/p @@ -2633,7 +2633,7 @@ Specify a pattern-match comparison. --h3 8.6 (p389) --/h3 ---p +--p Specify a character string similarity by means of a regular expression. --/p @@ -2698,18 +2698,18 @@ Specify a character string similarity by means of a regular expression. --h3 8.7 (p395) --/h3 ---p +--p Specify a test for a null value. --/p ::= - ::= IS [ NOT ] NULL + ::= IS [ NOT ] NULL --h3 8.8 (p397) --/h3 ---p +--p Specify a quantified comparison. --/p @@ -2726,7 +2726,7 @@ Specify a quantified comparison. --h3 8.9 (p399) --/h3 ---p +--p Specify a test for a non-empty set. --/p @@ -2744,7 +2744,7 @@ Specify a test for the absence of duplicate rows --h3 8.11 (p401) --/h3 ---p +--p Determine whether a character string value is normalized. --/p @@ -2753,7 +2753,7 @@ Determine whether a character string value is normalized. --h3 8.12 (p402) --/h3 ---p +--p Specify a test for matching rows. --/p @@ -2764,7 +2764,7 @@ Specify a test for matching rows. --h3 8.13 (p405) --/h3 ---p +--p Specify a test for an overlap between two datetime periods. --/p @@ -2781,7 +2781,7 @@ Specify a test for an overlap between two datetime periods. --h3 8.14 (p407) --/h3 ---p +--p Specify a test of whether two row values are distinct --/p @@ -2796,7 +2796,7 @@ Specify a test of whether two row values are distinct --h3 8.15 (p409) --/h3 ---p +--p Specify a test of whether a value is a member of a multiset. --/p @@ -2807,7 +2807,7 @@ Specify a test of whether a value is a member of a multiset. --h3 8.16 (p411) --/h3 ---p +--p Specify a test of whether a multiset is a submultiset of another multiset. --/p @@ -2818,7 +2818,7 @@ Specify a test of whether a multiset is a submultiset of another multiset. --h3 8.17 (p413) --/h3 ---p +--p Specify a test of whether a multiset is a set (that is, does not contain any duplicates). --/p @@ -2829,7 +2829,7 @@ Specify a test of whether a multiset is a set (that is, does not contain any dup --h3 8.18 (p414) --/h3 ---p +--p Specify a type test. --/p @@ -2850,7 +2850,7 @@ Specify a type test. --h3 8.19 (p416) --/h3 ---p +--p Specify a condition that is True , False , or Unknown , depending on the value of a . --/p @@ -2937,7 +2937,7 @@ expression>. --h3 10.1 (p465) --/h3 ---p +--p Specify the precision of an interval data type. --/p @@ -2968,7 +2968,7 @@ Specify the precision of an interval data type. --h3 10.2 (p469) --/h3 ---p +--p Specify a standard programming language. --/p @@ -2995,7 +2995,7 @@ Table 14 -- Standard programming languages --h3 10.3 (p471) --/h3 ---p +--p Specify an order for searching for an SQL-invoked routine. --/p @@ -3006,7 +3006,7 @@ Specify an order for searching for an SQL-invoked routine. --h3 10.4 (p472) --/h3 ---p +--p Invoke an SQL-invoked routine. --/p @@ -3026,7 +3026,7 @@ Invoke an SQL-invoked routine. --h3 10.5 (p495) --/h3 ---p +--p Identify a character set. --/p @@ -3044,7 +3044,7 @@ Identify a character set. --h3 10.6 (p497) --/h3 ---p +--p Specify an SQL-invoked routine. --/p @@ -3068,7 +3068,7 @@ Specify an SQL-invoked routine. --h3 10.7 (p500) --/h3 ---p +--p Specify a default collating sequence. --/p @@ -3077,7 +3077,7 @@ Specify a default collating sequence. --h3 10.8 and (p501) --/h3 ---p +--p Specify the name of a constraint and its characteristics. --/p @@ -3092,7 +3092,7 @@ Specify the name of a constraint and its characteristics. --h3 10.9 (p503) --/h3 ---p +--p Specify a value computed from a collection of rows. --/p @@ -3145,7 +3145,7 @@ Specify a value computed from a collection of rows. --h3 10.10 (p515) --/h3 ---p +--p Specify a sort order. --/p @@ -3166,7 +3166,7 @@ Specify a sort order. --h3 11.1 (p517) --/h3 ---p +--p Define a schema. --/p @@ -3210,7 +3210,7 @@ Define a schema. --h3 11.2 (p520) --/h3 ---p +--p Destroy a schema. --/p @@ -3221,7 +3221,7 @@ Destroy a schema. --h3 11.3
    (p523) --/h3 ---p +--p Define a persistent base table, a created local temporary table, or a global temporary table. --/p @@ -3280,7 +3280,7 @@ Define a persistent base table, a created local temporary table, or a global tem --h3 11.4 (p534) --/h3 ---p +--p Define a column of a base table. --/p @@ -3314,7 +3314,7 @@ Define a column of a base table. --h3 11.5 (p539) --/h3 ---p +--p Specify the default for a column, domain, or attribute. --/p @@ -3334,7 +3334,7 @@ Specify the default for a column, domain, or attribute. --h3 11.6
    (p543) --/h3 ---p +--p Specify an integrity constraint. --/p @@ -3348,7 +3348,7 @@ Specify an integrity constraint. --h3 11.7 (p545) --/h3 ---p +--p Specify a uniqueness constraint for a table. --/p @@ -3363,7 +3363,7 @@ Specify a uniqueness constraint for a table. --h3 11.8 (p547) --/h3 ---p +--p Specify a referential constraint. --/p @@ -3390,7 +3390,7 @@ Specify a referential constraint. --h3 11.9 (p567) --/h3 ---p +--p Specify a condition for the SQL-data. --/p @@ -3399,7 +3399,7 @@ Specify a condition for the SQL-data. --h3 11.10 (p569) --/h3 ---p +--p Change the definition of a table. --/p @@ -3415,7 +3415,7 @@ Change the definition of a table. --h3 11.11 (p570) --/h3 ---p +--p Add a column to a table. --/p @@ -3424,7 +3424,7 @@ Add a column to a table. --h3 11.12 (p572) --/h3 ---p +--p Change a column and its definition. --/p @@ -3440,7 +3440,7 @@ Change a column and its definition. --h3 11.13 (p573) --/h3 ---p +--p Set the default clause for a column. --/p @@ -3449,7 +3449,7 @@ Set the default clause for a column. --h3 11.14 (p574) --/h3 ---p +--p Drop the default clause from a column. --/p @@ -3458,7 +3458,7 @@ Drop the default clause from a column. --h3 11.15 (p575) --/h3 ---p +--p Add a non-empty scope for an existing column of data type REF in a base table. --/p @@ -3467,7 +3467,7 @@ Add a non-empty scope for an existing column of data type REF in a base table. --h3 11.16 (p576) --/h3 ---p +--p Drop the scope from an existing column of data type REF in a base table. --/p @@ -3476,7 +3476,7 @@ Drop the scope from an existing column of data type REF in a base table. --h3 11.17 (p578) --/h3 ---p +--p Change the options specified for an identity column. --/p @@ -3489,7 +3489,7 @@ Change the options specified for an identity column. --h3 11.18 (p579) --/h3 ---p +--p Destroy a column of a base table. --/p @@ -3498,7 +3498,7 @@ Destroy a column of a base table. --h3 11.19 (p581) --/h3 ---p +--p Add a constraint to a table. --/p @@ -3507,7 +3507,7 @@ Add a constraint to a table. --h3 11.20 (p582) --/h3 ---p +--p Destroy a constraint on a table. --/p @@ -3516,7 +3516,7 @@ Destroy a constraint on a table. --h3 11.21 (p585) --/h3 ---p +--p Destroy a table. --/p @@ -3525,7 +3525,7 @@ Destroy a table. --h3 11.22 (p588) --/h3 ---p +--p Define a viewed table. --/p @@ -3554,7 +3554,7 @@ Define a viewed table. --h3 11.23 (p598) --/h3 ---p +--p Destroy a view. --/p @@ -3563,7 +3563,7 @@ Destroy a view. --h3 11.24 (p601) --/h3 ---p +--p Define a domain. --/p @@ -3576,7 +3576,7 @@ Define a domain. --h3 11.25 (p603) --/h3 ---p +--p Change a domain and its definition. --/p @@ -3591,7 +3591,7 @@ Change a domain and its definition. --h3 11.26 (p604) --/h3 ---p +--p Set the default value in a domain. --/p @@ -3600,7 +3600,7 @@ Set the default value in a domain. --h3 11.27 (p605) --/h3 ---p +--p Remove the default clause of a domain. --/p @@ -3609,7 +3609,7 @@ Remove the default clause of a domain. --h3 11.28 (p606) --/h3 ---p +--p Add a constraint to a domain. --/p @@ -3618,7 +3618,7 @@ Add a constraint to a domain. --h3 11.29 (p607) --/h3 ---p +--p Destroy a constraint on a domain. --/p @@ -3627,7 +3627,7 @@ Destroy a constraint on a domain. --h3 11.30 (p608) --/h3 ---p +--p Destroy a domain. --/p @@ -3636,7 +3636,7 @@ Destroy a domain. --h3 11.31 (p610) --/h3 ---p +--p Define a character set. --/p @@ -3648,7 +3648,7 @@ Define a character set. --h3 11.32 (p612) --/h3 ---p +--p Destroy a character set. --/p @@ -3657,7 +3657,7 @@ Destroy a character set. --h3 11.33 (p614) --/h3 ---p +--p Define a collating sequence. --/p @@ -3672,7 +3672,7 @@ Define a collating sequence. --h3 11.34 (p616) --/h3 ---p +--p Destroy a collating sequence. --/p @@ -3681,7 +3681,7 @@ Destroy a collating sequence. --h3 11.35 (p618) --/h3 ---p +--p Define a character transliteration. --/p @@ -3702,7 +3702,7 @@ Define a character transliteration. --h3 11.36 (p621) --/h3 ---p +--p Destroy a character transliteration. --/p @@ -3711,7 +3711,7 @@ Destroy a character transliteration. --h3 11.37 (p623) --/h3 ---p +--p Specify an integrity constraint. --/p @@ -3721,7 +3721,7 @@ Specify an integrity constraint. --h3 11.38 (p625) --/h3 ---p +--p Destroy an assertion. --/p @@ -3730,7 +3730,7 @@ Destroy an assertion. --h3 11.39 (p627) --/h3 ---p +--p Define triggered SQL-statements. --/p @@ -3773,7 +3773,7 @@ Define triggered SQL-statements. --h3 11.40 (p631) --/h3 ---p +--p Destroy a trigger. --/p @@ -3782,7 +3782,7 @@ Destroy a trigger. --h3 11.41 (p632) --/h3 ---p +--p Define a user-defined type. --/p @@ -3881,7 +3881,7 @@ Define a user-defined type. --h3 11.42 (p648) --/h3 ---p +--p Define an attribute of a structured type. --/p @@ -3893,7 +3893,7 @@ Define an attribute of a structured type. --h3 11.43 (p650) --/h3 ---p +--p Change the definition of a user-defined type. --/p @@ -3910,7 +3910,7 @@ ALTER TYPE --h3 11.44 (p651) --/h3 ---p +--p Add an attribute to a user-defined type. --/p @@ -3919,7 +3919,7 @@ Add an attribute to a user-defined type. --h3 11.45 (p653) --/h3 ---p +--p Destroy an attribute of a user-defined type. --/p @@ -3928,7 +3928,7 @@ Destroy an attribute of a user-defined type. --h3 11.46 (p655) --/h3 ---p +--p Add an original method specification to a user-defined type. --/p @@ -3937,7 +3937,7 @@ Add an original method specification to a user-defined type. --h3 11.47 (p661) --/h3 ---p +--p Add an overriding method specification to a user-defined type. --/p @@ -3946,7 +3946,7 @@ Add an overriding method specification to a user-defined type. --h3 11.48 (p666) --/h3 ---p +--p Remove a method specification from a user-defined type. --/p @@ -3957,7 +3957,7 @@ Remove a method specification from a user-defined type. --h3 11.49 (p670) --/h3 ---p +--p Destroy a user-defined type. --/p @@ -3966,7 +3966,7 @@ Destroy a user-defined type. --h3 11.50 (p673) --/h3 ---p +--p Define an SQL-invoked routine. --/p @@ -4091,7 +4091,7 @@ Define an SQL-invoked routine. --h3 11.51 (p698) --/h3 ---p +--p Alter a characteristic of an SQL-invoked routine. --/p @@ -4112,7 +4112,7 @@ Alter a characteristic of an SQL-invoked routine. --h3 11.52 (p701) --/h3 ---p +--p Destroy an SQL-invoked routine. --/p @@ -4121,7 +4121,7 @@ Destroy an SQL-invoked routine. --h3 11.53 (p703) --/h3 ---p +--p Define a user-defined cast. --/p @@ -4138,7 +4138,7 @@ Define a user-defined cast. --h3 11.54 (p705) --/h3 ---p +--p Destroy a user-defined cast. --/p @@ -4148,7 +4148,7 @@ Destroy a user-defined cast. --h3 11.55 (p707) --/h3 ---p +--p Define a user-defined ordering for a user-defined type. --/p @@ -4176,7 +4176,7 @@ Define a user-defined ordering for a user-defined type. --h3 11.56 (p710) --/h3 ---p +--p Destroy a user-defined ordering method. --/p @@ -4186,7 +4186,7 @@ Destroy a user-defined ordering method. --h3 11.57 (p712) --/h3 ---p +--p Define one or more transform functions for a user-defined type. --/p @@ -4211,7 +4211,7 @@ Define one or more transform functions for a user-defined type. --h3 11.58 (p715) --/h3 ---p +--p Change the definition of one or more transform groups. --/p @@ -4227,7 +4227,7 @@ Change the definition of one or more transform groups. --h3 11.59 (p717) --/h3 ---p +--p Add a transform element ( and/or ) to an existing transform group. --/p @@ -4236,7 +4236,7 @@ Add a transform element ( and/or ) to an existing transform gr --h3 11.60 (p719) --/h3 ---p +--p Remove a transform element ( and/or ) from a transform group. --/p @@ -4247,7 +4247,7 @@ Remove a transform element ( and/or ) from a transform group. --h3 11.61 (p721) --/h3 ---p +--p Remove one or more transform functions associated with a transform. --/p @@ -4261,7 +4261,7 @@ Remove one or more transform functions associated with a transform. --h3 11.62 (p724) --/h3 ---p +--p Define an external sequence generator. --/p @@ -4306,7 +4306,7 @@ Define an external sequence generator. --h3 11.63 (p726) --/h3 ---p +--p Change the definition of an external sequence generator. --/p @@ -4326,7 +4326,7 @@ Change the definition of an external sequence generator. --h3 11.64 (p727) --/h3 ---p +--p Destroy an external sequence generator. --/p @@ -4339,7 +4339,7 @@ Destroy an external sequence generator. --h3 12.1 (p729) --/h3 ---p +--p Define privileges and role authorizations. --/p @@ -4348,7 +4348,7 @@ Define privileges and role authorizations. --h3 12.2 (p734) --/h3 ---p +--p Define privileges. --/p @@ -4359,7 +4359,7 @@ Define privileges. --h3 12.3 (p737) --/h3 ---p +--p Specify privileges. --/p @@ -4403,7 +4403,7 @@ Specify privileges. --h3 12.4 (p741) --/h3 ---p +--p Define a role. --/p @@ -4412,7 +4412,7 @@ Define a role. --h3 12.5 (p742) --/h3 ---p +--p Define role authorizations. --/p @@ -4425,7 +4425,7 @@ Define role authorizations. --h3 12.6 (p744) --/h3 ---p +--p Destroy a role. --/p @@ -4434,7 +4434,7 @@ Destroy a role. --h3 12.7 (p745) --/h3 ---p +--p Destroy privileges and role authorizations. --/p @@ -4461,7 +4461,7 @@ Destroy privileges and role authorizations. --h3 13.1 (p763) --/h3 ---p +--p Define an SQL-client module. --/p @@ -4509,7 +4509,7 @@ The alternative definition is now commented out. --h3 13.2 (p768) --/h3 ---p +--p Name an SQL-client module. --/p @@ -4521,7 +4521,7 @@ Name an SQL-client module. --h3 13.3 (p769) --/h3 ---p +--p Define an externally-invoked procedure. --/p @@ -4546,7 +4546,7 @@ Define an externally-invoked procedure. --h3 13.5 (p788) --/h3 ---p +--p Define all of the SQL-statements that are s. --/p @@ -4759,7 +4759,7 @@ unsigned char should be used. --h3 14.1 (p807) --/h3 ---p +--p Define a cursor. --/p @@ -4775,7 +4775,7 @@ Define a cursor. ::= WITH RETURN | WITHOUT RETURN - ::= [ ] [ ] + ::= [ ] [ ] ::= FOR { READ ONLY | UPDATE [ OF ] } @@ -4784,7 +4784,7 @@ Define a cursor. --h3 14.2 (p813) --/h3 ---p +--p Open a cursor. --/p @@ -4793,7 +4793,7 @@ Open a cursor. --h3 14.3 (p815) --/h3 ---p +--p Position a cursor on a specified row of a table and retrieve values from that row. --/p @@ -4821,7 +4821,7 @@ Close a cursor. --h3 14.5 columns or s contained in a prepared statement or about the columns of the result set associated with a cursor. --/p @@ -5544,7 +5544,7 @@ in a prepared statement or about the columns of the result set associated with a --h3 19.10 (p961) --/h3 ---p +--p Supply input values for an . --/p @@ -5559,7 +5559,7 @@ Supply input values for an . --h3 19.11 (p965) --/h3 ---p +--p Supply output variables for an . --/p @@ -5574,7 +5574,7 @@ Supply output variables for an . --h3 19.12 (p970) --/h3 ---p +--p Associate input SQL parameters and output targets with a prepared statement and execute the statement. --/p @@ -5588,7 +5588,7 @@ statement. --h3 19.13 (p972) --/h3 ---p +--p Dynamically prepare and execute a preparable statement. --/p @@ -5597,7 +5597,7 @@ Dynamically prepare and execute a preparable statement. --h3 19.14 (p973) --/h3 ---p +--p Declare a cursor to be associated with a , which may in turn be associated with a . --/p @@ -5609,7 +5609,7 @@ Declare a cursor to be associated with a , which may in turn be --h3 19.15 (p974) --/h3 ---p +--p Define a cursor based on a prepared statement for a or assign a cursor to the ordered set of result sets returned from an SQL-invoked procedure. --/p @@ -5627,7 +5627,7 @@ ordered set of result sets returned from an SQL-invoked procedure. --h3 19.16 (p976) --/h3 ---p +--p Associate input dynamic parameters with a and open the cursor. --/p @@ -5636,7 +5636,7 @@ Associate input dynamic parameters with a and open the cu --h3 19.17 (p977) --/h3 ---p +--p Fetch a row for a cursor declared with a . --/p @@ -5645,7 +5645,7 @@ Fetch a row for a cursor declared with a . --h3 19.18 (p978) --/h3 ---p +--p Retrieve values from a dynamically-specified row of a table. --/p @@ -5654,7 +5654,7 @@ Retrieve values from a dynamically-specified row of a table. --h3 19.19 (p979) --/h3 ---p +--p Close a cursor. --/p @@ -5663,7 +5663,7 @@ Close a cursor. --h3 19.20 (p980) --/h3 ---p +--p Delete a row of a table. --/p @@ -5672,7 +5672,7 @@ Delete a row of a table. --h3 19.21 (p982) --/h3 ---p +--p Update a row of a table. --/p @@ -5682,7 +5682,7 @@ Update a row of a table. --h3 19.22 (p984) --/h3 ---p +--p Delete a row of a table through a dynamic cursor. --/p @@ -5692,7 +5692,7 @@ Delete a row of a table through a dynamic cursor. --h3 19.23 (p986) --/h3 ---p +--p Update a row of a table through a dynamic cursor. --/p @@ -5706,7 +5706,7 @@ Update a row of a table through a dynamic cursor. --h3 20.1 (p989) --/h3 ---p +--p Specify an . --/p @@ -5789,7 +5789,7 @@ Specify an . --h3 20.2 (p1001) --/h3 ---p +--p Specify the action to be taken when an SQL-statement causes a specific class of condition to be raised. --/p @@ -5827,7 +5827,7 @@ raised. --h3 20.3 (p1005) --/h3 ---p +--p Specify an . --/p @@ -5903,7 +5903,7 @@ Specify an . --h3 20.4 (p1011) --/h3 ---p +--p Specify an . --/p @@ -6026,7 +6026,7 @@ It is slightly less surprising that the grammar doesn't include C99 keywords suc --h3 20.5 (p1019) --/h3 ---p +--p Specify an . --/p @@ -6115,7 +6115,7 @@ Specify an . --h3 20.6 (p1025) --/h3 ---p +--p Specify an . --/p @@ -6171,7 +6171,7 @@ Specify an . --h3 20.7 (p1030) --/h3 ---p +--p Specify an . --/p @@ -6231,7 +6231,7 @@ Specify an . --h3 20.8 (p1035) --/h3 ---p +--p Specify an . --/p @@ -6285,7 +6285,7 @@ Specify an . --h3 20.9 (p1040) --/h3 ---p +--p Specify an . --/p @@ -6355,7 +6355,7 @@ Specify an . --h3 21.1 (p1047) --/h3 ---p +--p Specify direct execution of SQL. --/p @@ -6382,7 +6382,7 @@ Specify direct execution of SQL. --h3 21.2 (p1051) --/h3 ---p +--p Specify a statement to retrieve multiple rows from a specified table. --/p @@ -6693,7 +6693,7 @@ Table 33 - Implied feature relationships --/p --##
    ---## +--## --## --## --## diff --git a/sql-2003-2.bnf.html b/sql-2003-2.bnf.html index fd04328..e486ac3 100644 --- a/sql-2003-2.bnf.html +++ b/sql-2003-2.bnf.html @@ -16,9 +16,9 @@

    BNF Grammar for ISO/IEC 9075-2:2003 - Database Language SQL (SQL-2003) SQL/

    -Derived from file sql-2003-2.bnf version 1.22 dated 2017/11/14 05:32:12 +Derived from file sql-2003-2.bnf version 1.23 dated 2017/11/14 06:53:22
    -Generated on 2017-11-14 05:32:24+00:00 by file bnf2html.pl version 3.14 dated 2017/11/13 20:42:26 +Generated on 2017-11-14 06:53:25+00:00 by file bnf2html.pl version 3.16 dated 2017/11/14 06:53:22

    @@ -12461,6 +12461,10 @@

    Cross-Reference Table: Keywords

    <rollback statement> + + + - - - - - - + + + + + + - - - + + + - - - - - - + + + + + + - - - - - - + + + - - - + + + - - - + + + + + + - - - @@ -11129,16 +11129,16 @@

    Cross-Reference Table: Keywords

    <PL/I type fixed decimal> + + + - - - - - - + + + - - - + + + --## --##
    Feature ID Feature Description Implied Feature ID Implied Feature Description
    Feature ID Feature Description Implied Feature ID Implied Feature Description
    B032 Extended dynamic SQL B031 Basic dynamic SQL
    B034 Dynamic specification of cursor attributes B031 Basic dynamic SQL
    F381 Extended schema manipulation F491 Constraint management
    char <C character type> +
    CHAR <Ada qualified type specification> <Ada unqualified type specification> @@ -12471,10 +12475,6 @@

    Cross-Reference Table: Keywords

    <reserved word>
    char <C character type> -
    CHARACTER <Ada CLOB variable> <Ada qualified type specification> @@ -13307,16 +13307,16 @@

    Cross-Reference Table: Keywords

    <PL/I type fixed decimal>
    float <C numeric variable> -
    FLOAT <approximate numeric type> <PL/I type float binary> <reserved word>
    float <C numeric variable> +
    FLOOR <floor function> <non-reserved word> @@ -15802,8 +15802,7 @@

    Cross-Reference Table: Keywords

    Top


    -Please send feedback to Jonathan Leffler, variously: - jonathan.leffler@hcl.com or +Please send feedback to Jonathan Leffler: jonathan.leffler@gmail.com . diff --git a/sql-92.bnf.html b/sql-92.bnf.html index ecef783..0a6b381 100644 --- a/sql-92.bnf.html +++ b/sql-92.bnf.html @@ -18,7 +18,7 @@

    BNF Grammar for ISO/IEC 9075:1992 - Database Language SQL (SQL-92)

    Derived from file sql-92.bnf version 2.5 dated 2017/01/17 01:05:03
    -Generated on 2017-11-14 05:32:23+00:00 by file bnf2html.pl version 3.14 dated 2017/11/13 20:42:26 +Generated on 2017-11-14 06:53:25+00:00 by file bnf2html.pl version 3.16 dated 2017/11/14 06:53:22

    @@ -4953,6 +4953,10 @@

    Cross-Reference Table: Keywords

    <non-reserved word>
    char <C character variable> +
    CHAR <Ada qualified type specification> <Ada unqualified type specification> @@ -4961,10 +4965,6 @@

    Cross-Reference Table: Keywords

    <reserved word>
    char <C character variable> -
    CHARACTER <Ada qualified type specification> <C character variable> @@ -5362,15 +5362,15 @@

    Cross-Reference Table: Keywords

    <reserved word>
    double <C numeric variable> +
    DOUBLE <approximate numeric type> <reserved word>
    double <C numeric variable> -
    DOUBLE_PRECISION <Ada qualified type specification> <Ada unqualified type specification> @@ -5490,15 +5490,15 @@

    Cross-Reference Table: Keywords

    <reserved word>
    float <C numeric variable> -
    FLOAT <approximate numeric type> <reserved word>
    float <C numeric variable> +
    FOR <allocate cursor statement> <bit substring function> @@ -6614,8 +6614,7 @@

    Cross-Reference Table: Keywords

    Top


    -Please send feedback to Jonathan Leffler, variously: - jonathan.leffler@hcl.com or +Please send feedback to Jonathan Leffler: jonathan.leffler@gmail.com . diff --git a/sql-99.bnf b/sql-99.bnf index 158aae8..d7d1f8e 100644 --- a/sql-99.bnf +++ b/sql-99.bnf @@ -1,7 +1,7 @@ BNF Grammar for ISO/IEC 9075:1999 - Database Language SQL (SQL-99) ================================================================== -@(#)$Id: sql-99.bnf,v 2.9 2017/11/14 06:20:28 jleffler Exp $ +@(#)$Id: sql-99.bnf,v 2.10 2017/11/14 06:53:22 jleffler Exp $ --p Using Appendix G of "SQL:1999 Understanding Relational Language Components" by J @@ -1480,7 +1480,7 @@ This probably says something about the and --p --small ---i +--i Note that must be a pair of characters with no intervening space, not a pair of colon symbols separated by arbitrary white space. @@ -3779,7 +3779,7 @@ Much, if not all, of the following material comes from ISO/IEC 9075-5:1999, SQL/ --p --small ---i +--i Note that must be a pair of period characters with no intervening space, not a pair of period symbols separated by arbitrary white space. @@ -4442,7 +4442,7 @@ This module authorization clause definition from 9075-5 (SQL/Bindings) is similar to a previous occurrence from 9075-2 (SQL/Foundation) but the optional 'FOR STATIC ONLY' and 'FOR STATIC AND DYNAMIC' clauses were not present before. -The earlier definition is commented out. +The earlier definition is commented out. --/i --/small --/p diff --git a/sql-99.bnf.html b/sql-99.bnf.html index 3e1b6b4..81144ea 100644 --- a/sql-99.bnf.html +++ b/sql-99.bnf.html @@ -16,9 +16,9 @@

    BNF Grammar for ISO/IEC 9075:1999 - Database Language SQL (SQL-99)


    -Derived from file sql-99.bnf version 2.9 dated 2017/11/14 06:20:28 +Derived from file sql-99.bnf version 2.10 dated 2017/11/14 06:53:22
    -Generated on 2017-11-14 06:20:30+00:00 by file bnf2html.pl version 3.14 dated 2017/11/13 20:42:26 +Generated on 2017-11-14 06:53:25+00:00 by file bnf2html.pl version 3.16 dated 2017/11/14 06:53:22

    @@ -10211,6 +10211,10 @@

    Cross-Reference Table: Keywords

    <rollback statement>
    char <C character type> +
    CHAR <Ada qualified type specification> <Ada unqualified type specification> @@ -10221,10 +10225,6 @@

    Cross-Reference Table: Keywords

    <reserved word>
    char <C character type> -
    CHARACTER <Ada CLOB variable> <Ada qualified type specification> @@ -10430,15 +10430,15 @@

    Cross-Reference Table: Keywords

    <non-reserved word>
    Connect <CLI generic name> -
    CONNECT <connect statement> <reserved word>
    Connect <CLI generic name> +
    CONNECTION <reserved word> <set connection statement> @@ -10865,16 +10865,16 @@

    Cross-Reference Table: Keywords

    <reserved word>
    double <C numeric variable> -
    DOUBLE <approximate numeric type> <Fortran type specification> <reserved word>
    double <C numeric variable> +
    DOUBLE_PRECISION <Ada qualified type specification> <Ada unqualified type specification> @@ -11057,10 +11057,6 @@

    Cross-Reference Table: Keywords

    <CLI generic name>
    Execute <CLI generic name> -
    EXECUTE <action> <execute immediate statement> @@ -11068,6 +11064,10 @@

    Cross-Reference Table: Keywords

    <reserved word>
    Execute <CLI generic name> +
    EXISTS <exists predicate> <reserved word> @@ -11099,16 +11099,16 @@

    Cross-Reference Table: Keywords

    <truth value>
    Fetch <CLI generic name> +
    FETCH <dynamic fetch statement> <fetch statement> <reserved word>
    Fetch <CLI generic name> -
    FetchScroll <CLI generic name>
    float <C numeric variable> +
    FLOAT <approximate numeric type> <PL/I type float binary> <reserved word>
    float <C numeric variable> -
    FOR <bit substring function> <blob overlay function> @@ -11995,11 +11995,6 @@

    Cross-Reference Table: Keywords

    <CLI generic name>
    No <Package PKG(i)> - <Part (n) no> -
    NO <commit statement> <cursor scrollability> @@ -12014,6 +12009,11 @@

    Cross-Reference Table: Keywords

    <Part (n)>
    No <Package PKG(i)> + <Part (n) no> +
    NONE <reserved word> <role specification> @@ -12335,16 +12335,16 @@

    Cross-Reference Table: Keywords

    <reserved word>
    Prepare <CLI generic name> -
    PREPARE <deallocate prepared statement> <prepare statement> <reserved word>
    Prepare <CLI generic name> +
    PRESERVE <reserved word> <table commit action> @@ -13604,8 +13604,7 @@

    Cross-Reference Table: Keywords

    Top


    -Please send feedback to Jonathan Leffler, variously: - jonathan.leffler@hcl.com or +Please send feedback to Jonathan Leffler: jonathan.leffler@gmail.com . From 410c99af926f8d17891b294cec31584e9dc0f700 Mon Sep 17 00:00:00 2001 From: David Whitten Date: Thu, 23 May 2019 13:07:00 -0400 Subject: [PATCH 15/33] Fixed Typo and modification date The previous version had "non-standar Informix" instead of "non-standard Informix" I'm also curious about the need for the Informix paragraph as the The document http://informixsoftware.com/ids117/Guide%20to%20SQL%20Tutorial%20Version%20117.pdf says: Earlier versions of the database server supported only the IBM Informix extension to the ANSI-SQL standard syntax for outer joins. This syntax is still supported. However, the ANSI-SQL standard syntax provides for more flexibility with creating queries. It is recommended that you use the ANSI-SQL standard syntax to create new queries. Whichever form of syntax you use, you must use it for all outer joins in a single query block. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5439e38..8deb168 100644 --- a/README.md +++ b/README.md @@ -80,7 +80,7 @@ Also available: ## Informix OUTER Join Syntax The file [`outer-joins.html`](outer-joins.html) is an explanation of the -non-standar Informix OUTER join syntax and semantics. +non-standard Informix OUTER join syntax and semantics. ## Conversion tools From daafef51003e57b23cf65923b137c036238a04cc Mon Sep 17 00:00:00 2001 From: ronsavage Date: Mon, 23 Dec 2019 15:54:25 +1100 Subject: [PATCH 16/33] Add Syntax.rules.txt --- Syntax.rules.txt | 411 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 411 insertions(+) create mode 100644 Syntax.rules.txt diff --git a/Syntax.rules.txt b/Syntax.rules.txt new file mode 100644 index 0000000..173a3e3 --- /dev/null +++ b/Syntax.rules.txt @@ -0,0 +1,411 @@ +That (!! See the Syntax Rules) is literally what it says in the PDF +containing the standard. And the Syntax Rules are one part of the verbiage +in the standard supporting the grammar — specifying what it means. The +first such place where it occurs is: + + <#xref-space> ::= !! See the Syntax Rules. + +And if I go to the full pDF, I find 5.1 says: + +Information technology — Database languages — SQL — Part 2: Foundation +(SQL/Foundation) + +Syntax Rules + +1) Every character set shall contain a character that is equivalent +to U+0020. + +Access Rules + +None. + +General Rules + +1) There is a one-to-one correspondence between the symbols contained in + and the symbols contained in such that, for all i, the symbol defined as the i-th +alternative for corresponds to the symbol +defined as the i-th alternative for . + +Conformance Rules + +None. +And, in this case, that's all it has to say. Each section of the standard +has sub-headings 'Function', 'Format' (containing the BNF), 'Syntax Rules', +'Access Rules', 'General Rules' (usually the biggest section), and +'Conformance Rules'. The next pair of occurrences are: + + ::= + + + +| + + ::= !! See the Syntax Rules + + ::= !! See the Syntax Rules + + + +That's pulled from the PDF, not the HTML. This time, we find: + +Syntax Rules + +1) An is any character in the Unicode General Category +classes "Lu", "Ll", "Lt", "Lm", + +"Lo", or "Nl". + +NOTE 58 — The Unicode General Category classes "Lu", "Ll", "Lt", "Lm", +"Lo", and "Nl" are assigned to Unicode characters + +that are, respectively, upper-case letters, lower-case letters, title-case +letters, modifier letters, other letters, and letter numbers. + +2) An is U+00B7, "Middle Dot", or any character in the +Unicode General Category classes + +"Mn", "Mc", "Nd", "Pc", or "Cf". + +NOTE 59 — The Unicode General Category classes "Mn", "Mc", "Nd", "Pc", and +"Cf" are assigned to Unicode characters that + +are, respectively, nonspacing marks, spacing combining marks, decimal +numbers, connector punctuations, and formatting codes. + +Very detailed specification stuff — but not something you can easily put +into the BNF. It belongs in the lexical analyzer, probably. + +Another example — not to do with characters this time: + <#xref-preparable +implementation-defined statement> ::= !! See the Syntax Rules. + +Here the further information is: + +3) The Format and Syntax Rules for are implementation-defined. + +And another pair of them: + + <#xref-SQLSTATE class value> ::= +<#SQLSTATE char> <#SQLSTATE char> !! See the Syntax Rules. + + <#xref-SQLSTATE subclass value> ::= <#SQLSTATE char> <#SQLSTATE char> +<#SQLSTATE char> !! See the Syntax Rules. +The Syntax Rules say: + +3) In the values of and , +there shall be no + +between the s. + +4) The values of and shall +correspond to class values + +and subclass values, respectively, specified in Table 32, "SQLSTATE class +and subclass values". + +Expanding on this last example, here is the copy'n'paste of the Syntax +Rules through the end of the section: + +Syntax Rules + +1) SQLWARNING, NOT FOUND, and SQLEXCEPTION correspond to SQLSTATE class +values corresponding + +to categories W, N, and X in Table 32, "SQLSTATE class and subclass values", +respectively. + +©ISO/IEC 2003 – All rights reserved Embedded SQL 1001 + +ISO/IEC 9075-2:2003 (E) + +20.2 + +2) An contained in an applies to an contained in that if and +only if the appears after the that has +condition C in the text sequence + +of the and no other E that satisfies one + +of the following conditions appears between the and the in the text sequence of the . + +Let D be the contained in E. + +a) D is the same as C. + +b) D is a and belongs to the same class to which C belongs. + +c) D contains an , but does not contain an , and + +E contains the same that C contains. + +d) D contains the that corresponds to integrity +constraint violation and C + +contains CONSTRAINT. + +3) In the values of and , +there shall be no + +between the s. + +4) The values of and shall +correspond to class values + +and subclass values, respectively, specified in Table 32, "SQLSTATE class +and subclass values". + +5) If an specifies a , then the +, , or of the shall be such that a +host language GO TO statement + +specifying that , , or + is valid at every + + to which the +applies. + +NOTE 445 — + +If an is contained in an , then the of a should specify a that is a label_name in the +containing . + +If an is contained in an , then the of a + +should specify a that is a label in the containing +. + +If an is contained in an , then the of a + + should specify a that is a section-name or +an unqualified paragraph-name in the containing + +. + +If an is contained in an , then the of a should be an that is the statement label of an +executable statement that appears in the same program + +unit as the . + +If an is contained in an , then the of a + + should be a gotoargument that is the statement label of an +executable statement that appears in the same . + +If an is contained in an , then the of a should be an that is a label. + +If an is contained in an , then the of a should specify either a or a . + +Case: + +— If is specified, then the +should be a label constant in the containing + +. + +ISO/IEC 9075-2:2003 (E) + +20.2 + +1002 Foundation (SQL/Foundation) ©ISO/IEC 2003 – All rights reserved + +— If is specified, then the should be a PL/I label variable declared in + +the containing . + +Access Rules + +None. + +General Rules + +1) Immediately after the execution of an STMT in +an + +that returns an SQLSTATE value other than successful completion: + +a) Let E be the set of s that are contained +in the containing STMT, that applies to STMT, and that specifies a + that is . + +b) Let CV and SCV be respectively the values of the class and subclass of +the SQLSTATE value that + +indicates the result of the . + +c) If the execution of the caused the violation +of one or more constraints or + +assertions, then: + +i) Let ECN be the set of s in E that +specify CONSTRAINT and + +the of a constraint that was violated by execution of +STMT. + +ii) If ECN contains more than one , then an +implementationdependent + + is chosen from ECN; otherwise, the single + + in ECN is chosen. + +iii) A GO TO statement of the host language is performed, specifying the +, + +, or of the specified +in the chosen from ECN. + +d) Otherwise: + +i) Let ECS be the set of s in E that +specify SQLSTATE, an + +, and an . + +ii) If ECS contains an EY that specifies +an identical to CV and an identical to SCV, +then a GO TO + +statement of the host language is performed, specifying the , , or of the specified in the + EY. + +iii) Otherwise: + +1) Let EC be the set of s in E that specify +SQLSTATE and + +an without an . + +2) If EC contains an EY that specifies an + identical to CV, then a GO TO statement of the host language +is performed, + +©ISO/IEC 2003 – All rights reserved Embedded SQL 1003 + +ISO/IEC 9075-2:2003 (E) + +20.2 + +specifying the , , or + of + +the specified in the EY. + +3) Otherwise: + +A) Let EX be the set of s in E that specify +SQLEXCEPTION. + +B) If EX contains an EY and CV belongs to +Category + +X in Table 32, "SQLSTATE class and subclass values", then a GO TO statement +of the + +host language is performed, specifying the , , or of the specified in the EY. + +C) Otherwise: + +I) Let EW be the set of s in E that specify +SQLWARNING. + +II) If EW contains an EY and CV belongs to + +Category W in Table 32, "SQLSTATE class and subclass values", then a GO + +TO statement of the host language is performed, specifying the , , or of the + +specified in the EY. + +III) Otherwise, let ENF be the set of s in +E that + +specify NOT FOUND. If ENF contains an + +EY and CV belongs to Category N in Table 32, "SQLSTATE class and subclass + +values", then a GO TO statement of the host language is performed, +specifying + +the , , or of + +the specified in the EY. + +Conformance Rules + +1) Without Feature B041, "Extensions to embedded SQL exception +declarations", conforming SQL language + +shall not contain an that contains either SQLSTATE or +CONSTRAINT. + +2) Without Feature F491, "Constraint management", conforming SQL language +shall not contain an that contains a . + +ISO/IEC 9075-2:2003 (E) + +20.2 + +1004 From 181280d959abca149b02416f21cf48632a4887ea Mon Sep 17 00:00:00 2001 From: ronsavage Date: Mon, 23 Dec 2019 15:59:40 +1100 Subject: [PATCH 17/33] Add a comment to README.md about the new file Syntax.rules.txt --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 8deb168..5daa285 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,13 @@ It may not be the most recent release, but the technical content is mostly valid The download link is not functional — you can obtain the material for the latest release from https://github.com/ronsavage/SQL/releases/latest. +** !! Syntax Rules + +Regarding the text '!! See the Syntax Rules': That is literally what it says in the PDF +containing the standard. + +For an extract of the standard about these rules see the file 'Syntax.rules.txt'. + *This project is still in transition to GitHub. The links in this README.md file lead to the pages in the GitHub source tree. Most of them will display the HTML source — not a rendered HTML image. From fb3fbdd2eb8ef6f3a9d3cd0650713e544cc0a78e Mon Sep 17 00:00:00 2001 From: GCer-Hidenori Date: Mon, 24 Feb 2020 16:00:04 +0900 Subject: [PATCH 18/33] [cosmetic change]align indent of sq l-2003-2.bnf ::= -ALTER TYPE + ALTER TYPE --- sql-2003-2.bnf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql-2003-2.bnf b/sql-2003-2.bnf index a726988..f7ba810 100644 --- a/sql-2003-2.bnf +++ b/sql-2003-2.bnf @@ -3898,7 +3898,7 @@ Change the definition of a user-defined type. --/p ::= -ALTER TYPE + ALTER TYPE ::= From 95914ac78a6ad84f6f1a2e63186af0cde3828805 Mon Sep 17 00:00:00 2001 From: GCer-Hidenori Date: Sat, 29 Feb 2020 18:36:49 +0900 Subject: [PATCH 19/33] [cosmetic change]add missing --/p to comment to sql-2003-1.bnf --- sql-2003-1.bnf | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sql-2003-1.bnf b/sql-2003-1.bnf index 3682476..19e8840 100644 --- a/sql-2003-1.bnf +++ b/sql-2003-1.bnf @@ -226,6 +226,7 @@ language as specified in the SQL Feature Taxonomy Annex of the various parts of --##
    Feature F411 Time zone specification
    Feature F555 Enhanced seconds precision
    +--/p --hr --h2 @@ -249,6 +250,7 @@ language as specified in the SQL Feature Taxonomy Annex of the various parts of --## Feature T212 Enhanced trigger capability --## Feature T191 Referential action RESTRICT --## +--/p --hr --h2 B.3 PSM @@ -266,6 +268,7 @@ SQL Feature Taxonomy Annex of the various parts of ISO/IEC 9075. --## Feature P002 Computational completeness --## Feature P003 Information Schema views --## +--/p --hr --h2 B.4 CLI @@ -286,6 +289,7 @@ SQL Feature Taxonomy Annex of the various parts of ISO/IEC 9075. --## Feature C071 Scroll Concurrency --## Feature C081 Read-only data source --## +--/p --hr --h2 B.5 Basic object support @@ -304,6 +308,7 @@ specified in the SQL Feature Taxonomy Annex of the various parts of ISO/IEC 9075 --## Feature S151 Type predicate --## Feature T041 Basic LOB data type support --## +--/p --hr --h2 B.6 Enhanced object support @@ -327,6 +332,7 @@ Feature Taxonomy Annex of the various parts of ISO/IEC 9075. --## Feature S231 Structured type locators --## Feature S241 Transform functions --## +--/p --hr --h2 B.7 Active database @@ -341,6 +347,7 @@ specified in the SQL Feature Taxonomy Annex of the various parts of ISO/IEC 9075 --## --## --##
    Feature T211 Basic trigger capability
    +--/p --hr --h2 B.8 OLAP @@ -356,6 +363,7 @@ SQL Feature Taxonomy Annex of the various parts of ISO/IEC 9075. --## Feature T431 Extended grouping capabilities --## Feature T611 Elementary OLAP operators --## +--/p --hr --h2 END OF SQL-2003-1 GRAMMAR From d6b2ad06d4b16cbb8cc9fb206d5f925c2b383674 Mon Sep 17 00:00:00 2001 From: GCer-Hidenori Date: Sat, 29 Feb 2020 19:39:12 +0900 Subject: [PATCH 20/33] [cosmetic change]add missing space before vertical bar to sql-2003-1.bnf --- sql-2003-1.bnf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sql-2003-1.bnf b/sql-2003-1.bnf index 19e8840..ab9fbd7 100644 --- a/sql-2003-1.bnf +++ b/sql-2003-1.bnf @@ -71,9 +71,9 @@ the SQL object identifier claims to provide the package. ::= 2 | High 2 -<1999> ::= 3| edition1999 3 +<1999> ::= 3 | edition1999 3 -<2003> ::= 4| edition2003 4 +<2003> ::= 4 | edition2003 4 ::= From b2dac30785f450709ff9ba06588fa301fd040922 Mon Sep 17 00:00:00 2001 From: GCer-Hidenori Date: Mon, 2 Mar 2020 21:49:44 +0900 Subject: [PATCH 21/33] [fix]fix typo on sql-2003-1.bnf,sql-2003-1.bnf.html --- sql-2003-1.bnf | 2 +- sql-2003-1.bnf.html | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sql-2003-1.bnf b/sql-2003-1.bnf index ab9fbd7..1323614 100644 --- a/sql-2003-1.bnf +++ b/sql-2003-1.bnf @@ -45,7 +45,7 @@ the SQL object identifier claims to provide the package. ::= - ::= <1987> | <1989> | <1992> | <1999> | <200n> + ::= <1987> | <1989> | <1992> | <1999> | <2003> <1987> ::= 0 | edition1987 0 diff --git a/sql-2003-1.bnf.html b/sql-2003-1.bnf.html index d2d6973..811c3f5 100644 --- a/sql-2003-1.bnf.html +++ b/sql-2003-1.bnf.html @@ -65,7 +65,7 @@

    6.3 Object identifier for Database Language SQL

    <SQL variant>    ::=   <SQL edition> <SQL conformance> -

    <SQL edition>    ::=   <1987> | <1989> | <1992> | <1999> | <200n> +

    <SQL edition>    ::=   <1987> | <1989> | <1992> | <1999> | <2003>

    <1987>    ::=   0 | edition1987 <left paren> 0 <right paren> @@ -416,7 +416,7 @@

    Cross-Reference Table: Rules

    <SQL edition> - 200n + 2003 <SQL edition> From b4bc6d2fe6709cc03b3fb7521f7091dd1f772d07 Mon Sep 17 00:00:00 2001 From: GCer-Hidenori Date: Tue, 3 Mar 2020 21:53:56 +0900 Subject: [PATCH 22/33] [cosmetic change]add missing h2 closing tag to sql-2003-2.bnf --- sql-2003-2.bnf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sql-2003-2.bnf b/sql-2003-2.bnf index f7ba810..3ff0269 100644 --- a/sql-2003-2.bnf +++ b/sql-2003-2.bnf @@ -5328,6 +5328,7 @@ set. --hr --h2 19 Dynamic SQL +--/h2 --h3 19.1 Description of SQL descriptor areas (p921) --/h3 @@ -6390,6 +6391,7 @@ Specify a statement to retrieve multiple rows from a specified table. --hr --h2 22 Diagnostics management +--/h2 --h3 22.1 (p1053) --/h3 From 1a3ff25c252b3e9bebd90d477e0d7f6b9c0e19e5 Mon Sep 17 00:00:00 2001 From: GCer-Hidenori Date: Thu, 5 Mar 2020 15:50:07 +0900 Subject: [PATCH 23/33] fix typo for multiset value expression modified: sql-2003-2.bnf modified: sql-2003-2.bnf.html --- sql-2003-2.bnf | 2 -- sql-2003-2.bnf.html | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/sql-2003-2.bnf b/sql-2003-2.bnf index 3ff0269..f7ba810 100644 --- a/sql-2003-2.bnf +++ b/sql-2003-2.bnf @@ -5328,7 +5328,6 @@ set. --hr --h2 19 Dynamic SQL ---/h2 --h3 19.1 Description of SQL descriptor areas (p921) --/h3 @@ -6391,7 +6390,6 @@ Specify a statement to retrieve multiple rows from a specified table. --hr --h2 22 Diagnostics management ---/h2 --h3 22.1 (p1053) --/h3 diff --git a/sql-2003-2.bnf.html b/sql-2003-2.bnf.html index e486ac3..1fa15cf 100644 --- a/sql-2003-2.bnf.html +++ b/sql-2003-2.bnf.html @@ -1028,7 +1028,7 @@

    6.24 <multiset element reference&g

    <multiset element reference>    ::= -
             ELEMENT <left paren> <multset value expression> <right paren> +
             ELEMENT <left paren> <multiset value expression> <right paren>

    6.25 <value expression> (p236)

    @@ -8703,7 +8703,7 @@

    Cross-Reference Table: Rules

    <multiset primary> - multset value expression + multiset value expression <multiset element reference> From d14bca967fd184c789868baf6aaeff30ae982e7a Mon Sep 17 00:00:00 2001 From: GCer-Hidenori Date: Thu, 5 Mar 2020 15:53:16 +0900 Subject: [PATCH 24/33] fix typo for multiset value expression modified: sql-2003-2.bnf modified: sql-2003-2.bnf.html --- sql-2003-2.bnf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql-2003-2.bnf b/sql-2003-2.bnf index f7ba810..52bb7b2 100644 --- a/sql-2003-2.bnf +++ b/sql-2003-2.bnf @@ -1670,7 +1670,7 @@ grammar. --/h3 ::= - ELEMENT + ELEMENT --h3 6.25 (p236) --/h3 From c1962295a76c9f4477fcbeeaf85c2c02e632c8ec Mon Sep 17 00:00:00 2001 From: GCer-Hidenori Date: Wed, 11 Mar 2020 22:53:48 +0900 Subject: [PATCH 25/33] [fix]alter to --- sql-2003-2.bnf | 4 ++-- sql-2003-2.bnf.html | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/sql-2003-2.bnf b/sql-2003-2.bnf index 3ff0269..134f831 100644 --- a/sql-2003-2.bnf +++ b/sql-2003-2.bnf @@ -4484,7 +4484,7 @@ Define an SQL-client module. ::= - ::= ... + ::= ... ::= COLLATION [ FOR ] @@ -5751,7 +5751,7 @@ Specify an . ::= - ::= + ::= ::= [ ] [ ... ] diff --git a/sql-2003-2.bnf.html b/sql-2003-2.bnf.html index e486ac3..1b40b33 100644 --- a/sql-2003-2.bnf.html +++ b/sql-2003-2.bnf.html @@ -3372,7 +3372,7 @@

    13.1 <SQL-client module definiti

    <module transform group specification>    ::=   <transform group specification> -

    <module collations>    ::=   <module collation specification> ... +

    <module collation>    ::=   <module collation specification> ...

    <module collation specification>    ::=   COLLATION <collation name> [ FOR <character set specification list> ] @@ -4421,7 +4421,7 @@

    20.1 <embedded SQL host program>

    <embedded transform group specification>    ::=   <transform group specification> -

    <embedded collation specification>    ::=   <module collations> +

    <embedded collation specification>    ::=   <module collation>

    <embedded SQL declare section>    ::=
             <embedded SQL begin declare> [ <embedded character set declaration> ] [ <host variable definition> ... ] <embedded SQL end declare>
         |     <embedded SQL MUMPS declare> @@ -8597,10 +8597,10 @@

    Cross-Reference Table: Rules

    module collation specification - <module collations> + <module collation> - module collations + module collation <embedded collation specification> From 0bb6b44f8a47e756f28d19acacf4ac58bf3d164c Mon Sep 17 00:00:00 2001 From: GCer-Hidenori Date: Sun, 15 Mar 2020 00:14:53 +0900 Subject: [PATCH 26/33] [fix]alter to --- sql-2003-2.bnf | 2 +- sql-2003-2.bnf.html | 7 ++----- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/sql-2003-2.bnf b/sql-2003-2.bnf index 134f831..6f30afe 100644 --- a/sql-2003-2.bnf +++ b/sql-2003-2.bnf @@ -1536,7 +1536,7 @@ grammar. ::= ELSE - ::= | + ::= | ::= diff --git a/sql-2003-2.bnf.html b/sql-2003-2.bnf.html index 1b40b33..dc1af16 100644 --- a/sql-2003-2.bnf.html +++ b/sql-2003-2.bnf.html @@ -895,7 +895,7 @@

    6.11 <case expression> (p197)

    <else clause>    ::=   ELSE <result> -

    <case operand>    ::=   <row value predicand> | <overlaps predicate part> +

    <case operand>    ::=   <row value predicand> | <overlaps predicate>

    <when operand>    ::=
             <row value predicand>
         |     <comparison predicate part 2>
         |     <between predicate part 2>
         |     <in predicate part 2>
         |     <character like predicate part 2>
         |     <octet like predicate part 2>
         |     <similar predicate part 2>
         |     <null predicate part 2>
         |     <quantified comparison predicate part 2>
         |     <match predicate part 2>
         |     <overlaps predicate part 2>
         |     <distinct predicate part 2>
         |     <member predicate part 2>
         |     <submultiset predicate part 2>
         |     <set predicate part 2>
         |     <type predicate part 2> @@ -9085,10 +9085,7 @@

    Cross-Reference Table: Rules

    overlaps predicate <predicate> - - - overlaps predicate part - <case operand> + <case operand> overlaps predicate part 1 From 4ffd03c57db081344325142e3274f16b792b3633 Mon Sep 17 00:00:00 2001 From: Mike Schinkel Date: Fri, 9 Jul 2021 17:14:45 -0400 Subject: [PATCH 27/33] Remove errant Remove the that incorrectly trails in the production rule. Ref: #25 --- sql-92.bnf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql-92.bnf b/sql-92.bnf index 72ac8eb..0d0eed0 100644 --- a/sql-92.bnf +++ b/sql-92.bnf @@ -550,7 +550,7 @@ The plain text version of this grammar is ::= [ ] - | SECOND [ [ ] ] + | SECOND [ [ ] ] ::= From 5c5306b09701edc342bd073a068283e3b3d43911 Mon Sep 17 00:00:00 2001 From: Mike Schinkel Date: Mon, 12 Jul 2021 02:30:44 -0400 Subject: [PATCH 28/33] Fix typo CONSTRATIN_CATALOG Fix typo CONSTRATIN_CATALOG in production. Should obviously(?) be CONSTRAINT_CATALOG. Ref: #27 --- sql-92.bnf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql-92.bnf b/sql-92.bnf index 0d0eed0..5a90cba 100644 --- a/sql-92.bnf +++ b/sql-92.bnf @@ -1797,7 +1797,7 @@ The notation is written out longhand several times, instead. | SUBCLASS_ORIGIN | SERVER_NAME | CONNECTION_NAME - | CONSTRATIN_CATALOG + | CONSTRAINT_CATALOG | CONSTRAINT_SCHEMA | CONSTRAINT_NAME | CATALOG_NAME From 801ac485fc1b2e53b85b0be450fcc5684e8e5259 Mon Sep 17 00:00:00 2001 From: Ron Savage Date: Fri, 30 Jul 2021 13:00:21 +1000 Subject: [PATCH 29/33] Add sql-2003-2.ebnf as a version of sql-2003-2.bnf, extractd manually from the latter by Domingo Alvarez Duarte --- sql-2003-2.ebnf | 6223 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 6223 insertions(+) create mode 100644 sql-2003-2.ebnf diff --git a/sql-2003-2.ebnf b/sql-2003-2.ebnf new file mode 100644 index 0000000..b8926b4 --- /dev/null +++ b/sql-2003-2.ebnf @@ -0,0 +1,6223 @@ +//BNF Grammar for ISO/IEC 9075-2:2003 - Database Language SQL (SQL-2003) +SQL/Foundation + +//21 Direct invocation of SQL +//21.1 direct_SQL_statement (p1047) +//Specify direct execution of SQL. + +direct_SQL_statement ::= directly_executable_statement semicolon + +directly_executable_statement ::= + direct_SQL_data_statement + | SQL_schema_statement + | SQL_transaction_statement + | SQL_connection_statement + | SQL_session_statement + | direct_implementation_defined_statement + +direct_SQL_data_statement ::= + delete_statement__searched + | direct_select_statement__multiple_rows + | insert_statement + | update_statement__searched + | merge_statement + | temporary_table_declaration + +//5 Lexical Elements +//Basic definitions of characters used, tokens, symbols, etc. Most of +this section would normally be handled within the lexical analyzer +rather than in the grammar proper. Further, the original document does +not quote the various single characters, which makes it hard to process +automatically. + +//5.1 SQL_terminal_character (p151) +SQL_terminal_character ::= SQL_language_character + +SQL_language_character ::= simple_Latin_letter | digit | +SQL_special_character + +simple_Latin_letter ::= simple_Latin_upper_case_letter | +simple_Latin_lower_case_letter + +simple_Latin_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' | 'W' +| 'X' | 'Y' | 'Z' + +simple_Latin_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' | 'y' | 'z' + +digit ::= '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' + +SQL_special_character ::= + space + | double_quote + | percent + | ampersand + | quote + | left_paren + | right_paren + | asterisk + | plus_sign + | comma + | minus_sign + | period + | solidus + | colon + | semicolon + | less_than_operator + | equals_operator + | greater_than_operator + | question_mark + | left_bracket + | right_bracket + | circumflex + | underscore + | vertical_bar + | left_brace + | right_brace + +space ::= //!! See the Syntax Rules. + +double_quote ::= '"' + +percent ::= '%' + +ampersand ::= '&' + +quote ::= "'" + +left_paren ::= '(' + +right_paren ::= ')' + +asterisk ::= '*' + +plus_sign ::= '+' + +comma ::= ',' + +minus_sign ::= '-' + +period ::= '.' + +solidus ::= '/' + +colon ::= ':' + +semicolon ::= ';' + +less_than_operator ::= '<' + +equals_operator ::= '=' + +greater_than_operator ::= '>' + +question_mark ::= '?' + +//The trigraphs are new in SQL-2003. + +left_bracket_or_trigraph ::= left_bracket | left_bracket_trigraph + +right_bracket_or_trigraph ::= right_bracket | +right_bracket_trigraph + +left_bracket ::= '[' + +left_bracket_trigraph ::= "??(" + +right_bracket ::= ']' + +right_bracket_trigraph ::= "??)" + +circumflex ::= '^' + +underscore ::= '_' + +vertical_bar ::= '|' + +left_brace ::= '{' + +right_brace ::= '}' + +//5.2 token and separator (p134) +//Specifying lexical units (tokens and separators) that participate in +SQL language. + +token ::= nondelimiter_token | delimiter_token + +nondelimiter_token ::= + regular_identifier + | key_word + | unsigned_numeric_literal + | national_character_string_literal + | bit_string_literal + | hex_string_literal + | large_object_length_token + | multiplier + +regular_identifier ::= identifier_body + +identifier_body ::= identifier_start identifier_part? + +identifier_part ::= identifier_start | identifier_extend + +//The previous version of the SQL standard defined an identifier start +as either an initial_alphabetic_character or an ideographic_character. +Neither of the defining terms is defined in SQL 2003 (and the SQL 99 +definitions of those defininng terms referred to the syntax rules), but +the result of the SQL 2003 syntax rules will be similar to SQL 99 ones +except with Unicode support added. + +identifier_start ::= //!! See the Syntax Rules. + +identifier_extend ::= //!! See the Syntax Rules. + +large_object_length_token ::= digit ... multiplier + +multiplier ::= 'K' | 'M' | 'G' + +delimited_identifier ::= double_quote delimited_identifier_body +double_quote + +delimited_identifier_body ::= delimited_identifier_part ... + +delimited_identifier_part ::= nondoublequote_character | +doublequote_symbol + +//The productions for Unicode_delimited_identifier and so on are new in +SQL-2003. + +Unicode_delimited_identifier ::= + U ampersand double_quote Unicode_delimiter_body double_quote + Unicode_escape_specifier + +Unicode_escape_specifier ::= ( UESCAPE quote +Unicode_escape_character quote )? + +Unicode_delimiter_body ::= Unicode_identifier_part ... + +Unicode_identifier_part ::= delimited_identifier_part | +Unicode_escape_value + +Unicode_escape_value ::= + Unicode_4_digit_escape_value + | Unicode_6_digit_escape_value + | Unicode_character_escape_value + +//Syntax rule 20: +Unicode_4_digit_escape_value'Unicode_escape_character+xyzw' is +equivalent to the Unicode code point specified by U+xyzw. + +Unicode_4_digit_escape_value ::= Unicode_escape_character hexit +hexit hexit hexit + +//Syntax rule 21: +Unicode_6_digit_escape_value'Unicode_escape_character+xyzwrs' is +equivalent to the Unicode code point specified by U+xyzwrs. + +//NOTE 64: The 6-hexit notation is derived by taking the UCS-4 notation +defined by ISO/IEC 10646-1 and removing the leading two hexits, whose +values are always 0 (zero). + +Unicode_6_digit_escape_value ::= + Unicode_escape_character plus_sign hexit hexit hexit hexit +hexit hexit + +//Syntax rule 22: Unicode_character_escape_value is equivalent to a +single instance of Unicode_escape_character. + +Unicode_character_escape_value ::= Unicode_escape_character +Unicode_escape_character + +//Syntax rule 15: Unicode_escape_character shall be a single character +from the source language character set other than a hexit, plus_sign, or +white_space. + +//Syntax rule 16: If the source language character set contains +reverse_solidus, then let DEC be reverse_solidus; otherwise, let DEC be +an implementation-defined character from the source language character +set that is not a hexit, plus_sign, double_quote, or white_space. + +//Syntax rule 17: If a Unicode_escape_specifier does not contain +Unicode_escape_character, then "UESCAPE quoteDECquote" is implicit. + +//Syntax rule 18: In a Unicode_escape_value there shall be no separator +between the Unicode_escape_character and the first hexit, nor between +any of the hexits. + +Unicode_escape_character ::= //!! See the Syntax Rules (15-18 +above). + +//Syntax rule 6: A nondoublequote_character is any character of the +source language character set other than a double_quote. + +nondoublequote_character ::= //!! See the Syntax Rules. + +//The rule for doublequote_symbol in the standard uses two adjacent +literal double quotes rather than referencing double_quote; the reasons +are not clear. It is annotated '//!! two consecutive double quote +characters'. + +doublequote_symbol ::= double_quote double_quote + +delimiter_token ::= + character_string_literal + | date_string + | time_string + | timestamp_string + | interval_string + | delimited_identifier + | Unicode_delimited_identifier + | SQL_special_character + | not_equals_operator + | greater_than_or_equals_operator + | less_than_or_equals_operator + | concatenation_operator + | right_arrow + | left_bracket_trigraph + | right_bracket_trigraph + | double_colon + | double_period + +//The rules for not_equals_operator etc in the standard uses two +adjacent literal characters rather than referencing less_than and +greater_than; the reasons are not clear. Note that two characters must +be adjacent with no intervening space, not a pair of characters +separated by arbitrary white space. + +not_equals_operator ::= "<>" //less_than_operator +greater_than_operator + +greater_than_or_equals_operator ::= ">=" //greater_than_operator +equals_operator + +less_than_or_equals_operator ::= "<=" //less_than_operator +equals_operator + +concatenation_operator ::= "||" //vertical_bar vertical_bar + +right_arrow ::= "->" //minus_sign greater_than_operator + +double_colon ::= "::" //colon colon + +double_period ::= ".." //period period + +separator ::= ( comment | white_space )* + +comment ::= simple_comment | bracketed_comment + +simple_comment ::= simple_comment_introducer comment_character* +newline + +simple_comment_introducer ::= minus_sign minus_sign minus_sign* + +//The bracketed_comment rule included '//!! See the Syntax Rules'. This +probably says something about the slash asterisk and asterisk slash +needing to be adjacent characters rather than adjacent tokens. + +bracketed_comment ::= + bracketed_comment_introducer bracketed_comment_contents +bracketed_comment_terminator + +bracketed_comment_introducer ::= slash asterisk + +bracketed_comment_terminator ::= asterisk slash + +bracketed_comment_contents ::= ( comment_character | separator )* + +comment_character ::= nonquote_character | quote + +newline ::= //!! See the Syntax Rules. + +//There was a surprising amount of movement of keywords between the +reserved and non-reserved word classes between SQL-99 and SQL-2003-2 FCD +and again between SQL 2003-2 FCD and SQL 2003-2 IS. There is also room +to think that much of the host language support moved out of Part 2 +(SQL/Foundation). + +key_word ::= reserved_word | non_reserved_word + +non_reserved_word ::= + A + | ABS + | ABSOLUTE + | ACTION + | ADA + | ADMIN + | AFTER + | ALWAYS + | ASC + | ASSERTION + | ASSIGNMENT + | ATTRIBUTE + | ATTRIBUTES + | AVG + | BEFORE + | BERNOULLI + | BREADTH + | C + | CARDINALITY + | CASCADE + | CATALOG + | CATALOG_NAME + | CEIL + | CEILING + | CHAIN + | CHARACTERISTICS + | CHARACTERS + | CHARACTER_LENGTH + | CHARACTER_SET_CATALOG + | CHARACTER_SET_NAME + | CHARACTER_SET_SCHEMA + | CHAR_LENGTH + | CHECKED + | CLASS_ORIGIN + | COALESCE + | COBOL + | CODE_UNITS + | COLLATION + | COLLATION_CATALOG + | COLLATION_NAME + | COLLATION_SCHEMA + | COLLECT + | COLUMN_NAME + | COMMAND_FUNCTION + | COMMAND_FUNCTION_CODE + | COMMITTED + | CONDITION + | CONDITION_NUMBER + | CONNECTION_NAME + | CONSTRAINTS + | CONSTRAINT_CATALOG + | CONSTRAINT_NAME + | CONSTRAINT_SCHEMA + | CONSTRUCTORS + | CONTAINS + | CONVERT + | CORR + | COUNT + | COVAR_POP + | COVAR_SAMP + | CUME_DIST + | CURRENT_COLLATION + | CURSOR_NAME + | DATA + | DATETIME_INTERVAL_CODE + | DATETIME_INTERVAL_PRECISION + | DEFAULTS + | DEFERRABLE + | DEFERRED + | DEFINED + | DEFINER + | DEGREE + | DENSE_RANK + | DEPTH + | DERIVED + | DESC + | DESCRIPTOR + | DIAGNOSTICS + | DISPATCH + | DOMAIN + | DYNAMIC_FUNCTION + | DYNAMIC_FUNCTION_CODE + | EQUALS + | EVERY + | EXCEPTION + | EXCLUDE + | EXCLUDING + | EXP + | EXTRACT + | FINAL + | FIRST + | FLOOR + | FOLLOWING + | FORTRAN + | FOUND + | FUSION + | G + | GENERAL + | GO + | GOTO + | GRANTED + | HIERARCHY + | IMPLEMENTATION + | INCLUDING + | INCREMENT + | INITIALLY + | INSTANCE + | INSTANTIABLE + | INTERSECTION + | INVOKER + | ISOLATION + | K + | KEY + | KEY_MEMBER + | KEY_TYPE + | LAST + | LENGTH + | LEVEL + | LN + | LOCATOR + | LOWER + | M + | MAP + | MATCHED + | MAX + | MAXVALUE + | MESSAGE_LENGTH + | MESSAGE_OCTET_LENGTH + | MESSAGE_TEXT + | MIN + | MINVALUE + | MOD + | MORE + | MUMPS + | NAME + | NAMES + | NESTING + | NEXT + | NORMALIZE + | NORMALIZED + | NULLABLE + | NULLIF + | NULLS + | NUMBER + | OBJECT + | OCTETS + | OCTET_LENGTH + | OPTION + | OPTIONS + | ORDERING + | ORDINALITY + | OTHERS + | OVERLAY + | OVERRIDING + | PAD + | PARAMETER_MODE + | PARAMETER_NAME + | PARAMETER_ORDINAL_POSITION + | PARAMETER_SPECIFIC_CATALOG + | PARAMETER_SPECIFIC_NAME + | PARAMETER_SPECIFIC_SCHEMA + | PARTIAL + | PASCAL + | PATH + | PERCENTILE_CONT + | PERCENTILE_DISC + | PERCENT_RANK + | PLACING + | PLI + | POSITION + | POWER + | PRECEDING + | PRESERVE + | PRIOR + | PRIVILEGES + | PUBLIC + | RANK + | READ + | RELATIVE + | REPEATABLE + | RESTART + | RETURNED_CARDINALITY + | RETURNED_LENGTH + | RETURNED_OCTET_LENGTH + | RETURNED_SQLSTATE + | ROLE + | ROUTINE + | ROUTINE_CATALOG + | ROUTINE_NAME + | ROUTINE_SCHEMA + | ROW_COUNT + | ROW_NUMBER + | SCALE + | SCHEMA + | SCHEMA_NAME + | SCOPE_CATALOG + | SCOPE_NAME + | SCOPE_SCHEMA + | SECTION + | SECURITY + | SELF + | SEQUENCE + | SERIALIZABLE + | SERVER_NAME + | SESSION + | SETS + | SIMPLE + | SIZE + | SOURCE + | SPACE + | SPECIFIC_NAME + | SQRT + | STATE + | STATEMENT + | STDDEV_POP + | STDDEV_SAMP + | STRUCTURE + | STYLE + | SUBCLASS_ORIGIN + | SUBSTRING + | SUM + | TABLESAMPLE + | TABLE_NAME + | TEMPORARY + | TIES + | TOP_LEVEL_COUNT + | TRANSACTION + | TRANSACTIONS_COMMITTED + | TRANSACTIONS_ROLLED_BACK + | TRANSACTION_ACTIVE + | TRANSFORM + | TRANSFORMS + | TRANSLATE + | TRIGGER_CATALOG + | TRIGGER_NAME + | TRIGGER_SCHEMA + | TRIM + | TYPE + | UNBOUNDED + | UNCOMMITTED + | UNDER + | UNNAMED + | USAGE + | USER_DEFINED_TYPE_CATALOG + | USER_DEFINED_TYPE_CODE + | USER_DEFINED_TYPE_NAME + | USER_DEFINED_TYPE_SCHEMA + | VIEW + | WORK + | WRITE + | ZONE + +reserved_word ::= + ADD + | ALL + | ALLOCATE + | ALTER + | AND + | ANY + | ARE + | ARRAY + | AS + | ASENSITIVE + | ASYMMETRIC + | AT + | ATOMIC + | AUTHORIZATION + | BEGIN + | BETWEEN + | BIGINT + | BINARY + | BLOB + | BOOLEAN + | BOTH + | BY + | CALL + | CALLED + | CASCADED + | CASE + | CAST + | CHAR + | CHARACTER + | CHECK + | CLOB + | CLOSE + | COLLATE + | COLUMN + | COMMIT + | CONNECT + | CONSTRAINT + | CONTINUE + | CORRESPONDING + | CREATE + | CROSS + | CUBE + | CURRENT + | CURRENT_DATE + | CURRENT_DEFAULT_TRANSFORM_GROUP + | CURRENT_PATH + | CURRENT_ROLE + | CURRENT_TIME + | CURRENT_TIMESTAMP + | CURRENT_TRANSFORM_GROUP_FOR_TYPE + | CURRENT_USER + | CURSOR + | CYCLE + | DATE + | DAY + | DEALLOCATE + | DEC + | DECIMAL + | DECLARE + | DEFAULT + | DELETE + | DEREF + | DESCRIBE + | DETERMINISTIC + | DISCONNECT + | DISTINCT + | DOUBLE + | DROP + | DYNAMIC + | EACH + | ELEMENT + | ELSE + | END + | END-EXEC + | ESCAPE + | EXCEPT + | EXEC + | EXECUTE + | EXISTS + | EXTERNAL + | FALSE + | FETCH + | FILTER + | FLOAT + | FOR + | FOREIGN + | FREE + | FROM + | FULL + | FUNCTION + | GET + | GLOBAL + | GRANT + | GROUP + | GROUPING + | HAVING + | HOLD + | HOUR + | IDENTITY + | IMMEDIATE + | IN + | INDICATOR + | INNER + | INOUT + | INPUT + | INSENSITIVE + | INSERT + | INT + | INTEGER + | INTERSECT + | INTERVAL + | INTO + | IS + | ISOLATION + | JOIN + | LANGUAGE + | LARGE + | LATERAL + | LEADING + | LEFT + | LIKE + | LOCAL + | LOCALTIME + | LOCALTIMESTAMP + | MATCH + | MEMBER + | MERGE + | METHOD + | MINUTE + | MODIFIES + | MODULE + | MONTH + | MULTISET + | NATIONAL + | NATURAL + | NCHAR + | NCLOB + | NEW + | NO + | NONE + | NOT + | NULL + | NUMERIC + | OF + | OLD + | ON + | ONLY + | OPEN + | OR + | ORDER + | OUT + | OUTER + | OUTPUT + | OVER + | OVERLAPS + | PARAMETER + | PARTITION + | PRECISION + | PREPARE + | PRIMARY + | PROCEDURE + | RANGE + | READS + | REAL + | RECURSIVE + | REF + | REFERENCES + | REFERENCING + | REGR_AVGX + | REGR_AVGY + | REGR_COUNT + | REGR_INTERCEPT + | REGR_R2 + | REGR_SLOPE + | REGR_SXX + | REGR_SXY + | REGR_SYY + | RELEASE + | RESULT + | RETURN + | RETURNS + | REVOKE + | RIGHT + | ROLLBACK + | ROLLUP + | ROW + | ROWS + | SAVEPOINT + | SCROLL + | SEARCH + | SECOND + | SELECT + | SENSITIVE + | SESSION_USER + | SET + | SIMILAR + | SMALLINT + | SOME + | SPECIFIC + | SPECIFICTYPE + | SQL + | SQLEXCEPTION + | SQLSTATE + | SQLWARNING + | START + | STATIC + | SUBMULTISET + | SYMMETRIC + | SYSTEM + | SYSTEM_USER + | TABLE + | THEN + | TIME + | TIMESTAMP + | TIMEZONE_HOUR + | TIMEZONE_MINUTE + | TO + | TRAILING + | TRANSLATION + | TREAT + | TRIGGER + | TRUE + | UESCAPE + | UNION + | UNIQUE + | UNKNOWN + | UNNEST + | UPDATE + | UPPER + | USER + | USING + | VALUE + | VALUES + | VAR_POP + | VAR_SAMP + | VARCHAR + | VARYING + | WHEN + | WHENEVER + | WHERE + | WIDTH_BUCKET + | WINDOW + | WITH + | WITHIN + | WITHOUT + | YEAR + +//5.3 literal (p143) +literal ::= signed_numeric_literal | general_literal + +unsigned_literal ::= unsigned_numeric_literal | general_literal + +general_literal ::= + character_string_literal + | national_character_string_literal + | Unicode_character_string_literal + | binary_string_literal + | datetime_literal + | interval_literal + | boolean_literal + +character_string_literal ::= + ( introducer character_set_specification )? + quote ( character_representation )? quote + ( separator quote ( character_representation )? quote )* + +introducer ::= underscore + +character_representation ::= nonquote_character | quote_symbol + +nonquote_character ::= //!! See the Syntax Rules. + +//The quote_symbol rule consists of two immediately adjacent quote marks +with no spaces. As usual, this would be best handled in the lexical +analyzer, not in the grammar. + +quote_symbol ::= quote quote + +national_character_string_literal ::= + N quote character_representation* quote + ( separator quote character_representation* quote )* + +Unicode_character_string_literal ::= + ( introducer character_set_specification )? + U ampersand quote Unicode_representation? quote + ( separator quote Unicode_representation? quote )* + ( ESCAPE escape_character )? + +Unicode_representation ::= character_representation | +Unicode_escape_value + +binary_string_literal ::= + X quote ( hexit hexit )* quote + ( separator quote ( hexit hexit )* quote )* + ( ESCAPE escape_character )? + +hexit ::= digit | 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'a' | 'b' | +'c' | 'd' | 'e' | 'f' + +signed_numeric_literal ::= sign? unsigned_numeric_literal + +unsigned_numeric_literal ::= exact_numeric_literal | +approximate_numeric_literal + +exact_numeric_literal ::= + unsigned_integer ( period unsigned_integer? )? + | period unsigned_integer + +sign ::= plus_sign | minus_sign + +approximate_numeric_literal ::= mantissa E exponent + +mantissa ::= exact_numeric_literal + +exponent ::= signed_integer + +signed_integer ::= sign? unsigned_integer + +unsigned_integer ::= digit ... + +datetime_literal ::= date_literal | time_literal | +timestamp_literal + +date_literal ::= DATE date_string + +time_literal ::= TIME time_string + +timestamp_literal ::= TIMESTAMP timestamp_string + +date_string ::= quote unquoted_date_string quote + +time_string ::= quote unquoted_time_string quote + +timestamp_string ::= quote unquoted_timestamp_string quote + +time_zone_interval ::= sign hours_value colon minutes_value + +date_value ::= years_value minus_sign months_value minus_sign +days_value + +time_value ::= hours_value colon minutes_value colon seconds_value + +interval_literal ::= INTERVAL sign? interval_string +interval_qualifier + +interval_string ::= quote unquoted_interval_string quote + +unquoted_date_string ::= date_value + +unquoted_time_string ::= time_value time_zone_interval? + +unquoted_timestamp_string ::= unquoted_date_string space +unquoted_time_string + +unquoted_interval_string ::= sign? ( year_month_literal | +day_time_literal ) + +year_month_literal ::= years_value | years_value minus_sign? +months_value + +day_time_literal ::= day_time_interval | time_interval + +day_time_interval ::= + days_value ( space hours_value ( colon minutes_value ( colon +seconds_value )? )? )? + +time_interval ::= + hours_value ( colon minutes_value ( colon seconds_value )? )? + | minutes_value ( colon seconds_value )? + | seconds_value + +years_value ::= datetime_value + +months_value ::= datetime_value + +days_value ::= datetime_value + +hours_value ::= datetime_value + +minutes_value ::= datetime_value + +seconds_value ::= seconds_integer_value ( period ( seconds_fraction +)? )? + +seconds_integer_value ::= unsigned_integer + +seconds_fraction ::= unsigned_integer + +datetime_value ::= unsigned_integer + +boolean_literal ::= TRUE | FALSE | UNKNOWN + +//5.4 Names and identifiers (p151) +identifier ::= actual_identifier + +actual_identifier ::= regular_identifier | delimited_identifier + +SQL_language_identifier ::= + SQL_language_identifier_start ( underscore | +SQL_language_identifier_part )* + +SQL_language_identifier_start ::= simple_Latin_letter + +SQL_language_identifier_part ::= simple_Latin_letter | digit + +authorization_identifier ::= role_name | user_identifier + +table_name ::= local_or_schema_qualified_name + +domain_name ::= schema_qualified_name + +schema_name ::= ( catalog_name period )? unqualified_schema_name + +catalog_name ::= identifier + +schema_qualified_name ::= ( schema_name period )? +qualified_identifier + +local_or_schema_qualified_name ::= ( local_or_schema_qualifier +period )? qualified_identifier + +local_or_schema_qualifier ::= schema_name | MODULE + +qualified_identifier ::= identifier + +column_name ::= identifier + +correlation_name ::= identifier + +query_name ::= identifier + +SQL_client_module_name ::= identifier + +procedure_name ::= identifier + +schema_qualified_routine_name ::= schema_qualified_name + +method_name ::= identifier + +specific_name ::= schema_qualified_name + +cursor_name ::= local_qualified_name + +local_qualified_name ::= ( local_qualifier period )? +qualified_identifier + +local_qualifier ::= MODULE + +host_parameter_name ::= colon identifier + +SQL_parameter_name ::= identifier + +constraint_name ::= schema_qualified_name + +external_routine_name ::= identifier | character_string_literal + +trigger_name ::= schema_qualified_name + +collation_name ::= schema_qualified_name + +character_set_name ::= ( schema_name period )? +SQL_language_identifier + +transliteration_name ::= schema_qualified_name + +transcoding_name ::= schema_qualified_name + +user_defined_type_name ::= schema_qualified_type_name + +schema_resolved_user_defined_type_name ::= user_defined_type_name + +schema_qualified_type_name ::= ( schema_name period )? +qualified_identifier + +attribute_name ::= identifier + +field_name ::= identifier + +savepoint_name ::= identifier + +sequence_generator_name ::= schema_qualified_name + +role_name ::= identifier + +user_identifier ::= identifier + +connection_name ::= simple_value_specification + +SQL_server_name ::= simple_value_specification + +connection_user_name ::= simple_value_specification + +SQL_statement_name ::= statement_name | extended_statement_name + +statement_name ::= identifier + +extended_statement_name ::= ( scope_option )? +simple_value_specification + +dynamic_cursor_name ::= cursor_name | extended_cursor_name + +extended_cursor_name ::= ( scope_option )? +simple_value_specification + +descriptor_name ::= ( scope_option )? simple_value_specification + +scope_option ::= GLOBAL | LOCAL + +window_name ::= identifier + +//6 Scalar expressions +//6.1 data_type (p161) +data_type ::= + predefined_type + | row_type + | path_resolved_user_defined_type_name + | reference_type + | collection_type + +predefined_type ::= + character_string_type ( CHARACTER SET +character_set_specification )? collate_clause? + | national_character_string_type collate_clause? + | binary_large_object_string_type + | numeric_type + | boolean_type + | datetime_type + | interval_type + +character_string_type ::= + CHARACTER ( left_paren length right_paren )? + | CHAR ( left_paren length right_paren )? + | CHARACTER VARYING left_paren length right_paren + | CHAR VARYING left_paren length right_paren + | VARCHAR left_paren length right_paren + | CHARACTER LARGE OBJECT ( left_paren large_object_length +right_paren )? + | CHAR LARGE OBJECT ( left_paren large_object_length right_paren )? + | CLOB ( left_paren large_object_length right_paren )? + +national_character_string_type ::= + NATIONAL CHARACTER ( left_paren length right_paren )? + | NATIONAL CHAR ( left_paren length right_paren )? + | NCHAR ( left_paren length right_paren )? + | NATIONAL CHARACTER VARYING left_paren length right_paren + | NATIONAL CHAR VARYING left_paren length right_paren + | NCHAR VARYING left_paren length right_paren + | NATIONAL CHARACTER LARGE OBJECT ( left_paren large_object_length +right_paren )? + | NCHAR LARGE OBJECT ( left_paren large_object_length right_paren +)? + | NCLOB ( left_paren large_object_length right_paren )? + +binary_large_object_string_type ::= + BINARY LARGE OBJECT ( left_paren large_object_length +right_paren )? + | BLOB ( left_paren large_object_length right_paren )? + +numeric_type ::= exact_numeric_type | approximate_numeric_type + +exact_numeric_type ::= + NUMERIC ( left_paren precision ( comma scale )? right_paren )? + | DECIMAL ( left_paren precision ( comma scale )? right_paren )? + | DEC ( left_paren precision ( comma scale )? right_paren )? + | SMALLINT + | INTEGER + | INT + | BIGINT + +approximate_numeric_type ::= + FLOAT ( left_paren precision right_paren )? + | REAL + | DOUBLE PRECISION + +length ::= unsigned_integer + +large_object_length ::= + unsigned_integer multiplier? char_length_units? + | large_object_length_token char_length_units? + +char_length_units ::= CHARACTERS | CODE_UNITS | OCTETS + +precision ::= unsigned_integer + +scale ::= unsigned_integer + +boolean_type ::= BOOLEAN + +datetime_type ::= + DATE + | TIME ( left_paren time_precision right_paren )? +with_or_without_time_zone? + | TIMESTAMP ( left_paren timestamp_precision right_paren )? +with_or_without_time_zone? + +with_or_without_time_zone ::= WITH TIME ZONE | WITHOUT TIME ZONE + +time_precision ::= time_fractional_seconds_precision + +timestamp_precision ::= time_fractional_seconds_precision + +time_fractional_seconds_precision ::= unsigned_integer + +interval_type ::= INTERVAL interval_qualifier + +row_type ::= ROW row_type_body + +row_type_body ::= left_paren field_definition ( comma +field_definition )* right_paren + +reference_type ::= REF left_paren referenced_type right_paren +scope_clause? + +scope_clause ::= SCOPE table_name + +referenced_type ::= path_resolved_user_defined_type_name + +path_resolved_user_defined_type_name ::= user_defined_type_name + +collection_type ::= array_type | multiset_type + +array_type ::= data_type ARRAY ( left_bracket_or_trigraph +unsigned_integer right_bracket_or_trigraph )? + +multiset_type ::= data_type MULTISET + +//6.2 field_definition (p173) +field_definition ::= field_name data_type ( reference_scope_check +)? + +//6.3 value_expression_primary (p174) +value_expression_primary ::= + parenthesized_value_expression + | nonparenthesized_value_expression_primary + +parenthesized_value_expression ::= left_paren value_expression +right_paren + +nonparenthesized_value_expression_primary ::= + unsigned_value_specification + | column_reference + | set_function_specification + | window_function + | scalar_subquery + | case_expression + | cast_specification + | field_reference + | subtype_treatment + | method_invocation + | static_method_invocation + | new_specification + | attribute_or_method_reference + | reference_resolution + | collection_value_constructor + | array_element_reference + | multiset_element_reference + | routine_invocation + | next_value_expression + +//6.4 value_specification and target_specification (p176) +value_specification ::= literal | general_value_specification + +unsigned_value_specification ::= unsigned_literal | +general_value_specification + +general_value_specification ::= + host_parameter_specification + | SQL_parameter_reference + | dynamic_parameter_specification + | embedded_variable_specification + | current_collation_specification + | CURRENT_DEFAULT_TRANSFORM_GROUP + | CURRENT_PATH + | CURRENT_ROLE + | CURRENT_TRANSFORM_GROUP_FOR_TYPE +path_resolved_user_defined_type_name + | CURRENT_USER + | SESSION_USER + | SYSTEM_USER + | USER + | VALUE + +simple_value_specification ::= + literal + | host_parameter_name + | SQL_parameter_reference + | embedded_variable_name + +target_specification ::= + host_parameter_specification + | SQL_parameter_reference + | column_reference + | target_array_element_specification + | dynamic_parameter_specification + | embedded_variable_specification + +simple_target_specification ::= + host_parameter_specification + | SQL_parameter_reference + | column_reference + | embedded_variable_name + +host_parameter_specification ::= host_parameter_name +indicator_parameter? + +dynamic_parameter_specification ::= question_mark + +embedded_variable_specification ::= embedded_variable_name +indicator_variable? + +indicator_variable ::= INDICATOR? embedded_variable_name + +indicator_parameter ::= INDICATOR? host_parameter_name + +target_array_element_specification ::= + target_array_reference left_bracket_or_trigraph +simple_value_specification right_bracket_or_trigraph + +target_array_reference ::= SQL_parameter_reference | +column_reference + +current_collation_specification ::= CURRENT_COLLATION left_paren +string_value_expression right_paren + +//6.5 contextually_typed_value_specification (p181) +contextually_typed_value_specification ::= + implicitly_typed_value_specification | default_specification + +implicitly_typed_value_specification ::= null_specification | +empty_specification + +null_specification ::= NULL + +empty_specification ::= + ARRAY left_bracket_or_trigraph right_bracket_or_trigraph + | MULTISET left_bracket_or_trigraph right_bracket_or_trigraph + +default_specification ::= DEFAULT + +//6.6 identifier_chain (p183) +identifier_chain ::= identifier ( period identifier )* + +basic_identifier_chain ::= identifier_chain + +//6.7 column_reference (p187) +column_reference ::= + basic_identifier_chain + | MODULE period qualified_identifier period column_name + +//6.8 SQL_parameter_reference (p190) +SQL_parameter_reference ::= basic_identifier_chain + +//6.9 set_function_specification (p191) +set_function_specification ::= aggregate_function | +grouping_operation + +grouping_operation ::= GROUPING left_paren column_reference ( comma +column_reference )* right_paren + +//6.10 window_function (p193) +window_function ::= window_function_type OVER +window_name_or_specification + +window_function_type ::= + rank_function_type left_paren right_paren + | ROW_NUMBER left_paren right_paren + | aggregate_function + +rank_function_type ::= RANK | DENSE_RANK | PERCENT_RANK | CUME_DIST + +window_name_or_specification ::= window_name | +in_line_window_specification + +in_line_window_specification ::= window_specification + +//6.11 case_expression (p197) +case_expression ::= case_abbreviation | case_specification + +case_abbreviation ::= + NULLIF left_paren value_expression comma value_expression +right_paren + | COALESCE left_paren value_expression ( comma value_expression )* +right_paren + +case_specification ::= simple_case | searched_case + +simple_case ::= CASE case_operand simple_when_clause ( else_clause +)? END + +searched_case ::= CASE searched_when_clause ( else_clause )? END + +simple_when_clause ::= WHEN when_operand THEN result + +searched_when_clause ::= WHEN search_condition THEN result + +else_clause ::= ELSE result + +case_operand ::= row_value_predicand | overlaps_predicate + +when_operand ::= + row_value_predicand + | comparison_predicate_part_2 + | between_predicate_part_2 + | in_predicate_part_2 + | character_like_predicate_part_2 + | octet_like_predicate_part_2 + | similar_predicate_part_2 + | null_predicate_part_2 + | quantified_comparison_predicate_part_2 + | match_predicate_part_2 + | overlaps_predicate_part_2 + | distinct_predicate_part_2 + | member_predicate_part_2 + | submultiset_predicate_part_2 + | set_predicate_part_2 + | type_predicate_part_2 + +result ::= result_expression | NULL + +result_expression ::= value_expression + +//6.12 cast_specification (p200) +cast_specification ::= CAST left_paren cast_operand AS cast_target +right_paren + +cast_operand ::= value_expression | +implicitly_typed_value_specification + +cast_target ::= domain_name | data_type + +//6.13 next_value_expression (p216) +next_value_expression ::= NEXT VALUE FOR sequence_generator_name + +//6.14 field_reference (p218) +field_reference ::= value_expression_primary period field_name + +//6.15 subtype_treatment (p219) +subtype_treatment ::= + TREAT left_paren subtype_operand AS target_subtype right_paren + +subtype_operand ::= value_expression + +target_subtype ::= + path_resolved_user_defined_type_name + | reference_type + +//6.16 method_invocation (p221) +method_invocation ::= direct_invocation | generalized_invocation + +direct_invocation ::= + value_expression_primary period method_name SQL_argument_list? + +generalized_invocation ::= + left_paren value_expression_primary AS data_type right_paren +period method_name + SQL_argument_list? + +method_selection ::= routine_invocation + +constructor_method_selection ::= routine_invocation + +//6.17 static_method_invocation (p223) +static_method_invocation ::= + path_resolved_user_defined_type_name double_colon method_name +SQL_argument_list? + +static_method_selection ::= routine_invocation + +//6.18 new_specification (p225) +new_specification ::= NEW routine_invocation + +new_invocation ::= method_invocation | routine_invocation + +//6.19 attribute_or_method_reference (p227) +attribute_or_method_reference ::= + value_expression_primary dereference_operator +qualified_identifier + SQL_argument_list? + +dereference_operator ::= right_arrow + +//6.20 dereference_operation (p229) +dereference_operation ::= reference_value_expression +dereference_operator attribute_name + +//6.21 method_reference (p230) +method_reference ::= + value_expression_primary dereference_operator method_name +SQL_argument_list + +//6.22 reference_resolution (p232) +reference_resolution ::= DEREF left_paren +reference_value_expression right_paren + +//6.23 array_element_reference (p234) +array_element_reference ::= + array_value_expression left_bracket_or_trigraph +numeric_value_expression right_bracket_or_trigraph + +//6.24 multiset_element_reference (p235) +multiset_element_reference ::= + ELEMENT left_paren multiset_value_expression right_paren + +//6.25 value_expression (p236) +//Specify a value. + +value_expression ::= + common_value_expression + | boolean_value_expression + | row_value_expression + +common_value_expression ::= + numeric_value_expression + | string_value_expression + | datetime_value_expression + | interval_value_expression + | user_defined_type_value_expression + | reference_value_expression + | collection_value_expression + +user_defined_type_value_expression ::= value_expression_primary + +reference_value_expression ::= value_expression_primary + +collection_value_expression ::= array_value_expression | +multiset_value_expression + +collection_value_constructor ::= array_value_constructor | +multiset_value_constructor + +//6.26 numeric_value_expression (p240) +//Specify a numeric value. + +numeric_value_expression ::= + term + | numeric_value_expression plus_sign term + | numeric_value_expression minus_sign term + +term ::= + factor + | term asterisk factor + | term solidus factor + +factor ::= sign? numeric_primary + +numeric_primary ::= + value_expression_primary + | numeric_value_function + +//6.27 numeric_value_function (p242) +//Specify a function yielding a value of type numeric. + +numeric_value_function ::= + position_expression + | extract_expression + | length_expression + | cardinality_expression + | absolute_value_expression + | modulus_expression + | natural_logarithm + | exponential_function + | power_function + | square_root + | floor_function + | ceiling_function + | width_bucket_function + +position_expression ::= + string_position_expression + | blob_position_expression + +string_position_expression ::= + POSITION left_paren string_value_expression IN +string_value_expression ( USING char_length_units )? right_paren + +blob_position_expression ::= + POSITION left_paren blob_value_expression IN +blob_value_expression right_paren + +length_expression ::= + char_length_expression + | octet_length_expression + +char_length_expression ::= + ( CHAR_LENGTH | CHARACTER_LENGTH ) left_paren +string_value_expression ( USING char_length_units )? right_paren + +octet_length_expression ::= OCTET_LENGTH left_paren +string_value_expression right_paren + +extract_expression ::= EXTRACT left_paren extract_field FROM +extract_source right_paren + +extract_field ::= primary_datetime_field | time_zone_field + +time_zone_field ::= TIMEZONE_HOUR | TIMEZONE_MINUTE + +extract_source ::= datetime_value_expression | +interval_value_expression + +cardinality_expression ::= CARDINALITY left_paren +collection_value_expression right_paren + +absolute_value_expression ::= ABS left_paren +numeric_value_expression right_paren + +modulus_expression ::= MOD left_paren +numeric_value_expression_dividend comma numeric_value_expression_divisor +right_paren + +natural_logarithm ::= LN left_paren numeric_value_expression +right_paren + +exponential_function ::= EXP left_paren numeric_value_expression +right_paren + +power_function ::= POWER left_paren numeric_value_expression_base +comma numeric_value_expression_exponent right_paren + +numeric_value_expression_base ::= numeric_value_expression + +numeric_value_expression_exponent ::= numeric_value_expression + +square_root ::= SQRT left_paren numeric_value_expression +right_paren + +floor_function ::= FLOOR left_paren numeric_value_expression +right_paren + +ceiling_function ::= ( CEIL | CEILING ) left_paren +numeric_value_expression right_paren + +width_bucket_function ::= WIDTH_BUCKET left_paren +width_bucket_operand comma width_bucket_bound_1 comma +width_bucket_bound_2 comma width_bucket_count right_paren + +width_bucket_operand ::= numeric_value_expression + +width_bucket_bound_1 ::= numeric_value_expression + +width_bucket_bound_2 ::= numeric_value_expression + +width_bucket_count ::= numeric_value_expression + +//6.28 string_value_expression (p251) +//Specify a character string value or a binary string value. + +string_value_expression ::= character_value_expression | +blob_value_expression + +character_value_expression ::= concatenation | character_factor + +concatenation ::= character_value_expression concatenation_operator +character_factor + +character_factor ::= character_primary collate_clause? + +character_primary ::= value_expression_primary | +string_value_function + +blob_value_expression ::= blob_concatenation | blob_factor + +blob_factor ::= blob_primary + +blob_primary ::= value_expression_primary | string_value_function + +blob_concatenation ::= blob_value_expression concatenation_operator +blob_factor + +//6.29 string_value_function (p255) +//Specify a function yielding a value of type character string or binary +string. + +string_value_function ::= character_value_function | +blob_value_function + +character_value_function ::= + character_substring_function + | regular_expression_substring_function + | fold + | transcoding + | character_transliteration + | trim_function + | character_overlay_function + | normalize_function + | specific_type_method + +character_substring_function ::= + SUBSTRING left_paren character_value_expression FROM +start_position + ( FOR string_length )? ( USING char_length_units )? right_paren + +regular_expression_substring_function ::= + SUBSTRING left_paren character_value_expression + SIMILAR character_value_expression ESCAPE escape_character +right_paren + +fold ::= ( UPPER | LOWER ) left_paren character_value_expression +right_paren + +transcoding ::= CONVERT left_paren character_value_expression USING +transcoding_name right_paren + +character_transliteration ::= TRANSLATE left_paren +character_value_expression USING transliteration_name right_paren + +trim_function ::= TRIM left_paren trim_operands right_paren + +trim_operands ::= ( ( trim_specification )? ( trim_character )? +FROM )? trim_source + +trim_source ::= character_value_expression + +trim_specification ::= LEADING | TRAILING | BOTH + +trim_character ::= character_value_expression + +character_overlay_function ::= + OVERLAY left_paren character_value_expression PLACING +character_value_expression + FROM start_position ( FOR string_length )? ( USING +char_length_units )? right_paren + +normalize_function ::= NORMALIZE left_paren +character_value_expression right_paren + +specific_type_method ::= user_defined_type_value_expression period +SPECIFICTYPE + +blob_value_function ::= + blob_substring_function + | blob_trim_function + | blob_overlay_function + +blob_substring_function ::= + SUBSTRING left_paren blob_value_expression FROM start_position +( FOR string_length )? right_paren + +blob_trim_function ::= TRIM left_paren blob_trim_operands +right_paren + +blob_trim_operands ::= ( ( trim_specification )? ( trim_octet )? +FROM )? blob_trim_source + +blob_trim_source ::= blob_value_expression + +trim_octet ::= blob_value_expression + +blob_overlay_function ::= + OVERLAY left_paren blob_value_expression PLACING +blob_value_expression + FROM start_position ( FOR string_length )? right_paren + +start_position ::= numeric_value_expression + +string_length ::= numeric_value_expression + +//6.30 datetime_value_expression (p266) +//Specify a datetime value. + +datetime_value_expression ::= + datetime_term + | interval_value_expression plus_sign datetime_term + | datetime_value_expression plus_sign interval_term + | datetime_value_expression minus_sign interval_term + +datetime_term ::= datetime_factor + +datetime_factor ::= datetime_primary time_zone? + +datetime_primary ::= value_expression_primary | +datetime_value_function + +time_zone ::= AT time_zone_specifier + +time_zone_specifier ::= LOCAL | TIME ZONE interval_primary + +//6.31 datetime_value_function (p269) +//Specify a function yielding a value of type datetime. + +datetime_value_function ::= + current_date_value_function + | current_time_value_function + | current_timestamp_value_function + | current_local_time_value_function + | current_local_timestamp_value_function + +current_date_value_function ::= CURRENT_DATE + +current_time_value_function ::= CURRENT_TIME ( left_paren +time_precision right_paren )? + +current_local_time_value_function ::= LOCALTIME ( left_paren +time_precision right_paren )? + +current_timestamp_value_function ::= CURRENT_TIMESTAMP ( left_paren +timestamp_precision right_paren )? + +current_local_timestamp_value_function ::= LOCALTIMESTAMP ( +left_paren timestamp_precision right_paren )? + +//6.32 interval_value_expression (p271) +//Specify an interval value. + +interval_value_expression ::= + interval_term + | interval_value_expression_1 plus_sign interval_term_1 + | interval_value_expression_1 minus_sign interval_term_1 + | left_paren datetime_value_expression minus_sign datetime_term +right_paren interval_qualifier + +interval_term ::= + interval_factor + | interval_term_2 asterisk factor + | interval_term_2 solidus factor + | term asterisk interval_factor + +interval_factor ::= sign? interval_primary + +interval_primary ::= + value_expression_primary interval_qualifier? + | interval_value_function + +interval_value_expression_1 ::= interval_value_expression + +interval_term_1 ::= interval_term + +interval_term_2 ::= interval_term + +//6.33 interval_value_function (p276) +interval_value_function ::= interval_absolute_value_function + +interval_absolute_value_function ::= ABS left_paren +interval_value_expression right_paren + +//6.34 boolean_value_expression (p277) +boolean_value_expression ::= + boolean_term + | boolean_value_expression OR boolean_term + +boolean_term ::= + boolean_factor + | boolean_term AND boolean_factor + +boolean_factor ::= NOT? boolean_test + +boolean_test ::= boolean_primary ( IS NOT? truth_value )? + +truth_value ::= TRUE | FALSE | UNKNOWN + +boolean_primary ::= predicate | boolean_predicand + +boolean_predicand ::= + parenthesized_boolean_value_expression + | nonparenthesized_value_expression_primary + +parenthesized_boolean_value_expression ::= left_paren +boolean_value_expression right_paren + +//6.35 array_value_expression (p284) +array_value_expression ::= array_concatenation | array_factor + +array_concatenation ::= array_value_expression_1 +concatenation_operator array_factor + +array_value_expression_1 ::= array_value_expression + +array_factor ::= value_expression_primary + +//6.36 array_value_constructor (p284) +array_value_constructor ::= + array_value_constructor_by_enumeration + | array_value_constructor_by_query + +array_value_constructor_by_enumeration ::= + ARRAY left_bracket_or_trigraph array_element_list +right_bracket_or_trigraph + +array_element_list ::= array_element ( comma array_element )* + +array_element ::= value_expression + +array_value_constructor_by_query ::= + ARRAY left_paren query_expression order_by_clause? right_paren + +//6.37 multiset_value_expression (p286) +multiset_value_expression ::= + multiset_term + | multiset_value_expression MULTISET UNION ( ALL | DISTINCT )? +multiset_term + | multiset_value_expression MULTISET EXCEPT ( ALL | DISTINCT )? +multiset_term + +multiset_term ::= + multiset_primary + | multiset_term MULTISET INTERSECT ( ALL | DISTINCT )? +multiset_primary + +multiset_primary ::= multiset_value_function | +value_expression_primary + +//6.38 multiset_value_function (p289) +multiset_value_function ::= multiset_set_function + +multiset_set_function ::= SET left_paren multiset_value_expression +right_paren + +//6.39 multiset_value_constructor (p290) +multiset_value_constructor ::= + multiset_value_constructor_by_enumeration + | multiset_value_constructor_by_query + | table_value_constructor_by_query + +multiset_value_constructor_by_enumeration ::= MULTISET +left_bracket_or_trigraph multiset_element_list right_bracket_or_trigraph + +multiset_element_list ::= multiset_element ( comma multiset_element +)* + +multiset_element ::= value_expression + +multiset_value_constructor_by_query ::= MULTISET left_paren +query_expression right_paren + +table_value_constructor_by_query ::= TABLE left_paren +query_expression right_paren + +//7 Query expressions +//7.1 row_value_constructor (p293) +//Specify a value or list of values to be constructed into a row or +partial row. + +row_value_constructor ::= + common_value_expression + | boolean_value_expression + | explicit_row_value_constructor + +explicit_row_value_constructor ::= + left_paren row_value_constructor_element comma +row_value_constructor_element_list right_paren + | ROW left_paren row_value_constructor_element_list right_paren + | row_subquery + +row_value_constructor_element_list ::= + row_value_constructor_element ( comma +row_value_constructor_element )* + +row_value_constructor_element ::= value_expression + +contextually_typed_row_value_constructor ::= + common_value_expression + | boolean_value_expression + | contextually_typed_value_specification + | left_paren contextually_typed_row_value_constructor_element comma +contextually_typed_row_value_constructor_element_list right_paren + | ROW left_paren +contextually_typed_row_value_constructor_element_list right_paren + +contextually_typed_row_value_constructor_element_list ::= + contextually_typed_row_value_constructor_element + ( comma contextually_typed_row_value_constructor_element )* + +contextually_typed_row_value_constructor_element ::= + value_expression + | contextually_typed_value_specification + +row_value_constructor_predicand ::= + common_value_expression + | boolean_predicand + | explicit_row_value_constructor + +//7.2 row_value_expression (p296) +//Specify a row value. + +row_value_expression ::= + row_value_special_case + | explicit_row_value_constructor + +table_row_value_expression ::= + row_value_special_case + | row_value_constructor + +contextually_typed_row_value_expression ::= + row_value_special_case + | contextually_typed_row_value_constructor + +row_value_predicand ::= + row_value_special_case + | row_value_constructor_predicand + +row_value_special_case ::= +nonparenthesized_value_expression_primary + +//7.3 table_value_constructor (p298) +//Specify a set of row_value_expressions to be constructed into a table. + +table_value_constructor ::= VALUES row_value_expression_list + +row_value_expression_list ::= table_row_value_expression ( comma +table_row_value_expression )* + +contextually_typed_table_value_constructor ::= VALUES +contextually_typed_row_value_expression_list + +contextually_typed_row_value_expression_list ::= +contextually_typed_row_value_expression ( comma +contextually_typed_row_value_expression )* + +//7.4 table_expression (p300) +//Specify a table or a grouped table. + +table_expression ::= + from_clause + where_clause? + group_by_clause? + having_clause? + window_clause? + +//7.5 from_clause (p301) +//Specify a table derived from one or more tables. + +from_clause ::= FROM table_reference_list + +table_reference_list ::= table_reference ( comma table_reference )* + +//7.6 table_reference (p303) +//Reference a table. + +table_reference ::= table_primary_or_joined_table sample_clause? + +table_primary_or_joined_table ::= table_primary | joined_table + +sample_clause ::= + TABLESAMPLE sample_method left_paren sample_percentage +right_paren repeatable_clause? + +sample_method ::= BERNOULLI | SYSTEM + +repeatable_clause ::= REPEATABLE left_paren repeat_argument +right_paren + +sample_percentage ::= numeric_value_expression + +repeat_argument ::= numeric_value_expression + +table_primary ::= + table_or_query_name ( AS? correlation_name ( left_paren +derived_column_list right_paren )? )? + | derived_table AS? correlation_name ( left_paren +derived_column_list right_paren )? + | lateral_derived_table AS? correlation_name ( left_paren +derived_column_list right_paren )? + | collection_derived_table AS? correlation_name ( left_paren +derived_column_list right_paren )? + | table_function_derived_table AS? correlation_name ( left_paren +derived_column_list right_paren )? + | only_spec ( AS? correlation_name ( left_paren derived_column_list +right_paren )? )? + | left_paren joined_table right_paren + +only_spec ::= ONLY left_paren table_or_query_name right_paren + +lateral_derived_table ::= LATERAL table_subquery + +collection_derived_table ::= UNNEST left_paren +collection_value_expression right_paren ( WITH ORDINALITY )? + +table_function_derived_table ::= TABLE left_paren +collection_value_expression right_paren + +derived_table ::= table_subquery + +table_or_query_name ::= table_name | query_name + +derived_column_list ::= column_name_list + +column_name_list ::= column_name ( comma column_name )* + +//7.7 joined_table (p312) +//Specify a table derived from a Cartesian product, inner or outer join, +or union join. + +joined_table ::= + cross_join + | qualified_join + | natural_join + | union_join + +cross_join ::= table_reference CROSS JOIN table_primary + +qualified_join ::= table_reference join_type? JOIN table_reference +join_specification + +natural_join ::= table_reference NATURAL join_type? JOIN +table_primary + +union_join ::= table_reference UNION JOIN table_primary + +join_specification ::= join_condition | named_columns_join + +join_condition ::= ON search_condition + +named_columns_join ::= USING left_paren join_column_list +right_paren + +join_type ::= INNER | outer_join_type OUTER? + +outer_join_type ::= LEFT | RIGHT | FULL + +join_column_list ::= column_name_list + +//7.8 where_clause (p319) +//Specify a table derived by the application of a search_condition to +the result of the preceding from_clause. + +where_clause ::= WHERE search_condition + +//7.9 group_by_clause (p320) +//Specify a grouped table derived by the application of the +group_by_clause to the result of the previously specified clause. + +group_by_clause ::= GROUP BY set_quantifier? grouping_element_list + +grouping_element_list ::= grouping_element ( comma grouping_element +)* + +grouping_element ::= + ordinary_grouping_set + | rollup_list + | cube_list + | grouping_sets_specification + | empty_grouping_set + +ordinary_grouping_set ::= + grouping_column_reference + | left_paren grouping_column_reference_list right_paren + +grouping_column_reference ::= column_reference collate_clause? + +grouping_column_reference_list ::= grouping_column_reference ( +comma grouping_column_reference )* + +rollup_list ::= ROLLUP left_paren ordinary_grouping_set_list +right_paren + +ordinary_grouping_set_list ::= ordinary_grouping_set ( comma +ordinary_grouping_set )* + +cube_list ::= CUBE left_paren ordinary_grouping_set_list +right_paren + +grouping_sets_specification ::= GROUPING SETS left_paren +grouping_set_list right_paren + +grouping_set_list ::= grouping_set ( comma grouping_set )* + +grouping_set ::= + ordinary_grouping_set + | rollup_list + | cube_list + | grouping_sets_specification + | empty_grouping_set + +empty_grouping_set ::= left_paren right_paren + +//7.10 having_clause (p329) +//Specify a grouped table derived by the elimination of groups that do +not satisfy a search_condition. + +having_clause ::= HAVING search_condition + +//7.11 window_clause (p331) +//Specify one or more window definitions. + +window_clause ::= WINDOW window_definition_list + +window_definition_list ::= window_definition ( comma +window_definition )* + +window_definition ::= new_window_name AS window_specification + +new_window_name ::= window_name + +window_specification ::= left_paren window_specification_details +right_paren + +window_specification_details ::= + existing_window_name? window_partition_clause? +window_order_clause? window_frame_clause? + +existing_window_name ::= window_name + +window_partition_clause ::= PARTITION BY +window_partition_column_reference_list + +window_partition_column_reference_list ::= +window_partition_column_reference ( comma +window_partition_column_reference )* + +window_partition_column_reference ::= column_reference +collate_clause? + +window_order_clause ::= ORDER BY sort_specification_list + +window_frame_clause ::= window_frame_units window_frame_extent +window_frame_exclusion? + +window_frame_units ::= ROWS | RANGE + +window_frame_extent ::= window_frame_start | window_frame_between + +window_frame_start ::= UNBOUNDED PRECEDING | window_frame_preceding +| CURRENT ROW + +window_frame_preceding ::= unsigned_value_specification PRECEDING + +window_frame_between ::= BETWEEN window_frame_bound_1 AND +window_frame_bound_2 + +window_frame_bound_1 ::= window_frame_bound + +window_frame_bound_2 ::= window_frame_bound + +window_frame_bound ::= + window_frame_start + | UNBOUNDED FOLLOWING + | window_frame_following + +window_frame_following ::= unsigned_value_specification FOLLOWING + +window_frame_exclusion ::= + EXCLUDE CURRENT ROW + | EXCLUDE GROUP + | EXCLUDE TIES + | EXCLUDE NO OTHERS + +//7.12 query_specification (p341) +//Specify a table derived from the result of a table_expression. + +query_specification ::= SELECT set_quantifier? select_list +table_expression + +select_list ::= asterisk | select_sublist ( comma select_sublist )* + +select_sublist ::= derived_column | qualified_asterisk + +qualified_asterisk ::= + asterisked_identifier_chain period asterisk + | all_fields_reference + +asterisked_identifier_chain ::= asterisked_identifier ( period +asterisked_identifier )* + +asterisked_identifier ::= identifier + +derived_column ::= value_expression as_clause? + +as_clause ::= AS? column_name + +all_fields_reference ::= value_expression_primary period asterisk ( +AS left_paren all_fields_column_name_list right_paren )? + +all_fields_column_name_list ::= column_name_list + +//7.13 query_expression (p350) +//Specify a table. + +query_expression ::= with_clause? query_expression_body + +with_clause ::= WITH RECURSIVE? with_list + +with_list ::= with_list_element ( comma with_list_element )* + +with_list_element ::= + query_name ( left_paren with_column_list right_paren )? + AS left_paren query_expression right_paren +search_or_cycle_clause? + +with_column_list ::= column_name_list + +query_expression_body ::= non_join_query_expression | joined_table + +non_join_query_expression ::= + non_join_query_term + | query_expression_body UNION ( ALL | DISTINCT )? +corresponding_spec? query_term + | query_expression_body EXCEPT ( ALL | DISTINCT )? +corresponding_spec? query_term + +query_term ::= non_join_query_term | joined_table + +non_join_query_term ::= + non_join_query_primary + | query_term INTERSECT ( ALL | DISTINCT ) corresponding_spec? +query_primary + +query_primary ::= non_join_query_primary | joined_table + +non_join_query_primary ::= simple_table | left_paren +non_join_query_expression right_paren + +simple_table ::= + query_specification + | table_value_constructor + | explicit_table + +explicit_table ::= TABLE table_or_query_name + +corresponding_spec ::= CORRESPONDING ( BY left_paren +corresponding_column_list right_paren )? + +corresponding_column_list ::= column_name_list + +//7.14 search_or_cycle_clause (p363) +//Specify the generation of ordering and cycle detection information in +the result of recursive query expressions. + +search_or_cycle_clause ::= + search_clause + | cycle_clause + | search_clause cycle_clause + +search_clause ::= SEARCH recursive_search_order SET sequence_column + +recursive_search_order ::= + DEPTH FIRST BY sort_specification_list + | BREADTH FIRST BY sort_specification_list + +sequence_column ::= column_name + +cycle_clause ::= + CYCLE cycle_column_list + SET cycle_mark_column TO cycle_mark_value + DEFAULT non_cycle_mark_value + USING path_column + +cycle_column_list ::= cycle_column ( comma cycle_column )* + +cycle_column ::= column_name + +cycle_mark_column ::= column_name + +path_column ::= column_name + +cycle_mark_value ::= value_expression + +non_cycle_mark_value ::= value_expression + +//7.15 subquery (p368) +//Specify a scalar value, a row, or a table derived from a +query_expression. + +scalar_subquery ::= subquery + +row_subquery ::= subquery + +table_subquery ::= subquery + +subquery ::= left_paren query_expression right_paren + +//8 Predicates +//8.1 predicate (p371) +//Specify a condition that can be evaluated to give a boolean value. + +predicate ::= + comparison_predicate + | between_predicate + | in_predicate + | like_predicate + | similar_predicate + | null_predicate + | quantified_comparison_predicate + | exists_predicate + | unique_predicate + | normalized_predicate + | match_predicate + | overlaps_predicate + | distinct_predicate + | member_predicate + | submultiset_predicate + | set_predicate + | type_predicate + +//8.2 comparison_predicate (p373) +//Specify a comparison of two row values. + +comparison_predicate ::= row_value_predicand +comparison_predicate_part_2 + +comparison_predicate_part_2 ::= comp_op row_value_predicand + +comp_op ::= + equals_operator + | not_equals_operator + | less_than_operator + | greater_than_operator + | less_than_or_equals_operator + | greater_than_or_equals_operator + +//8.3 between_predicate (p380) +//Specify a range comparison. + +between_predicate ::= row_value_predicand between_predicate_part_2 + +between_predicate_part_2 ::= NOT? BETWEEN ( ASYMMETRIC | SYMMETRIC +)? row_value_predicand AND row_value_predicand + +//8.4 in_predicate (p381) +//Specify a quantified comparison. + +in_predicate ::= row_value_predicand in_predicate_part_2 + +in_predicate_part_2 ::= NOT? IN in_predicate_value + +in_predicate_value ::= + table_subquery + | left_paren in_value_list right_paren + +in_value_list ::= row_value_expression ( comma row_value_expression +)* + +//8.5 like_predicate (p383) +//Specify a pattern-match comparison. + +like_predicate ::= character_like_predicate | octet_like_predicate + +character_like_predicate ::= row_value_predicand +character_like_predicate_part_2 + +character_like_predicate_part_2 ::= NOT? LIKE character_pattern ( +ESCAPE escape_character )? + +character_pattern ::= character_value_expression + +escape_character ::= character_value_expression + +octet_like_predicate ::= row_value_predicand +octet_like_predicate_part_2 + +octet_like_predicate_part_2 ::= NOT? LIKE octet_pattern ( ESCAPE +escape_octet )? + +octet_pattern ::= blob_value_expression + +escape_octet ::= blob_value_expression + +//8.6 similar_predicate (p389) +//Specify a character string similarity by means of a regular +expression. + +similar_predicate ::= row_value_predicand similar_predicate_part_2 + +similar_predicate_part_2 ::= NOT? SIMILAR TO similar_pattern ( +ESCAPE escape_character )? + +similar_pattern ::= character_value_expression + +regular_expression ::= + regular_term + | regular_expression vertical_bar regular_term + +regular_term ::= + regular_factor + | regular_term regular_factor + +regular_factor ::= + regular_primary + | regular_primary asterisk + | regular_primary plus_sign + | regular_primary question_mark + | regular_primary repeat_factor + +repeat_factor ::= left_brace low_value upper_limit? right_brace + +upper_limit ::= comma high_value? + +low_value ::= unsigned_integer + +high_value ::= unsigned_integer + +regular_primary ::= + character_specifier + | percent + | regular_character_set + | left_paren regular_expression right_paren + +character_specifier ::= non_escaped_character | escaped_character + +non_escaped_character ::= //!! See the Syntax Rules. + +escaped_character ::= //!! See the Syntax Rules. + +regular_character_set ::= + underscore + | left_bracket character_enumeration ... right_bracket + | left_bracket circumflex character_enumeration ... right_bracket + | left_bracket character_enumeration_include ... circumflex +character_enumeration_exclude ... right_bracket + +character_enumeration_include ::= character_enumeration + +character_enumeration_exclude ::= character_enumeration + +character_enumeration ::= + character_specifier + | character_specifier minus_sign character_specifier + | left_bracket colon regular_character_set_identifier colon +right_bracket + +regular_character_set_identifier ::= identifier + +//8.7 null_predicate (p395) +//Specify a test for a null value. + +null_predicate ::= row_value_predicand null_predicate_part_2 + +null_predicate_part_2 ::= IS NOT? NULL + +//8.8 quantified_comparison_predicate (p397) +//Specify a quantified comparison. + +quantified_comparison_predicate ::= row_value_predicand +quantified_comparison_predicate_part_2 + +quantified_comparison_predicate_part_2 ::= comp_op quantifier +table_subquery + +quantifier ::= all | some + +all ::= ALL + +some ::= SOME | ANY + +//8.9 exists_predicate (p399) +//Specify a test for a non-empty set. + +exists_predicate ::= EXISTS table_subquery + +//8.10 unique_predicate (p400) +//Specify a test for the absence of duplicate rows + +unique_predicate ::= UNIQUE table_subquery + +//8.11 normalized_predicate (p401) +//Determine whether a character string value is normalized. + +normalized_predicate ::= string_value_expression IS NOT? NORMALIZED + +//8.12 match_predicate (p402) +//Specify a test for matching rows. + +match_predicate ::= row_value_predicand match_predicate_part_2 + +match_predicate_part_2 ::= MATCH UNIQUE?( SIMPLE | PARTIAL | FULL +)? table_subquery + +//8.13 overlaps_predicate (p405) +//Specify a test for an overlap between two datetime periods. + +overlaps_predicate ::= overlaps_predicate_part_1 +overlaps_predicate_part_2 + +overlaps_predicate_part_1 ::= row_value_predicand_1 + +overlaps_predicate_part_2 ::= OVERLAPS row_value_predicand_2 + +row_value_predicand_1 ::= row_value_predicand + +row_value_predicand_2 ::= row_value_predicand + +//8.14 distinct_predicate (p407) +//Specify a test of whether two row values are distinct + +distinct_predicate ::= row_value_predicand_3 +distinct_predicate_part_2 + +distinct_predicate_part_2 ::= IS DISTINCT FROM +row_value_predicand_4 + +row_value_predicand_3 ::= row_value_predicand + +row_value_predicand_4 ::= row_value_predicand + +//8.15 member_predicate (p409) +//Specify a test of whether a value is a member of a multiset. + +member_predicate ::= row_value_predicand member_predicate_part_2 + +member_predicate_part_2 ::= NOT? MEMBER OF? +multiset_value_expression + +//8.16 submultiset_predicate (p411) +//Specify a test of whether a multiset is a submultiset of another +multiset. + +submultiset_predicate ::= row_value_predicand +submultiset_predicate_part_2 + +submultiset_predicate_part_2 ::= NOT? SUBMULTISET OF? +multiset_value_expression + +//8.17 set_predicate (p413) +//Specify a test of whether a multiset is a set (that is, does not +contain any duplicates). + +set_predicate ::= row_value_predicand set_predicate_part_2 + +set_predicate_part_2 ::= IS NOT? A SET + +//8.18 type_predicate (p414) +//Specify a type test. + +type_predicate ::= row_value_predicand type_predicate_part_2 + +type_predicate_part_2 ::= IS NOT? OF left_paren type_list +right_paren + +type_list ::= user_defined_type_specification ( comma +user_defined_type_specification )* + +user_defined_type_specification ::= + inclusive_user_defined_type_specification + | exclusive_user_defined_type_specification + +inclusive_user_defined_type_specification ::= +path_resolved_user_defined_type_name + +exclusive_user_defined_type_specification ::= ONLY +path_resolved_user_defined_type_name + +//8.19 search_condition (p416) +//Specify a condition that is True , False , or Unknown , depending on +the value of a boolean_value_expression. + +search_condition ::= boolean_value_expression + +//9 Additional common rules +//9.1 Retrieval assignment (p417) +//9.2 Store assignment (p422) +//9.3 Data types of results of aggregations (p427) +//9.4 Subject routine determination (p430) +//9.5 Type precedence list determination (p431) +//9.6 Host parameter mode determination (p434) +//9.7 Type name determination (p436) +//9.8 Determination of identical values (p438) +//9.9 Equality operations (p440) +//9.10 Grouping operations (p443) +//9.11 Multiset element grouping operations (p445) +//9.12 Ordering operations (p447) +//9.13 Collation determination (p449) +//9.14 Execution of array-returning functions (p450) +//9.15 Execution of multiset-returning functions (p453) +//9.16 Data type identity (p454) +//9.17 Determination of a from-sql function (p456) +//9.18 Determination of a from-sql function for an overriding method +(p457) +//9.19 Determination of a to-sql function (p458) +//9.20 Determination of a to-sql function for an overriding method +(p459) +//9.21 Generation of the next value of a sequence generator (p460) +//9.22 Creation of a sequence generator (p461) +//9.23 Altering a sequence generator (p463) +//10 Additional common elements +//10.1 interval_qualifier (p465) +//Specify the precision of an interval data type. + +interval_qualifier ::= + start_field TO end_field + | single_datetime_field + +start_field ::= non_second_primary_datetime_field ( left_paren +interval_leading_field_precision right_paren )? + +end_field ::= + non_second_primary_datetime_field + | SECOND ( left_paren interval_fractional_seconds_precision +right_paren )? + +single_datetime_field ::= + non_second_primary_datetime_field ( left_paren +interval_leading_field_precision right_paren )? + | SECOND ( left_paren interval_leading_field_precision ( comma +interval_fractional_seconds_precision )? right_paren )? + +primary_datetime_field ::= + non_second_primary_datetime_field + | SECOND + +non_second_primary_datetime_field ::= YEAR | MONTH | DAY | HOUR | +MINUTE + +interval_fractional_seconds_precision ::= unsigned_integer + +interval_leading_field_precision ::= unsigned_integer + +//10.2 language_clause (p469) +//Specify a standard programming language. + +language_clause ::= LANGUAGE language_name + +language_name ::= ADA | C | COBOL | FORTRAN | MUMPS | PASCAL | PLI +| SQL + +//Table 14 -- Standard programming languages + +//Language keyword Relevant standard +//ADA ISO/IEC 8652 +//C ISO/IEC 9899 +//COBOL ISO 1989 +//FORTRAN ISO 1539 +//MUMPS ISO/IEC 11756 +//PASCAL ISO/IEC 7185 and ISO/IEC 10206 +//PLI ISO 6160 +//SQL ISO/IEC 9075 +//10.3 path_specification (p471) +//Specify an order for searching for an SQL-invoked routine. + +path_specification ::= PATH schema_name_list + +schema_name_list ::= schema_name ( comma schema_name )* + +//10.4 routine_invocation (p472) +//Invoke an SQL-invoked routine. + +routine_invocation ::= routine_name SQL_argument_list + +routine_name ::= ( schema_name period )? qualified_identifier + +SQL_argument_list ::= left_paren ( SQL_argument ( comma +SQL_argument )* )? right_paren + +SQL_argument ::= + value_expression + | generalized_expression + | target_specification + +generalized_expression ::= value_expression AS +path_resolved_user_defined_type_name + +//10.5 character_set_specification (p495) +//Identify a character set. + +character_set_specification ::= + standard_character_set_name + | implementation_defined_character_set_name + | user_defined_character_set_name + +standard_character_set_name ::= character_set_name + +implementation_defined_character_set_name ::= character_set_name + +user_defined_character_set_name ::= character_set_name + +//10.6 specific_routine_designator (p497) +//Specify an SQL-invoked routine. + +specific_routine_designator ::= + SPECIFIC routine_type specific_name + | routine_type member_name + ( FOR schema_resolved_user_defined_type_name )? + +routine_type ::= + ROUTINE + | FUNCTION + | PROCEDURE + | ( INSTANCE | STATIC | CONSTRUCTOR )? METHOD + +member_name ::= member_name_alternatives data_type_list? + +member_name_alternatives ::= schema_qualified_routine_name | +method_name + +data_type_list ::= left_paren ( data_type ( comma data_type )* )? +right_paren + +//10.7 collate_clause (p500) +//Specify a default collating sequence. + +collate_clause ::= COLLATE collation_name + +//10.8 constraint_name_definition and constraint_characteristics (p501) +//Specify the name of a constraint and its characteristics. + +constraint_name_definition ::= CONSTRAINT constraint_name + +constraint_characteristics ::= + constraint_check_time ( NOT? DEFERRABLE )? + | NOT? DEFERRABLE constraint_check_time? + +constraint_check_time ::= INITIALLY DEFERRED | INITIALLY IMMEDIATE + +//10.9 aggregate_function (p503) +//Specify a value computed from a collection of rows. + +aggregate_function ::= + COUNT left_paren asterisk right_paren filter_clause? + | general_set_function filter_clause? + | binary_set_function filter_clause? + | ordered_set_function filter_clause? + +general_set_function ::= set_function_type left_paren +set_quantifier? value_expression right_paren + +set_function_type ::= computational_operation + +computational_operation ::= + AVG | MAX | MIN | SUM + | EVERY | ANY | SOME + | COUNT + | STDDEV_POP | STDDEV_SAMP | VAR_SAMP | VAR_POP + | COLLECT | FUSION | INTERSECTION + +set_quantifier ::= DISTINCT | ALL + +filter_clause ::= FILTER left_paren WHERE search_condition +right_paren + +binary_set_function ::= binary_set_function_type left_paren +dependent_variable_expression comma independent_variable_expression +right_paren + +binary_set_function_type ::= + COVAR_POP | COVAR_SAMP | CORR | REGR_SLOPE + | REGR_INTERCEPT | REGR_COUNT | REGR_R2 | REGR_AVGX | REGR_AVGY + | REGR_SXX | REGR_SYY | REGR_SXY + +dependent_variable_expression ::= numeric_value_expression + +independent_variable_expression ::= numeric_value_expression + +ordered_set_function ::= hypothetical_set_function | +inverse_distribution_function + +hypothetical_set_function ::= rank_function_type left_paren +hypothetical_set_function_value_expression_list right_paren +within_group_specification + +within_group_specification ::= WITHIN GROUP left_paren ORDER BY +sort_specification_list right_paren + +hypothetical_set_function_value_expression_list ::= +value_expression ( comma value_expression )* + +inverse_distribution_function ::= +inverse_distribution_function_type left_paren +inverse_distribution_function_argument right_paren +within_group_specification + +inverse_distribution_function_argument ::= numeric_value_expression + +inverse_distribution_function_type ::= PERCENTILE_CONT | +PERCENTILE_DISC + +//10.10 sort_specification_list (p515) +//Specify a sort order. + +sort_specification_list ::= sort_specification ( comma +sort_specification )* + +sort_specification ::= sort_key ordering_specification? +null_ordering? + +sort_key ::= value_expression + +ordering_specification ::= ASC | DESC + +null_ordering ::= NULLS FIRST | NULLS LAST + +//11 Schema definition and manipulation +//11.1 schema_definition (p517) +//Define a schema. + +schema_definition ::= CREATE SCHEMA schema_name_clause +schema_character_set_or_path? schema_element? + +schema_character_set_or_path ::= + schema_character_set_specification + | schema_path_specification + | schema_character_set_specification schema_path_specification + | schema_path_specification schema_character_set_specification + +schema_name_clause ::= + schema_name + | AUTHORIZATION schema_authorization_identifier + | schema_name AUTHORIZATION schema_authorization_identifier + +schema_authorization_identifier ::= authorization_identifier + +schema_character_set_specification ::= DEFAULT CHARACTER SET +character_set_specification + +schema_path_specification ::= path_specification + +schema_element ::= + table_definition + | view_definition + | domain_definition + | character_set_definition + | collation_definition + | transliteration_definition + | assertion_definition + | trigger_definition + | user_defined_type_definition + | user_defined_cast_definition + | user_defined_ordering_definition + | transform_definition + | schema_routine + | sequence_generator_definition + | grant_statement + | role_definition + +//11.2 drop_schema_statement (p520) +//Destroy a schema. + +drop_schema_statement ::= DROP SCHEMA schema_name drop_behavior + +drop_behavior ::= CASCADE | RESTRICT + +//11.3 table_definition (p523) +//Define a persistent base table, a created local temporary table, or a +global temporary table. + +table_definition ::= + CREATE table_scope? TABLE table_name table_contents_source + ( ON COMMIT table_commit_action ROWS )? + +table_contents_source ::= + table_element_list + | OF path_resolved_user_defined_type_name subtable_clause? +table_element_list? + | as_subquery_clause + +table_scope ::= global_or_local TEMPORARY + +global_or_local ::= GLOBAL | LOCAL + +table_commit_action ::= PRESERVE | DELETE + +table_element_list ::= left_paren table_element ( comma +table_element )* right_paren + +table_element ::= + column_definition + | table_constraint_definition + | like_clause + | self_referencing_column_specification + | column_options + +self_referencing_column_specification ::= REF IS +self_referencing_column_name reference_generation + +reference_generation ::= SYSTEM GENERATED | USER GENERATED | +DERIVED + +self_referencing_column_name ::= column_name + +column_options ::= column_name WITH OPTIONS column_option_list + +column_option_list ::= scope_clause? default_clause? +column_constraint_definition? + +subtable_clause ::= UNDER supertable_clause + +supertable_clause ::= supertable_name + +supertable_name ::= table_name + +like_clause ::= LIKE table_name like_options? + +like_options ::= identity_option | column_default_option + +identity_option ::= INCLUDING IDENTITY | EXCLUDING IDENTITY + +column_default_option ::= INCLUDING DEFAULTS | EXCLUDING DEFAULTS + +as_subquery_clause ::= ( left_paren column_name_list right_paren )? +AS subquery with_or_without_data + +with_or_without_data ::= WITH NO DATA | WITH DATA + +//11.4 column_definition (p534) +//Define a column of a base table. + +column_definition ::= + column_name ( data_type | domain_name )? reference_scope_check? + ( default_clause | identity_column_specification | +generation_clause )? + column_constraint_definition? collate_clause? + +column_constraint_definition ::= constraint_name_definition? +column_constraint constraint_characteristics? + +column_constraint ::= + NOT NULL + | unique_specification + | references_specification + | check_constraint_definition + +reference_scope_check ::= REFERENCES ARE NOT? CHECKED ( ON DELETE +reference_scope_check_action )? + +reference_scope_check_action ::= referential_action + +identity_column_specification ::= + GENERATED ( ALWAYS | BY DEFAULT ) AS IDENTITY + ( left_paren common_sequence_generator_options right_paren )? + +generation_clause ::= generation_rule AS generation_expression + +generation_rule ::= GENERATED ALWAYS + +generation_expression ::= left_paren value_expression right_paren + +//11.5 default_clause (p539) +//Specify the default for a column, domain, or attribute. + +default_clause ::= DEFAULT default_option + +default_option ::= + literal + | datetime_value_function + | USER + | CURRENT_USER + | CURRENT_ROLE + | SESSION_USER + | SYSTEM_USER + | CURRENT_PATH + | implicitly_typed_value_specification + +//11.6 table_constraint_definition (p543) +//Specify an integrity constraint. + +table_constraint_definition ::= constraint_name_definition? +table_constraint constraint_characteristics? + +table_constraint ::= + unique_constraint_definition + | referential_constraint_definition + | check_constraint_definition + +//11.7 unique_constraint_definition (p545) +//Specify a uniqueness constraint for a table. + +unique_constraint_definition ::= + unique_specification left_paren unique_column_list right_paren + | UNIQUE ( VALUE ) + +unique_specification ::= UNIQUE | PRIMARY KEY + +unique_column_list ::= column_name_list + +//11.8 referential_constraint_definition (p547) +//Specify a referential constraint. + +referential_constraint_definition ::= FOREIGN KEY left_paren +referencing_columns right_paren references_specification + +references_specification ::= REFERENCES +referenced_table_and_columns ( MATCH match_type )? +referential_triggered_action? + +match_type ::= FULL | PARTIAL | SIMPLE + +referencing_columns ::= reference_column_list + +referenced_table_and_columns ::= table_name ( left_paren +reference_column_list right_paren )? + +reference_column_list ::= column_name_list + +referential_triggered_action ::= update_rule delete_rule? | +delete_rule update_rule? + +update_rule ::= ON UPDATE referential_action + +delete_rule ::= ON DELETE referential_action + +referential_action ::= CASCADE | SET NULL | SET DEFAULT | RESTRICT +| NO ACTION + +//11.9 check_constraint_definition (p567) +//Specify a condition for the SQL-data. + +check_constraint_definition ::= CHECK left_paren search_condition +right_paren + +//11.10 alter_table_statement (p569) +//Change the definition of a table. + +alter_table_statement ::= ALTER TABLE table_name alter_table_action + +alter_table_action ::= + add_column_definition + | alter_column_definition + | drop_column_definition + | add_table_constraint_definition + | drop_table_constraint_definition + +//11.11 add_column_definition (p570) +//Add a column to a table. + +add_column_definition ::= ADD COLUMN? column_definition + +//11.12 alter_column_definition (p572) +//Change a column and its definition. + +alter_column_definition ::= ALTER COLUMN? column_name +alter_column_action + +alter_column_action ::= + set_column_default_clause + | drop_column_default_clause + | add_column_scope_clause + | drop_column_scope_clause + | alter_identity_column_specification + +//11.13 set_column_default_clause (p573) +//Set the default clause for a column. + +set_column_default_clause ::= SET default_clause + +//11.14 drop_column_default_clause (p574) +//Drop the default clause from a column. + +drop_column_default_clause ::= DROP DEFAULT + +//11.15 add_column_scope_clause (p575) +//Add a non-empty scope for an existing column of data type REF in a +base table. + +add_column_scope_clause ::= ADD scope_clause + +//11.16 drop_column_scope_clause (p576) +//Drop the scope from an existing column of data type REF in a base +table. + +drop_column_scope_clause ::= DROP SCOPE drop_behavior + +//11.17 alter_identity_column_specification (p578) +//Change the options specified for an identity column. + +alter_identity_column_specification ::= +alter_identity_column_option ... + +alter_identity_column_option ::= + alter_sequence_generator_restart_option + | SET basic_sequence_generator_option + +//11.18 drop_column_definition (p579) +//Destroy a column of a base table. + +drop_column_definition ::= DROP COLUMN? column_name drop_behavior + +//11.19 add_table_constraint_definition (p581) +//Add a constraint to a table. + +add_table_constraint_definition ::= ADD table_constraint_definition + +//11.20 drop_table_constraint_definition (p582) +//Destroy a constraint on a table. + +drop_table_constraint_definition ::= DROP CONSTRAINT +constraint_name drop_behavior + +//11.21 drop_table_statement (p585) +//Destroy a table. + +drop_table_statement ::= DROP TABLE table_name drop_behavior + +//11.22 view_definition (p588) +//Define a viewed table. + +view_definition ::= + CREATE RECURSIVE? VIEW table_name view_specification AS +query_expression + ( WITH levels_clause? CHECK OPTION )? + +view_specification ::= regular_view_specification | +referenceable_view_specification + +regular_view_specification ::= ( left_paren view_column_list +right_paren )? + +referenceable_view_specification ::= OF +path_resolved_user_defined_type_name subview_clause? view_element_list? + +subview_clause ::= UNDER table_name + +view_element_list ::= left_paren view_element ( comma view_element +)* right_paren + +view_element ::= self_referencing_column_specification | +view_column_option + +view_column_option ::= column_name WITH OPTIONS scope_clause + +levels_clause ::= CASCADED | LOCAL + +view_column_list ::= column_name_list + +//11.23 drop_view_statement (p598) +//Destroy a view. + +drop_view_statement ::= DROP VIEW table_name drop_behavior + +//11.24 domain_definition (p601) +//Define a domain. + +domain_definition ::= + CREATE DOMAIN domain_name AS? data_type + default_clause? domain_constraint? collate_clause? + +domain_constraint ::= constraint_name_definition? +check_constraint_definition constraint_characteristics? + +//11.25 alter_domain_statement (p603) +//Change a domain and its definition. + +alter_domain_statement ::= ALTER DOMAIN domain_name +alter_domain_action + +alter_domain_action ::= + set_domain_default_clause + | drop_domain_default_clause + | add_domain_constraint_definition + | drop_domain_constraint_definition + +//11.26 set_domain_default_clause (p604) +//Set the default value in a domain. + +set_domain_default_clause ::= SET default_clause + +//11.27 drop_domain_default_clause (p605) +//Remove the default clause of a domain. + +drop_domain_default_clause ::= DROP DEFAULT + +//11.28 add_domain_constraint_definition (p606) +//Add a constraint to a domain. + +add_domain_constraint_definition ::= ADD domain_constraint + +//11.29 drop_domain_constraint_definition (p607) +//Destroy a constraint on a domain. + +drop_domain_constraint_definition ::= DROP CONSTRAINT +constraint_name + +//11.30 drop_domain_statement (p608) +//Destroy a domain. + +drop_domain_statement ::= DROP DOMAIN domain_name drop_behavior + +//11.31 character_set_definition (p610) +//Define a character set. + +character_set_definition ::= + CREATE CHARACTER SET character_set_name AS? +character_set_source collate_clause? + +character_set_source ::= GET character_set_specification + +//11.32 drop_character_set_statement (p612) +//Destroy a character set. + +drop_character_set_statement ::= DROP CHARACTER SET +character_set_name + +//11.33 collation_definition (p614) +//Define a collating sequence. + +collation_definition ::= + CREATE COLLATION collation_name FOR character_set_specification + FROM existing_collation_name pad_characteristic? + +existing_collation_name ::= collation_name + +pad_characteristic ::= NO PAD | PAD SPACE + +//11.34 drop_collation_statement (p616) +//Destroy a collating sequence. + +drop_collation_statement ::= DROP COLLATION collation_name +drop_behavior + +//11.35 transliteration_definition (p618) +//Define a character transliteration. + +transliteration_definition ::= + CREATE TRANSLATION transliteration_name FOR +source_character_set_specification + TO target_character_set_specification FROM +transliteration_source + +source_character_set_specification ::= character_set_specification + +target_character_set_specification ::= character_set_specification + +transliteration_source ::= existing_transliteration_name | +transliteration_routine + +existing_transliteration_name ::= transliteration_name + +transliteration_routine ::= specific_routine_designator + +//11.36 drop_transliteration_statement (p621) +//Destroy a character transliteration. + +drop_transliteration_statement ::= DROP TRANSLATION +transliteration_name + +//11.37 assertion_definition (p623) +//Specify an integrity constraint. + +assertion_definition ::= + CREATE ASSERTION constraint_name CHECK left_paren +search_condition right_paren constraint_characteristics? + +//11.38 drop_assertion_statement (p625) +//Destroy an assertion. + +drop_assertion_statement ::= DROP ASSERTION constraint_name + +//11.39 trigger_definition (p627) +//Define triggered SQL-statements. + +trigger_definition ::= + CREATE TRIGGER trigger_name trigger_action_time trigger_event + ON table_name ( REFERENCING old_or_new_values_alias_list )? + triggered_action + +trigger_action_time ::= BEFORE | AFTER + +trigger_event ::= INSERT | DELETE | UPDATE ( OF trigger_column_list +)? + +trigger_column_list ::= column_name_list + +triggered_action ::= + ( FOR EACH ( ROW | STATEMENT ) )? + ( WHEN left_paren search_condition right_paren )? + triggered_SQL_statement + +triggered_SQL_statement ::= + SQL_procedure_statement + | BEGIN ATOMIC ( SQL_procedure_statement semicolon )* END + +old_or_new_values_alias_list ::= old_or_new_values_alias ... + +old_or_new_values_alias ::= + OLD ROW? AS? old_values_correlation_name + | NEW ROW? AS? new_values_correlation_name + | OLD TABLE AS? old_values_table_alias + | NEW TABLE AS? new_values_table_alias + +old_values_table_alias ::= identifier + +new_values_table_alias ::= identifier + +old_values_correlation_name ::= correlation_name + +new_values_correlation_name ::= correlation_name + +//11.40 drop_trigger_statement (p631) +//Destroy a trigger. + +drop_trigger_statement ::= DROP TRIGGER trigger_name + +//11.41 user_defined_type_definition (p632) +//Define a user-defined type. + +user_defined_type_definition ::= CREATE TYPE user_defined_type_body + +user_defined_type_body ::= + schema_resolved_user_defined_type_name subtype_clause? + ( AS representation )? user_defined_type_option_list? +method_specification_list? + +user_defined_type_option_list ::= user_defined_type_option +user_defined_type_option? + +user_defined_type_option ::= + instantiable_clause + | finality + | reference_type_specification + | ref_cast_option + | cast_option + +subtype_clause ::= + UNDER supertype_name + +supertype_name ::= + path_resolved_user_defined_type_name + +representation ::= predefined_type | member_list + +member_list ::= left_paren member ( comma member )* right_paren + +member ::= attribute_definition + +instantiable_clause ::= INSTANTIABLE | NOT INSTANTIABLE + +finality ::= FINAL | NOT FINAL + +reference_type_specification ::= + user_defined_representation + | derived_representation + | system_generated_representation + +user_defined_representation ::= REF USING predefined_type + +derived_representation ::= REF FROM list_of_attributes + +system_generated_representation ::= REF IS SYSTEM GENERATED + +ref_cast_option ::= cast_to_ref? cast_to_type? + +cast_to_ref ::= CAST left_paren SOURCE AS REF right_paren WITH +cast_to_ref_identifier + +cast_to_ref_identifier ::= identifier + +cast_to_type ::= CAST left_paren REF AS SOURCE right_paren WITH +cast_to_type_identifier + +cast_to_type_identifier ::= identifier + +list_of_attributes ::= left_paren attribute_name ( comma +attribute_name )* right_paren + +cast_option ::= cast_to_distinct? cast_to_source? + +cast_to_distinct ::= + CAST left_paren SOURCE AS DISTINCT right_paren + WITH cast_to_distinct_identifier + +cast_to_distinct_identifier ::= identifier + +cast_to_source ::= + CAST left_paren DISTINCT AS SOURCE right_paren + WITH cast_to_source_identifier + +cast_to_source_identifier ::= identifier + +method_specification_list ::= method_specification ( comma +method_specification )* + +method_specification ::= original_method_specification | +overriding_method_specification + +original_method_specification ::= + partial_method_specification ( SELF AS RESULT )? ( SELF AS +LOCATOR )? method_characteristics? + +overriding_method_specification ::= OVERRIDING +partial_method_specification + +partial_method_specification ::= + ( INSTANCE | STATIC | CONSTRUCTOR )? METHOD method_name +SQL_parameter_declaration_list + returns_clause ( SPECIFIC specific_method_name )? + +specific_method_name ::= ( schema_name period )? +qualified_identifier_ + +method_characteristics ::= method_characteristic ... + +method_characteristic ::= + language_clause + | parameter_style_clause + | deterministic_characteristic + | SQL_data_access_indication + | null_call_clause + +//11.42 attribute_definition (p648) +//Define an attribute of a structured type. + +attribute_definition ::= + attribute_name data_type reference_scope_check? +attribute_default? collate_clause? + +attribute_default ::= default_clause + +//11.43 alter_type_statement (p650) +//Change the definition of a user-defined type. + +alter_type_statement ::= ALTER TYPE +schema_resolved_user_defined_type_name alter_type_action + +alter_type_action ::= + add_attribute_definition + | drop_attribute_definition + | add_original_method_specification + | add_overriding_method_specification + | drop_method_specification + +//11.44 add_attribute_definition (p651) +//Add an attribute to a user-defined type. + +add_attribute_definition ::= ADD ATTRIBUTE attribute_definition + +//11.45 drop_attribute_definition (p653) +//Destroy an attribute of a user-defined type. + +drop_attribute_definition ::= DROP ATTRIBUTE attribute_name +RESTRICT + +//11.46 add_original_method_specification (p655) +//Add an original method specification to a user-defined type. + +add_original_method_specification ::= ADD +original_method_specification + +//11.47 add_overriding_method_specification (p661) +//Add an overriding method specification to a user-defined type. + +add_overriding_method_specification ::= ADD +overriding_method_specification + +//11.48 drop_method_specification (p666) +//Remove a method specification from a user-defined type. + +drop_method_specification ::= DROP +specific_method_specification_designator RESTRICT + +specific_method_specification_designator ::= ( INSTANCE | STATIC | +CONSTRUCTOR )? METHOD method_name data_type_list + +//11.49 drop_data_type_statement (p670) +//Destroy a user-defined type. + +drop_data_type_statement ::= DROP TYPE +schema_resolved_user_defined_type_name drop_behavior + +//11.50 SQL_invoked_routine (p673) +//Define an SQL-invoked routine. + +SQL_invoked_routine ::= schema_routine + +schema_routine ::= schema_procedure | schema_function + +schema_procedure ::= CREATE SQL_invoked_procedure + +schema_function ::= CREATE SQL_invoked_function + +SQL_invoked_procedure ::= + PROCEDURE schema_qualified_routine_name +SQL_parameter_declaration_list routine_characteristics routine_body + +SQL_invoked_function ::= + ( function_specification | method_specification_designator ) +routine_body + +SQL_parameter_declaration_list ::= + left_paren ( SQL_parameter_declaration ( comma +SQL_parameter_declaration )* )? right_paren + +SQL_parameter_declaration ::= parameter_mode? SQL_parameter_name? +parameter_type RESULT? + +parameter_mode ::= IN | OUT | INOUT + +parameter_type ::= data_type locator_indication? + +locator_indication ::= AS LOCATOR + +function_specification ::= + FUNCTION schema_qualified_routine_name + SQL_parameter_declaration_list returns_clause +routine_characteristics dispatch_clause? + +method_specification_designator ::= + SPECIFIC METHOD specific_method_name + | ( INSTANCE | STATIC | CONSTRUCTOR )? METHOD method_name +SQL_parameter_declaration_list + returns_clause? FOR schema_resolved_user_defined_type_name + +routine_characteristics ::= routine_characteristic? + +routine_characteristic ::= + language_clause + | parameter_style_clause + | SPECIFIC specific_name + | deterministic_characteristic + | SQL_data_access_indication + | null_call_clause + | dynamic_result_sets_characteristic + | savepoint_level_indication + +savepoint_level_indication ::= NEW SAVEPOINT LEVEL | OLD SAVEPOINT +LEVEL + +dynamic_result_sets_characteristic ::= DYNAMIC RESULT SETS +maximum_dynamic_result_sets + +parameter_style_clause ::= PARAMETER STYLE parameter_style + +dispatch_clause ::= STATIC DISPATCH + +returns_clause ::= RETURNS returns_type + +returns_type ::= + returns_data_type result_cast? + | returns_table_type + +returns_table_type ::= TABLE table_function_column_list + +table_function_column_list ::= + left_paren + table_function_column_list_element ( comma +table_function_column_list_element )* + right_paren + +table_function_column_list_element ::= column_name data_type + +result_cast ::= CAST FROM result_cast_from_type + +result_cast_from_type ::= data_type locator_indication? + +returns_data_type ::= data_type locator_indication? + +routine_body ::= + SQL_routine_spec + | external_body_reference + +SQL_routine_spec ::= rights_clause? SQL_routine_body + +rights_clause ::= SQL SECURITY INVOKER | SQL SECURITY DEFINER + +SQL_routine_body ::= SQL_procedure_statement + +external_body_reference ::= + EXTERNAL ( NAME external_routine_name )? +parameter_style_clause? + transform_group_specification? external_security_clause? + +external_security_clause ::= + EXTERNAL SECURITY DEFINER + | EXTERNAL SECURITY INVOKER + | EXTERNAL SECURITY IMPLEMENTATION DEFINED + +parameter_style ::= SQL | GENERAL + +deterministic_characteristic ::= DETERMINISTIC | NOT DETERMINISTIC + +SQL_data_access_indication ::= + NO SQL + | CONTAINS SQL + | READS SQL DATA + | MODIFIES SQL DATA + +null_call_clause ::= + RETURNS NULL ON NULL INPUT + | CALLED ON NULL INPUT + +maximum_dynamic_result_sets ::= unsigned_integer + +transform_group_specification ::= TRANSFORM GROUP ( +single_group_specification | multiple_group_specification ) + +single_group_specification ::= group_name + +multiple_group_specification ::= group_specification ( comma +group_specification )* + +group_specification ::= group_name FOR TYPE +path_resolved_user_defined_type_name + +//11.51 alter_routine_statement (p698) +//Alter a characteristic of an SQL-invoked routine. + +alter_routine_statement ::= ALTER specific_routine_designator +alter_routine_characteristics alter_routine_behavior + +alter_routine_characteristics ::= alter_routine_characteristic ... + +alter_routine_characteristic ::= + language_clause + | parameter_style_clause + | SQL_data_access_indication + | null_call_clause + | dynamic_result_sets_characteristic + | NAME external_routine_name + +alter_routine_behavior ::= RESTRICT + +//11.52 drop_routine_statement (p701) +//Destroy an SQL-invoked routine. + +drop_routine_statement ::= DROP specific_routine_designator +drop_behavior + +//11.53 user_defined_cast_definition (p703) +//Define a user-defined cast. + +user_defined_cast_definition ::= + CREATE CAST left_paren source_data_type AS target_data_type +right_paren + WITH cast_function ( AS ASSIGNMENT )? + +cast_function ::= specific_routine_designator + +source_data_type ::= data_type + +target_data_type ::= data_type + +//11.54 drop_user_defined_cast_statement (p705) +//Destroy a user-defined cast. + +drop_user_defined_cast_statement ::= + DROP CAST left_paren source_data_type AS target_data_type +right_paren drop_behavior + +//11.55 user_defined_ordering_definition (p707) +//Define a user-defined ordering for a user-defined type. + +user_defined_ordering_definition ::= + CREATE ORDERING FOR schema_resolved_user_defined_type_name +ordering_form + +ordering_form ::= equals_ordering_form | full_ordering_form + +equals_ordering_form ::= EQUALS ONLY BY ordering_category + +full_ordering_form ::= ORDER FULL BY ordering_category + +ordering_category ::= relative_category | map_category | +state_category + +relative_category ::= RELATIVE WITH relative_function_specification + +map_category ::= MAP WITH map_function_specification + +state_category ::= STATE specific_name? + +relative_function_specification ::= specific_routine_designator + +map_function_specification ::= specific_routine_designator + +//11.56 drop_user_defined_ordering_statement (p710) +//Destroy a user-defined ordering method. + +drop_user_defined_ordering_statement ::= + DROP ORDERING FOR schema_resolved_user_defined_type_name +drop_behavior + +//11.57 transform_definition (p712) +//Define one or more transform functions for a user-defined type. + +transform_definition ::= CREATE ( TRANSFORM | TRANSFORMS ) FOR +schema_resolved_user_defined_type_name transform_group ... + +transform_group ::= group_name left_paren transform_element_list +right_paren + +group_name ::= identifier + +transform_element_list ::= transform_element ( comma +transform_element )? + +transform_element ::= to_sql | from_sql + +to_sql ::= TO SQL WITH to_sql_function + +from_sql ::= FROM SQL WITH from_sql_function + +to_sql_function ::= specific_routine_designator + +from_sql_function ::= specific_routine_designator + +//11.58 alter_transform_statement (p715) +//Change the definition of one or more transform groups. + +alter_transform_statement ::= + ALTER ( TRANSFORM | TRANSFORMS ) FOR +schema_resolved_user_defined_type_name alter_group ... + +alter_group ::= group_name left_paren alter_transform_action_list +right_paren + +alter_transform_action_list ::= alter_transform_action ( comma +alter_transform_action )* + +alter_transform_action ::= add_transform_element_list | +drop_transform_element_list + +//11.59 add_transform_element_list (p717) +//Add a transform element (to_sql and/or from_sql) to an existing +transform group. + +add_transform_element_list ::= ADD left_paren +transform_element_list right_paren + +//11.60 drop_transform_element_list (p719) +//Remove a transform element (to_sql and/or from_sql) from a transform +group. + +drop_transform_element_list ::= DROP left_paren transform_kind ( +comma transform_kind )? drop_behavior right_paren + +transform_kind ::= TO SQL | FROM SQL + +//11.61 drop_transform_statement (p721) +//Remove one or more transform functions associated with a transform. + +drop_transform_statement ::= + DROP ( TRANSFORM | TRANSFORMS ) transforms_to_be_dropped FOR +schema_resolved_user_defined_type_name drop_behavior + +transforms_to_be_dropped ::= ALL | transform_group_element + +transform_group_element ::= group_name + +//11.62 sequence_generator_definition (p724) +//Define an external sequence generator. + +sequence_generator_definition ::= CREATE SEQUENCE +sequence_generator_name sequence_generator_options? + +sequence_generator_options ::= sequence_generator_option ... + +sequence_generator_option ::= sequence_generator_data_type_option | +common_sequence_generator_options + +common_sequence_generator_options ::= +common_sequence_generator_option ... + +common_sequence_generator_option ::= +sequence_generator_start_with_option | basic_sequence_generator_option + +basic_sequence_generator_option ::= + sequence_generator_increment_by_option + | sequence_generator_maxvalue_option + | sequence_generator_minvalue_option + | sequence_generator_cycle_option + +sequence_generator_data_type_option ::= AS data_type + +sequence_generator_start_with_option ::= START WITH +sequence_generator_start_value + +sequence_generator_start_value ::= signed_numeric_literal + +sequence_generator_increment_by_option ::= INCREMENT BY +sequence_generator_increment + +sequence_generator_increment ::= signed_numeric_literal + +sequence_generator_maxvalue_option ::= + MAXVALUE sequence_generator_max_value + | NO MAXVALUE + +sequence_generator_max_value ::= signed_numeric_literal + +sequence_generator_minvalue_option ::= MINVALUE +sequence_generator_min_value | NO MINVALUE + +sequence_generator_min_value ::= signed_numeric_literal + +sequence_generator_cycle_option ::= CYCLE | NO CYCLE + +//11.63 alter_sequence_generator_statement (p726) +//Change the definition of an external sequence generator. + +alter_sequence_generator_statement ::= + ALTER SEQUENCE sequence_generator_name +alter_sequence_generator_options + +alter_sequence_generator_options ::= +alter_sequence_generator_option ... + +alter_sequence_generator_option ::= + alter_sequence_generator_restart_option + | basic_sequence_generator_option + +alter_sequence_generator_restart_option ::= RESTART WITH +sequence_generator_restart_value + +sequence_generator_restart_value ::= signed_numeric_literal + +//11.64 drop_sequence_generator_statement (p727) +//Destroy an external sequence generator. + +drop_sequence_generator_statement ::= DROP SEQUENCE +sequence_generator_name drop_behavior + +//12 Access control +//12.1 grant_statement (p729) +//Define privileges and role authorizations. + +grant_statement ::= grant_privilege_statement | +grant_role_statement + +//12.2 grant_privilege_statement (p734) +//Define privileges. + +grant_privilege_statement ::= + GRANT privileges TO grantee ( comma grantee )* + ( WITH HIERARCHY OPTION )? ( WITH GRANT OPTION )? ( GRANTED BY +grantor )? + +//12.3 privileges (p737) +//Specify privileges. + +privileges ::= object_privileges ON object_name + +object_name ::= + TABLE? table_name + | DOMAIN domain_name + | COLLATION collation_name + | CHARACTER SET character_set_name + | TRANSLATION transliteration_name + | TYPE schema_resolved_user_defined_type_name + | SEQUENCE sequence_generator_name + | specific_routine_designator + +object_privileges ::= + ALL PRIVILEGES + | action ( comma action )* + +action ::= + SELECT + | SELECT left_paren privilege_column_list right_paren + | SELECT left_paren privilege_method_list right_paren + | DELETE + | INSERT ( left_paren privilege_column_list right_paren )? + | UPDATE ( left_paren privilege_column_list right_paren )? + | REFERENCES ( left_paren privilege_column_list right_paren )? + | USAGE + | TRIGGER + | UNDER + | EXECUTE + +privilege_method_list ::= specific_routine_designator ( comma +specific_routine_designator )* + +privilege_column_list ::= column_name_list + +grantee ::= PUBLIC | authorization_identifier + +grantor ::= CURRENT_USER | CURRENT_ROLE + +//12.4 role_definition (p741) +//Define a role. + +role_definition ::= CREATE ROLE role_name ( WITH ADMIN grantor )? + +//12.5 grant_role_statement (p742) +//Define role authorizations. + +grant_role_statement ::= + GRANT role_granted ( comma role_granted )* + TO grantee ( comma grantee )* ( WITH ADMIN OPTION )? ( GRANTED +BY grantor )? + +role_granted ::= role_name + +//12.6 drop_role_statement (p744) +//Destroy a role. + +drop_role_statement ::= DROP ROLE role_name + +//12.7 revoke_statement (p745) +//Destroy privileges and role authorizations. + +revoke_statement ::= + revoke_privilege_statement + | revoke_role_statement + +revoke_privilege_statement ::= + REVOKE revoke_option_extension? privileges FROM grantee ( +comma grantee )* + ( GRANTED BY grantor )? drop_behavior + +revoke_option_extension ::= GRANT OPTION FOR | HIERARCHY OPTION FOR + +revoke_role_statement ::= + REVOKE ( ADMIN OPTION FOR )? role_revoked ( comma role_revoked +)* + FROM grantee ( comma grantee )* ( GRANTED BY grantor )? +drop_behavior + +role_revoked ::= role_name + +//13 SQL-client modules +//13.1 SQL_client_module_definition (p763) +//Define an SQL-client module. + +SQL_client_module_definition ::= + module_name_clause language_clause module_authorization_clause + module_path_specification? + module_transform_group_specification? + module_collation? + temporary_table_declaration? + module_contents + +module_authorization_clause ::= + SCHEMA schema_name + | AUTHORIZATION module_authorization_identifier ( FOR STATIC ( ONLY +| AND DYNAMIC ) )? + | SCHEMA schema_name AUTHORIZATION module_authorization_identifier +( FOR STATIC ( ONLY | AND DYNAMIC ) )? + +module_authorization_identifier ::= authorization_identifier + +module_path_specification ::= path_specification + +module_transform_group_specification ::= +transform_group_specification + +module_collation ::= module_collation_specification ... + +module_collation_specification ::= COLLATION collation_name ( FOR +character_set_specification_list )? + +//There was another definition character_set_specification_list in +section 18.3. That was slightly different in format (simpler) but +functionally equivalent. It is not clear why it was repeated. The +alternative definition is now commented out. + +character_set_specification_list ::= character_set_specification ( +comma character_set_specification )* + +module_contents ::= + declare_cursor + | dynamic_declare_cursor + | externally_invoked_procedure + +//13.2 module_name_clause (p768) +//Name an SQL-client module. + +module_name_clause ::= + MODULE SQL_client_module_name? +module_character_set_specification? + +module_character_set_specification ::= NAMES ARE +character_set_specification + +//13.3 externally_invoked_procedure (p769) +//Define an externally-invoked procedure. + +externally_invoked_procedure ::= + PROCEDURE procedure_name host_parameter_declaration_list +semicolon + SQL_procedure_statement semicolon + +host_parameter_declaration_list ::= + left_paren host_parameter_declaration ( comma +host_parameter_declaration )* right_paren + +host_parameter_declaration ::= + host_parameter_name host_parameter_data_type + | status_parameter + +host_parameter_data_type ::= data_type locator_indication? + +status_parameter ::= SQLSTATE + +//13.4 Calls to an externally_invoked_procedure (p772) +//13.5 SQL_procedure_statement (p788) +//Define all of the SQL-statements that are SQL_procedure_statements. + +SQL_procedure_statement ::= SQL_executable_statement + +SQL_executable_statement ::= + SQL_schema_statement + | SQL_data_statement + | SQL_control_statement + | SQL_transaction_statement + | SQL_connection_statement + | SQL_session_statement + | SQL_diagnostics_statement + | SQL_dynamic_statement + +SQL_schema_statement ::= + SQL_schema_definition_statement + | SQL_schema_manipulation_statement + +SQL_schema_definition_statement ::= + schema_definition + | table_definition + | view_definition + | SQL_invoked_routine + | grant_statement + | role_definition + | domain_definition + | character_set_definition + | collation_definition + | transliteration_definition + | assertion_definition + | trigger_definition + | user_defined_type_definition + | user_defined_cast_definition + | user_defined_ordering_definition + | transform_definition + | sequence_generator_definition + +SQL_schema_manipulation_statement ::= + drop_schema_statement + | alter_table_statement + | drop_table_statement + | drop_view_statement + | alter_routine_statement + | drop_routine_statement + | drop_user_defined_cast_statement + | revoke_statement + | drop_role_statement + | alter_domain_statement + | drop_domain_statement + | drop_character_set_statement + | drop_collation_statement + | drop_transliteration_statement + | drop_assertion_statement + | drop_trigger_statement + | alter_type_statement + | drop_data_type_statement + | drop_user_defined_ordering_statement + | alter_transform_statement + | drop_transform_statement | alter_sequence_generator_statement + | drop_sequence_generator_statement + +SQL_data_statement ::= + open_statement + | fetch_statement + | close_statement + | select_statement__single_row + | free_locator_statement + | hold_locator_statement + | SQL_data_change_statement + +SQL_data_change_statement ::= + delete_statement__positioned + | delete_statement__searched + | insert_statement + | update_statement__positioned + | update_statement__searched + | merge_statement + +SQL_control_statement ::= + call_statement + | return_statement + +SQL_transaction_statement ::= + start_transaction_statement + | set_transaction_statement + | set_constraints_mode_statement + | savepoint_statement + | release_savepoint_statement + | commit_statement + | rollback_statement + +SQL_connection_statement ::= + connect_statement + | set_connection_statement + | disconnect_statement + +SQL_session_statement ::= + set_session_user_identifier_statement + | set_role_statement + | set_local_time_zone_statement + | set_session_characteristics_statement + | set_catalog_statement + | set_schema_statement + | set_names_statement + | set_path_statement + | set_transform_group_statement + | set_session_collation_statement + +SQL_diagnostics_statement ::= get_diagnostics_statement + +SQL_dynamic_statement ::= + system_descriptor_statement + | prepare_statement + | deallocate_prepared_statement + | describe_statement + | execute_statement + | execute_immediate_statement + | SQL_dynamic_data_statement + +SQL_dynamic_data_statement ::= + allocate_cursor_statement + | dynamic_open_statement + | dynamic_fetch_statement + | dynamic_close_statement + | dynamic_delete_statement__positioned + | dynamic_update_statement__positioned + +system_descriptor_statement ::= + allocate_descriptor_statement + | deallocate_descriptor_statement + | set_descriptor_statement + | get_descriptor_statement + +//13.6 Data type correspondences (p796) +//Table 16 -- Data type correspondences for C + +//SQL Data Type C Data Type +//SQLSTATE char, with length 6 +//CHARACTER (L)3 char, with length (L+1)*k1 +//CHARACTER VARYING (L)3 char, with length (L+1)*k1 +//CHARACTER LARGE OBJECT(L) +//struct { +//long hvn3_reserved +//unsigned long hvn2_length +//char3 hvn2_data[L]; +//} hvn2 +//BINARY LARGE OBJECT(L) +// struct { +//long hvn2_reserved +//unsigned long hvn2_length +//char hvn2_data[L]; +//} hvn2 +//NUMERIC(P,S) None +//DECIMAL(P,S) None +//SMALLINT pointer to short +//INTEGER pointer to long +//BIGINT pointer to long long +//FLOAT(P) None +//REAL pointer to float +//DOUBLE PRECISION pointer to double +//BOOLEAN pointer to long +//DATE None +//TIME(T) None +//TIMESTAMP(T) None +//INTERVAL(Q) None +//user-defined type None +//REF char, with length N +//ROW None +//ARRAY None +//MULTISET None +//1 For character set UTF16, as well as other implementation-defined +character sets in which a code unit occupies two octets, k is the length +in units of C unsigned short of the character encoded using the greatest +number of such units in the character set; for character set UTF32, as +well as other implementation-defined character sets in which a code unit +occupies four octets, k is four; for other character sets, k is the +length in units of C char of the character encoded using the greatest +number of such units in the character set. +//2 hvn is the name of the host variable defined to correspond to the +SQL data type +//3 For character set UTF16, as well as other implementation-defined +character sets in which a code unit occupies two octets, char or +unsigned char should be replaced with unsigned short; for character set +UTF32, as well as other implementation-defined character sets in which a +code unit occupies four octets, char or unsigned char should be replaced +with unsigned int. Otherwise, char or unsigned char should be used. + +//14 Data manipulation +//14.1 declare_cursor (p807) +//Define a cursor. + +declare_cursor ::= + DECLARE cursor_name cursor_sensitivity? cursor_scrollability? +CURSOR + cursor_holdability? cursor_returnability? FOR +cursor_specification + +cursor_sensitivity ::= SENSITIVE | INSENSITIVE | ASENSITIVE + +cursor_scrollability ::= SCROLL | NO SCROLL + +cursor_holdability ::= WITH HOLD | WITHOUT HOLD + +cursor_returnability ::= WITH RETURN | WITHOUT RETURN + +cursor_specification ::= query_expression order_by_clause? +updatability_clause? + +updatability_clause ::= FOR ( READ ONLY | UPDATE ( OF +column_name_list )? ) + +order_by_clause ::= ORDER BY sort_specification_list + +//14.2 open_statement (p813) +//Open a cursor. + +open_statement ::= OPEN cursor_name + +//14.3 fetch_statement (p815) +//Position a cursor on a specified row of a table and retrieve values +from that row. + +fetch_statement ::= + FETCH ( fetch_orientation? FROM )? cursor_name INTO +fetch_target_list + +fetch_orientation ::= + NEXT + | PRIOR + | FIRST + | LAST + | ( ABSOLUTE | RELATIVE ) simple_value_specification + +fetch_target_list ::= target_specification ( comma +target_specification )* + +//14.4 close_statement (p820) +//Close a cursor. + +close_statement ::= CLOSE cursor_name + +//14.5 select_statement__single_row (p822) +//Retrieve values from a specified row of a table. + +select_statement__single_row ::= + SELECT set_quantifier? select_list INTO select_target_list +table_expression + +select_target_list ::= target_specification ( comma +target_specification )* + +//14.6 delete_statement__positioned (p826) +//Delete a row of a table. + +delete_statement__positioned ::= DELETE FROM target_table WHERE +CURRENT OF cursor_name + +target_table ::= + table_name + | ONLY left_paren table_name right_paren + +//14.7 delete_statement__searched (p829) +//Delete rows of a table. + +delete_statement__searched ::= DELETE FROM target_table ( WHERE +search_condition )? + +//14.8 insert_statement (p832) +//Create new rows in a table. + +insert_statement ::= INSERT INTO insertion_target +insert_columns_and_source + +insertion_target ::= table_name + +insert_columns_and_source ::= + from_subquery + | from_constructor + | from_default + +from_subquery ::= ( left_paren insert_column_list right_paren )? +override_clause query_expression + +from_constructor ::= + ( left_paren insert_column_list right_paren ) override_clause? +contextually_typed_table_value_constructor + +override_clause ::= OVERRIDING USER VALUE | OVERRIDING SYSTEM VALUE + +from_default ::= DEFAULT VALUES + +insert_column_list ::= column_name_list + +//14.9 merge_statement (p837) +//Conditionally update rows of a table, or insert new rows into a table, +or both. + +merge_statement ::= + MERGE INTO target_table ( AS? merge_correlation_name )? + USING table_reference ON search_condition +merge_operation_specification + +merge_correlation_name ::= correlation_name + +merge_operation_specification ::= merge_when_clause ... + +merge_when_clause ::= merge_when_matched_clause | +merge_when_not_matched_clause + +merge_when_matched_clause ::= WHEN MATCHED THEN +merge_update_specification + +merge_when_not_matched_clause ::= WHEN NOT MATCHED THEN +merge_insert_specification + +merge_update_specification ::= UPDATE SET set_clause_list + +merge_insert_specification ::= + INSERT ( left_paren insert_column_list right_paren )? + override_clause? VALUES merge_insert_value_list + +merge_insert_value_list ::= + left_paren merge_insert_value_element ( comma +merge_insert_value_element )* right_paren + +merge_insert_value_element ::= value_expression | +contextually_typed_value_specification + +//14.10 update_statement__positioned (p844) +//Update a row of a table. + +update_statement__positioned ::= UPDATE target_table SET +set_clause_list WHERE CURRENT OF cursor_name + +//14.11 update_statement__searched (p847) +//Update rows of a table. + +update_statement__searched ::= UPDATE target_table SET +set_clause_list ( WHERE search_condition )? + +//14.12 set_clause_list (p851) +//Specify a list of updates. + +set_clause_list ::= set_clause ( comma set_clause )* + +set_clause ::= + multiple_column_assignment + | set_target equals_operator update_source + +set_target ::= update_target | mutated_set_clause + +multiple_column_assignment ::= set_target_list equals_operator +assigned_row + +set_target_list ::= left_paren set_target ( comma set_target )* +right_paren + +assigned_row ::= contextually_typed_row_value_expression + +update_target ::= + object_column + | object_column left_bracket_or_trigraph simple_value_specification +right_bracket_or_trigraph + +object_column ::= column_name + +mutated_set_clause ::= mutated_target period method_name + +mutated_target ::= object_column | mutated_set_clause + +update_source ::= value_expression | +contextually_typed_value_specification + +//14.13 temporary_table_declaration (p856) +//Declare a declared local temporary table. + +temporary_table_declaration ::= + DECLARE LOCAL TEMPORARY TABLE table_name table_element_list + ( ON COMMIT table_commit_action ROWS )? + +//14.14 free_locator_statement (p858) +//Remove the association between a locator variable and the value that +is represented by that locator. + +free_locator_statement ::= FREE LOCATOR locator_reference ( comma +locator_reference )* + +locator_reference ::= host_parameter_name | embedded_variable_name + +//14.15 hold_locator_statement (p859) +//Mark a locator variable as being holdable. + +hold_locator_statement ::= HOLD LOCATOR locator_reference ( comma +locator_reference )* + +//14.16 Effect of deleting rows from base tables (p860) +//14.17 Effect of deleting some rows from a derived table (p862) +//14.18 Effect of deleting some rows from a viewed table (p864) +//14.19 Effect of inserting tables into base tables (p865) +//14.20 Effect of inserting a table into a derived table (p867) +//14.21 Effect of inserting a table into a viewed table (p869) +//14.22 Effect of replacing rows in base tables (p871) +//14.23 Effect of replacing some rows in a derived table (p874) +//14.24 Effect of replacing some rows in a viewed table (p877) +//14.25 Execution of BEFORE triggers (p879) +//14.26 Execution of AFTER triggers (p880) +//14.27 Execution of triggers (p881) +//15 Control statements +//15.1 call_statement (p883) +//Invoke an SQL-invoked routine. + +call_statement ::= CALL routine_invocation + +//15.2 return_statement (p884) +//Return a value from an SQL function. + +return_statement ::= RETURN return_value + +return_value ::= value_expression | NULL + +//16 Transaction management +//16.1 start_transaction_statement (p885) +//Start an SQL-transaction and set its characteristics. + +start_transaction_statement ::= START TRANSACTION ( +transaction_mode ( comma transaction_mode )* )? + +transaction_mode ::= isolation_level | transaction_access_mode | +diagnostics_size + +transaction_access_mode ::= READ ONLY | READ WRITE + +isolation_level ::= ISOLATION LEVEL level_of_isolation + +level_of_isolation ::= READ UNCOMMITTED | READ COMMITTED | +REPEATABLE READ | SERIALIZABLE + +diagnostics_size ::= DIAGNOSTICS SIZE number_of_conditions + +number_of_conditions ::= simple_value_specification + +//16.2 set_transaction_statement (p888) +//Set the characteristics of the next SQL-transaction for the SQL-agent. +NOTE 402 - This statement has no effect on any SQL-transactions +subsequent to the next SQL-transaction. + +set_transaction_statement ::= SET LOCAL? +transaction_characteristics + +transaction_characteristics ::= TRANSACTION transaction_mode ( +comma transaction_mode )* + +//16.3 set_constraints_mode_statement (p890) +//If an SQL-transaction is currently active, then set the constraint +mode for that SQL-transaction in the current SQL-session. If no +SQL-transaction is currently active, then set the constraint mode for +the next SQL-transaction in the current SQL-session for the SQL-agent. +NOTE 404: This statement has no effect on any SQL-transactions +subsequent to this SQL-transaction. + +set_constraints_mode_statement ::= SET CONSTRAINTS +constraint_name_list ( DEFERRED | IMMEDIATE ) + +constraint_name_list ::= ALL | constraint_name ( comma +constraint_name )* + +//16.4 savepoint_statement (p892) +//Establish a savepoint. + +savepoint_statement ::= SAVEPOINT savepoint_specifier + +savepoint_specifier ::= savepoint_name + +//16.5 release_savepoint_statement (p893) +//Destroy a savepoint. + +release_savepoint_statement ::= RELEASE SAVEPOINT +savepoint_specifier + +//16.6 commit_statement (p894) +//Terminate the current SQL-transaction with commit. + +commit_statement ::= COMMIT WORK? ( AND NO? CHAIN )? + +//16.7 rollback_statement (p896) +//Terminate the current SQL-transaction with rollback, or rollback all +actions affecting SQL-data and/or schemas since the establishment of a +savepoint. + +rollback_statement ::= ROLLBACK WORK? ( AND NO? CHAIN )? +savepoint_clause? + +savepoint_clause ::= TO SAVEPOINT savepoint_specifier + +//17 Connection management +//17.1 connect_statement (p899) +//Establish an SQL-session. + +connect_statement ::= CONNECT TO connection_target + +connection_target ::= + SQL_server_name ( AS connection_name )? ( USER +connection_user_name )? + | DEFAULT + +//17.2 set_connection_statement (p902) +//Select an SQL-connection from the available SQL-connections. + +set_connection_statement ::= SET CONNECTION connection_object + +connection_object ::= DEFAULT | connection_name + +//17.3 disconnect_statement (p904) +//Terminate an SQL-connection. + +disconnect_statement ::= DISCONNECT disconnect_object + +disconnect_object ::= connection_object | ALL | CURRENT + +//18 Session management +//18.1 set_session_characteristics_statement (p907) +//Set one or more characteristics for the current SQL-session. + +set_session_characteristics_statement ::= SET SESSION +CHARACTERISTICS AS session_characteristic_list + +session_characteristic_list ::= session_characteristic ( comma +session_characteristic )* + +session_characteristic ::= transaction_characteristics + +//18.2 set_session_user_identifier_statement (p908) +//Set the SQL-session user identifier and the current user identifier of +the current SQL-session context. + +set_session_user_identifier_statement ::= SET SESSION AUTHORIZATION +value_specification + +//18.3 set_role_statement (p909) +//Set the current role name for the current SQL-session context. + +set_role_statement ::= SET ROLE role_specification + +role_specification ::= value_specification | NONE + +//18.4 set_local_time_zone_statement (p911) +//Set the default local time zone displacement for the current +SQL-session. + +set_local_time_zone_statement ::= SET TIME ZONE set_time_zone_value + +set_time_zone_value ::= interval_value_expression | LOCAL + +//18.5 set_catalog_statement (p912) +//Set the default catalog name for unqualified schema_names in +preparable_statements that are prepared in the current SQL-session by an +execute_immediate_statement or a prepare_statement and in +direct_SQL_statements that are invoked directly. + +set_catalog_statement ::= SET catalog_name_characteristic + +catalog_name_characteristic ::= CATALOG value_specification + +//18.6 set_schema_statement (p913) +//Set the default schema name for unqualified schema_qualified_names in +preparable_statements that are prepared in the current SQL-session by an +execute_immediate_statement or a prepare_statement and in +direct_SQL_statements that are invoked directly. + +set_schema_statement ::= SET schema_name_characteristic + +schema_name_characteristic ::= SCHEMA value_specification + +//18.7 set_names_statement (p915) +//Set the default character set name for character_string_literals in +preparable_statements that are prepared in the current SQL-session by an +execute_immediate_statement or a prepare_statement and in +direct_SQL_statements that are invoked directly. + +set_names_statement ::= SET character_set_name_characteristic + +character_set_name_characteristic ::= NAMES value_specification + +//18.8 set_path_statement (p916) +//Set the SQL-path used to determine the subject routine of +routine_invocations with unqualified routine_names in +preparable_statements that are prepared in the current SQL-session by an +execute_immediate_statement or a prepare_statement and in +direct_SQL_statements, respectively, that are invoked directly. The +SQL-path remains the current SQL-path of the SQLsession until another +SQL-path is successfully set. + +set_path_statement ::= SET SQL_path_characteristic + +SQL_path_characteristic ::= PATH value_specification + +//18.9 set_transform_group_statement (p917) +//Set the group name that identifies the group of transform functions +for mapping values of userdefined types to predefined data types. + +set_transform_group_statement ::= SET +transform_group_characteristic + +transform_group_characteristic ::= + DEFAULT TRANSFORM GROUP value_specification + | TRANSFORM GROUP FOR TYPE path_resolved_user_defined_type_name +value_specification + +//18.10 set_session_collation_statement (p918) +//Set the SQL-session collation of the SQL-session for one or more +character sets. An SQL-session collation remains effective until another +SQL-session collation for the same character set is successfully set. + +set_session_collation_statement ::= + SET COLLATION collation_specification ( FOR +character_set_specification_list )? + | SET NO COLLATION ( FOR character_set_specification_list )? +collation_specification ::= value_specification + +//19 Dynamic SQL +//19.1 Description of SQL descriptor areas (p921) +//19.2 allocate_descriptor_statement (p931) +//Allocate an SQL descriptor area. + +allocate_descriptor_statement ::= ALLOCATE SQL? DESCRIPTOR +descriptor_name ( WITH MAX occurrences )? + +occurrences ::= simple_value_specification + +//19.3 deallocate_descriptor_statement (p933) +//Deallocate an SQL descriptor area. + +deallocate_descriptor_statement ::= DEALLOCATE SQL? DESCRIPTOR +descriptor_name + +//19.4 get_descriptor_statement (p934) +//Get information from an SQL descriptor area. + +get_descriptor_statement ::= GET SQL? DESCRIPTOR descriptor_name +get_descriptor_information + +get_descriptor_information ::= + get_header_information ( comma get_header_information )* + | VALUE item_number get_item_information ( comma +get_item_information )* + +get_header_information ::= simple_target_specification_1 +equals_operator header_item_name + +header_item_name ::= COUNT | KEY_TYPE | DYNAMIC_FUNCTION | +DYNAMIC_FUNCTION_CODE | TOP_LEVEL_COUNT + +get_item_information ::= simple_target_specification_2 +equals_operator descriptor_item_name + +//The rule for item_number was repeated verbatim in section 19.5. That +rule is now omitted. + +item_number ::= simple_value_specification + +simple_target_specification_1 ::= simple_target_specification + +simple_target_specification_2 ::= simple_target_specification + +descriptor_item_name ::= + CARDINALITY + | CHARACTER_SET_CATALOG + | CHARACTER_SET_NAME + | CHARACTER_SET_SCHEMA + | COLLATION_CATALOG + | COLLATION_NAME + | COLLATION_SCHEMA + | DATA + | DATETIME_INTERVAL_CODE + | DATETIME_INTERVAL_PRECISION + | DEGREE + | INDICATOR + | KEY_MEMBER + | LENGTH + | LEVEL + | NAME + | NULLABLE + | OCTET_LENGTH + | PARAMETER_MODE + | PARAMETER_ORDINAL_POSITION + | PARAMETER_SPECIFIC_CATALOG + | PARAMETER_SPECIFIC_NAME + | PARAMETER_SPECIFIC_SCHEMA + | PRECISION + | RETURNED_CARDINALITY + | RETURNED_LENGTH + | RETURNED_OCTET_LENGTH + | SCALE + | SCOPE_CATALOG + | SCOPE_NAME + | SCOPE_SCHEMA + | TYPE + | UNNAMED + | USER_DEFINED_TYPE_CATALOG + | USER_DEFINED_TYPE_NAME + | USER_DEFINED_TYPE_SCHEMA + | USER_DEFINED_TYPE_CODE + +//19.5 set_descriptor_statement (p937) +//Set information in an SQL descriptor area. + +set_descriptor_statement ::= SET SQL? DESCRIPTOR descriptor_name +set_descriptor_information + +set_descriptor_information ::= + set_header_information ( comma set_header_information )* + | VALUE item_number set_item_information ( comma +set_item_information )* + +set_header_information ::= header_item_name equals_operator +simple_value_specification_1 + +set_item_information ::= descriptor_item_name equals_operator +simple_value_specification_2 + +simple_value_specification_1 ::= simple_value_specification + +simple_value_specification_2 ::= simple_value_specification +//19.6 prepare_statement (p941) +//Prepare a statement for execution. + +prepare_statement ::= + PREPARE SQL_statement_name attributes_specification? FROM +SQL_statement_variable + +attributes_specification ::= ATTRIBUTES attributes_variable + +attributes_variable ::= simple_value_specification + +SQL_statement_variable ::= simple_value_specification + +preparable_statement ::= + preparable_SQL_data_statement + | preparable_SQL_schema_statement + | preparable_SQL_transaction_statement + | preparable_SQL_control_statement + | preparable_SQL_session_statement + | preparable_implementation_defined_statement + +preparable_SQL_data_statement ::= + delete_statement__searched + | dynamic_single_row_select_statement + | insert_statement + | dynamic_select_statement + | update_statement__searched + | merge_statement + | preparable_dynamic_delete_statement__positioned + | preparable_dynamic_update_statement__positioned + +preparable_SQL_schema_statement ::= SQL_schema_statement + +preparable_SQL_transaction_statement ::= SQL_transaction_statement + +preparable_SQL_control_statement ::= SQL_control_statement + +preparable_SQL_session_statement ::= SQL_session_statement + +dynamic_select_statement ::= cursor_specification + +preparable_implementation_defined_statement ::= //!! See the Syntax +Rules. + +//19.7 cursor_attributes (p953) +//Specify a list of cursor attributes. + +cursor_attributes ::= cursor_attribute ... + +cursor_attribute ::= + cursor_sensitivity + | cursor_scrollability + | cursor_holdability + | cursor_returnability + +//19.8 deallocate_prepared_statement (p954) +//Deallocate SQL-statements that have been prepared with a +prepare_statement. + +deallocate_prepared_statement ::= DEALLOCATE PREPARE +SQL_statement_name + +//19.9 describe_statement (p955) +//Obtain information about the select_list columns or +dynamic_parameter_specifications contained in a prepared statement or +about the columns of the result set associated with a cursor. + +describe_statement ::= describe_input_statement | +describe_output_statement + +describe_input_statement ::= DESCRIBE INPUT SQL_statement_name +using_descriptor nesting_option? + +describe_output_statement ::= DESCRIBE OUTPUT? described_object +using_descriptor nesting_option? + +nesting_option ::= WITH NESTING | WITHOUT NESTING + +using_descriptor ::= USING SQL? DESCRIPTOR descriptor_name + +described_object ::= + SQL_statement_name + | CURSOR extended_cursor_name STRUCTURE + +//19.10 input_using_clause (p961) +//Supply input values for an SQL_dynamic_statement. + +input_using_clause ::= using_arguments | using_input_descriptor + +using_arguments ::= USING using_argument ( comma using_argument )* + +using_argument ::= general_value_specification + +using_input_descriptor ::= using_descriptor + +//19.11 output_using_clause (p965) +//Supply output variables for an SQL_dynamic_statement. + +output_using_clause ::= into_arguments | into_descriptor + +into_arguments ::= INTO into_argument ( comma into_argument )* + +into_argument ::= target_specification + +into_descriptor ::= INTO SQL? DESCRIPTOR descriptor_name + +//19.12 execute_statement (p970) +//Associate input SQL parameters and output targets with a prepared +statement and execute the statement. + +execute_statement ::= EXECUTE SQL_statement_name +result_using_clause? parameter_using_clause? + +result_using_clause ::= output_using_clause + +parameter_using_clause ::= input_using_clause + +//19.13 execute_immediate_statement (p972) +//Dynamically prepare and execute a preparable statement. + +execute_immediate_statement ::= EXECUTE IMMEDIATE +SQL_statement_variable + +//19.14 dynamic_declare_cursor (p973) +//Declare a cursor to be associated with a statement_name, which may in +turn be associated with a cursor_specification. + +dynamic_declare_cursor ::= + DECLARE cursor_name cursor_sensitivity? cursor_scrollability? +CURSOR + cursor_holdability? cursor_returnability? FOR statement_name + +//19.15 allocate_cursor_statement (p974) +//Define a cursor based on a prepared statement for a +cursor_specification or assign a cursor to the ordered set of result +sets returned from an SQL-invoked procedure. + +allocate_cursor_statement ::= ALLOCATE extended_cursor_name +cursor_intent + +cursor_intent ::= statement_cursor | result_set_cursor + +statement_cursor ::= + cursor_sensitivity? cursor_scrollability? CURSOR + cursor_holdability ? cursor_returnability? FOR +extended_statement_name + +result_set_cursor ::= FOR PROCEDURE specific_routine_designator + +//19.16 dynamic_open_statement (p976) +//Associate input dynamic parameters with a cursor_specification and +open the cursor. + +dynamic_open_statement ::= OPEN dynamic_cursor_name +input_using_clause? + +//19.17 dynamic_fetch_statement (p977) +//Fetch a row for a cursor declared with a dynamic_declare_cursor. + +dynamic_fetch_statement ::= FETCH ( fetch_orientation? FROM )? +dynamic_cursor_name output_using_clause + +//19.18 dynamic_single_row_select_statement (p978) +//Retrieve values from a dynamically-specified row of a table. + +dynamic_single_row_select_statement ::= query_specification + +//19.19 dynamic_close_statement (p979) +//Close a cursor. + +dynamic_close_statement ::= CLOSE dynamic_cursor_name + +//19.20 dynamic_delete_statement__positioned (p980) +//Delete a row of a table. + +dynamic_delete_statement__positioned ::= DELETE FROM target_table +WHERE CURRENT OF dynamic_cursor_name + +//19.21 dynamic_update_statement__positioned (p982) +//Update a row of a table. + +dynamic_update_statement__positioned ::= + UPDATE target_table SET set_clause_list WHERE CURRENT OF +dynamic_cursor_name + +//19.22 preparable_dynamic_delete_statement__positioned (p984) +//Delete a row of a table through a dynamic cursor. + +preparable_dynamic_delete_statement__positioned ::= + DELETE ( FROM target_table )? WHERE CURRENT OF scope_option? +cursor_name + +//19.23 preparable_dynamic_update_statement__positioned (p986) +//Update a row of a table through a dynamic cursor. + +preparable_dynamic_update_statement__positioned ::= + UPDATE target_table? SET set_clause_list WHERE CURRENT OF +scope_option? cursor_name + +//20 Embedded SQL +//20.1 embedded_SQL_host_program (p989) +//Specify an embedded_SQL_host_program. + +embedded_SQL_host_program ::= + embedded_SQL_Ada_program + | embedded_SQL_C_program + | embedded_SQL_COBOL_program + | embedded_SQL_Fortran_program + | embedded_SQL_MUMPS_program + | embedded_SQL_Pascal_program + | embedded_SQL_PL_I_program + +embedded_SQL_statement ::= SQL_prefix statement_or_declaration +SQL_terminator? + +statement_or_declaration ::= + declare_cursor + | dynamic_declare_cursor + | temporary_table_declaration + | embedded_authorization_declaration + | embedded_path_specification + | embedded_transform_group_specification + | embedded_collation_specification + | embedded_exception_declaration + | handler_declaration + | SQL_procedure_statement + +SQL_prefix ::= EXEC SQL | ampersand SQL left_paren + +SQL_terminator ::= END-EXEC | semicolon | right_paren + +embedded_authorization_declaration ::= DECLARE +embedded_authorization_clause + +embedded_authorization_clause ::= + SCHEMA schema_name + | AUTHORIZATION embedded_authorization_identifier ( FOR STATIC ( +ONLY | AND DYNAMIC ) )? + | SCHEMA schema_name AUTHORIZATION +embedded_authorization_identifier ( FOR STATIC ( ONLY | AND DYNAMIC ) )? + +embedded_authorization_identifier ::= +module_authorization_identifier + +embedded_path_specification ::= path_specification + +embedded_transform_group_specification ::= +transform_group_specification + +embedded_collation_specification ::= module_collation + +embedded_SQL_declare_section ::= + embedded_SQL_begin_declare ( embedded_character_set_declaration +)? host_variable_definition? embedded_SQL_end_declare + | embedded_SQL_MUMPS_declare + +embedded_character_set_declaration ::= SQL NAMES ARE +character_set_specification + +embedded_SQL_begin_declare ::= SQL_prefix BEGIN DECLARE SECTION +SQL_terminator? + +embedded_SQL_end_declare ::= SQL_prefix END DECLARE SECTION +SQL_terminator? + +embedded_SQL_MUMPS_declare ::= + SQL_prefix BEGIN DECLARE SECTION +embedded_character_set_declaration? + host_variable_definition? END DECLARE SECTION SQL_terminator + +host_variable_definition ::= + Ada_variable_definition + | C_variable_definition + | COBOL_variable_definition + | Fortran_variable_definition + | MUMPS_variable_definition + | Pascal_variable_definition + | PL_I_variable_definition + +embedded_variable_name ::= colon host_identifier + +host_identifier ::= + Ada_host_identifier + | C_host_identifier + | COBOL_host_identifier + | Fortran_host_identifier + | MUMPS_host_identifier + | Pascal_host_identifier + | PL_I_host_identifier + +//20.2 embedded_exception_declaration (p1001) +//Specify the action to be taken when an SQL-statement causes a specific +class of condition to be raised. + +embedded_exception_declaration ::= WHENEVER condition +condition_action + +condition ::= SQL_condition + +SQL_condition ::= + major_category + | SQLSTATE ( SQLSTATE_class_value ( ',' SQLSTATE_subclass_value )? +) + | CONSTRAINT constraint_name + +major_category ::= SQLEXCEPTION | SQLWARNING | NOT FOUND + +SQLSTATE_class_value ::= SQLSTATE_char SQLSTATE_char //!! See the +Syntax Rules. + +SQLSTATE_subclass_value ::= SQLSTATE_char SQLSTATE_char +SQLSTATE_char //!! See the Syntax Rules. + +SQLSTATE_char ::= simple_Latin_upper_case_letter | digit + +condition_action ::= CONTINUE | go_to + +go_to ::= ( GOTO | GO TO ) goto_target + +goto_target ::= + host_label_identifier + | unsigned_integer + | host_PL_I_label_variable + +host_label_identifier ::= //!! See the Syntax Rules. + +host_PL_I_label_variable ::= //!! See the Syntax Rules. + +//20.3 embedded_SQL_Ada_program (p1005) +//Specify an embedded_SQL_Ada_program. + +embedded_SQL_Ada_program ::= //!! See the Syntax Rules. + +Ada_variable_definition ::= + Ada_host_identifier ( comma Ada_host_identifier )* colon +Ada_type_specification Ada_initial_value? + +Ada_initial_value ::= Ada_assignment_operator +character_representation ... + +Ada_assignment_operator ::= colon equals_operator + +Ada_host_identifier ::= //!! See the Syntax Rules. + +Ada_type_specification ::= + Ada_qualified_type_specification + | Ada_unqualified_type_specification + | Ada_derived_type_specification + +Ada_qualified_type_specification ::= + Interfaces.SQL period CHAR ( CHARACTER SET IS? +character_set_specification )? + left_paren double_period length right_paren + | Interfaces.SQL period SMALLINT + | Interfaces.SQL period INT + | Interfaces.SQL period BIGINT + | Interfaces.SQL period REAL + | Interfaces.SQL period DOUBLE_PRECISION + | Interfaces.SQL period BOOLEAN + | Interfaces.SQL period SQLSTATE_TYPE + | Interfaces.SQL period INDICATOR_TYPE + +Ada_unqualified_type_specification ::= + CHAR left_paren double_period length right_paren + | SMALLINT + | INT + | BIGINT + | REAL + | DOUBLE_PRECISION + | BOOLEAN + | SQLSTATE_TYPE + | INDICATOR_TYPE + +Ada_derived_type_specification ::= + Ada_CLOB_variable + | Ada_CLOB_locator_variable + | Ada_BLOB_variable + | Ada_BLOB_locator_variable + | Ada_user_defined_type_variable + | Ada_user_defined_type_locator_variable + | Ada_REF_variable + | Ada_array_locator_variable + | Ada_multiset_locator_variable + +Ada_CLOB_variable ::= + SQL TYPE IS CLOB left_paren large_object_length right_paren ( +CHARACTER SET IS? character_set_specification )? + +Ada_CLOB_locator_variable ::= SQL TYPE IS CLOB AS LOCATOR + +Ada_BLOB_variable ::= SQL TYPE IS BLOB left_paren +large_object_length right_paren + +Ada_BLOB_locator_variable ::= SQL TYPE IS BLOB AS LOCATOR + +Ada_user_defined_type_variable ::= SQL TYPE IS +path_resolved_user_defined_type_name AS predefined_type + +Ada_user_defined_type_locator_variable ::= SQL TYPE IS +path_resolved_user_defined_type_name AS LOCATOR + +Ada_REF_variable ::= SQL TYPE IS reference_type + +Ada_array_locator_variable ::= SQL TYPE IS array_type AS LOCATOR + +Ada_multiset_locator_variable ::= SQL TYPE IS multiset_type AS +LOCATOR + +//20.4 embedded_SQL_C_program (p1011) +//Specify an embedded_SQL_C_program. + +embedded_SQL_C_program ::= //!! See the Syntax Rules. + +C_variable_definition ::= C_storage_class? C_class_modifier? +C_variable_specification semicolon + +C_variable_specification ::= C_numeric_variable | +C_character_variable | C_derived_variable + +C_storage_class ::= auto | extern | static + +C_class_modifier ::= const | volatile + +//It is curious that the C types in SQL 2003 don't include the C +keywords int or signed. It is slightly less surprising that the grammar +doesn't include C99 keywords such as restrict. + +C_numeric_variable ::= + ( long long | long | short | float | double ) C_host_identifier + C_initial_value? + ( comma C_host_identifier C_initial_value? )* + +C_character_variable ::= + C_character_type ( CHARACTER SET IS? +character_set_specification )? + C_host_identifier C_array_specification C_initial_value? + ( comma C_host_identifier C_array_specification +C_initial_value? )* + +C_character_type ::= char | unsigned char | unsigned short + +C_array_specification ::= left_bracket length right_bracket + +C_host_identifier ::= //!! See the Syntax Rules. + +C_derived_variable ::= + C_VARCHAR_variable + | C_NCHAR_variable + | C_NCHAR_VARYING_variable + | C_CLOB_variable + | C_NCLOB_variable + | C_BLOB_variable + | C_user_defined_type_variable + | C_CLOB_locator_variable + | C_BLOB_locator_variable + | C_array_locator_variable + | C_multiset_locator_variable + | C_user_defined_type_locator_variable + | C_REF_variable + +C_VARCHAR_variable ::= + VARCHAR ( CHARACTER SET IS? character_set_specification )? + C_host_identifier C_array_specification C_initial_value? + ( comma C_host_identifier C_array_specification +C_initial_value? )* + +C_NCHAR_variable ::= + NCHAR ( CHARACTER SET IS? character_set_specification ) + C_host_identifier C_array_specification C_initial_value? + ( comma C_host_identifier C_array_specification +C_initial_value? )* + +C_NCHAR_VARYING_variable ::= + NCHAR VARYING ( CHARACTER SET IS? character_set_specification +)* + C_host_identifier C_array_specification C_initial_value? + ( comma C_host_identifier C_array_specification +C_initial_value? )* + +C_CLOB_variable ::= + SQL TYPE IS CLOB left_paren large_object_length right_paren + ( CHARACTER SET IS? character_set_specification )? + C_host_identifier C_initial_value? + ( comma C_host_identifier C_initial_value? )* + +C_NCLOB_variable ::= + SQL TYPE IS NCLOB left_paren large_object_length right_paren + ( CHARACTER SET IS? character_set_specification )? + C_host_identifier C_initial_value? + ( comma C_host_identifier C_initial_value? )* + +C_user_defined_type_variable ::= + SQL TYPE IS path_resolved_user_defined_type_name AS +predefined_type + C_host_identifier C_initial_value? + ( comma C_host_identifier C_initial_value? )* + +C_BLOB_variable ::= + SQL TYPE IS BLOB left_paren large_object_length right_paren + C_host_identifier C_initial_value? + ( comma C_host_identifier C_initial_value? )* + +C_CLOB_locator_variable ::= + SQL TYPE IS CLOB AS LOCATOR + C_host_identifier C_initial_value? + ( comma C_host_identifier C_initial_value? )? + +C_BLOB_locator_variable ::= + SQL TYPE IS BLOB AS LOCATOR + C_host_identifier C_initial_value? + ( comma C_host_identifier C_initial_value? )? + +C_array_locator_variable ::= + SQL TYPE IS array_type AS LOCATOR + C_host_identifier C_initial_value? + ( comma C_host_identifier C_initial_value? )? + +C_multiset_locator_variable ::= + SQL TYPE IS multiset_type AS LOCATOR + C_host_identifier C_initial_value? + ( comma C_host_identifier C_initial_value? )? + +C_user_defined_type_locator_variable ::= + SQL TYPE IS + path_resolved_user_defined_type_name AS LOCATOR + C_host_identifier C_initial_value? + ( comma C_host_identifier C_initial_value? )* + +C_REF_variable ::= SQL TYPE IS reference_type + +C_initial_value ::= equals_operator character_representation ... + +//20.5 embedded_SQL_COBOL_program (p1019) +//Specify an embedded_SQL_COBOL_program. + +embedded_SQL_COBOL_program ::= //!! See the Syntax Rules. + +COBOL_variable_definition ::= + /*( 01 | 77 )*/ COBOL_host_identifier COBOL_type_specification + character_representation? period + +COBOL_host_identifier ::= //!! See the Syntax Rules. + +COBOL_type_specification ::= + COBOL_character_type + | COBOL_national_character_type + | COBOL_numeric_type + | COBOL_integer_type + | COBOL_derived_type_specification + +COBOL_derived_type_specification ::= + COBOL_CLOB_variable + | COBOL_NCLOB_variable + | COBOL_BLOB_variable + | COBOL_user_defined_type_variable + | COBOL_CLOB_locator_variable + | COBOL_BLOB_locator_variable + | COBOL_array_locator_variable + | COBOL_multiset_locator_variable + | COBOL_user_defined_type_locator_variable + | COBOL_REF_variable + +COBOL_character_type ::= + ( CHARACTER SET IS? character_set_specification )? + ( PIC | PICTURE ) IS? ( X ( left_paren length right_paren )? +)* + +COBOL_national_character_type ::= + ( CHARACTER SET IS? character_set_specification )? + ( PIC | PICTURE ) IS? ( N (left_paren length right_paren)? )* + +COBOL_CLOB_variable ::= + ( USAGE IS? )? + SQL TYPE IS CLOB left_paren large_object_length right_paren + ( CHARACTER SET IS? character_set_specification )? + +COBOL_NCLOB_variable ::= + ( USAGE IS? )? + SQL TYPE IS NCLOB left_paren large_object_length right_paren + ( CHARACTER SET IS? character_set_specification )? + +COBOL_BLOB_variable ::= + ( USAGE IS? )? + SQL TYPE IS BLOB left_paren large_object_length right_paren + +COBOL_user_defined_type_variable ::= + ( USAGE IS? )? SQL TYPE IS path_resolved_user_defined_type_name +AS predefined_type + +COBOL_CLOB_locator_variable ::= + ( USAGE IS? )? SQL TYPE IS CLOB AS LOCATOR + +COBOL_BLOB_locator_variable ::= + ( USAGE IS? )? SQL TYPE IS BLOB AS LOCATOR + +COBOL_array_locator_variable ::= + ( USAGE IS? )? SQL TYPE IS array_type AS LOCATOR + +COBOL_multiset_locator_variable ::= + ( USAGE IS? )? SQL TYPE IS multiset_type AS LOCATOR + +COBOL_user_defined_type_locator_variable ::= + ( USAGE IS? )? SQL TYPE IS path_resolved_user_defined_type_name AS +LOCATOR + +COBOL_REF_variable ::= ( USAGE IS? )? SQL TYPE IS reference_type + +COBOL_numeric_type ::= + ( PIC | PICTURE ) IS? S COBOL_nines_specification ( USAGE IS? +)? DISPLAY SIGN LEADING SEPARATE + +COBOL_nines_specification ::= + COBOL_nines ( V COBOL_nines? )? + | V COBOL_nines + +COBOL_integer_type ::= COBOL_binary_integer + +COBOL_binary_integer ::= ( PIC | PICTURE ) IS? S COBOL_nines ( +USAGE IS? )? BINARY + +COBOL_nines ::= ( /*9*/ ( left_paren length right_paren )? )* + +//20.6 embedded_SQL_Fortran_program (p1025) +//Specify an embedded_SQL_Fortran_program. + +embedded_SQL_Fortran_program ::= //!! See the Syntax Rules. + +Fortran_variable_definition ::= + Fortran_type_specification Fortran_host_identifier ( comma +Fortran_host_identifier )* + +Fortran_host_identifier ::= //!! See the Syntax Rules. + +Fortran_type_specification ::= + CHARACTER asterisk length? ( CHARACTER SET IS? +character_set_specification )? + | CHARACTER KIND '=' n asterisk length? ( CHARACTER SET IS? +character_set_specification )? + | INTEGER + | REAL + | DOUBLE PRECISION + | LOGICAL + | Fortran_derived_type_specification + +Fortran_derived_type_specification ::= + Fortran_CLOB_variable + | Fortran_BLOB_variable + | Fortran_user_defined_type_variable + | Fortran_CLOB_locator_variable + | Fortran_BLOB_locator_variable + | Fortran_user_defined_type_locator_variable + | Fortran_array_locator_variable + | Fortran_multiset_locator_variable + | Fortran_REF_variable + +Fortran_CLOB_variable ::= + SQL TYPE IS CLOB left_paren large_object_length right_paren + ( CHARACTER SET IS? character_set_specification )? + +Fortran_BLOB_variable ::= + SQL TYPE IS BLOB left_paren large_object_length right_paren + +Fortran_user_defined_type_variable ::= + SQL TYPE IS path_resolved_user_defined_type_name AS +predefined_type + +Fortran_CLOB_locator_variable ::= SQL TYPE IS CLOB AS LOCATOR + +Fortran_BLOB_locator_variable ::= SQL TYPE IS BLOB AS LOCATOR + +Fortran_user_defined_type_locator_variable ::= SQL TYPE IS +path_resolved_user_defined_type_name AS LOCATOR + +Fortran_array_locator_variable ::= SQL TYPE IS array_type AS +LOCATOR + +Fortran_multiset_locator_variable ::= SQL TYPE IS multiset_type AS +LOCATOR + +Fortran_REF_variable ::= SQL TYPE IS reference_type + +//20.7 embedded_SQL_MUMPS_program (p1030) +//Specify an embedded_SQL_MUMPS_program. + +embedded_SQL_MUMPS_program ::= //!! See the Syntax Rules. + +MUMPS_variable_definition ::= + MUMPS_numeric_variable semicolon + | MUMPS_character_variable semicolon + | MUMPS_derived_type_specification semicolon + +MUMPS_character_variable ::= + VARCHAR MUMPS_host_identifier MUMPS_length_specification + ( comma MUMPS_host_identifier MUMPS_length_specification )* + +MUMPS_host_identifier ::= //!! See the Syntax Rules. + +MUMPS_length_specification ::= left_paren length right_paren + +MUMPS_numeric_variable ::= MUMPS_type_specification +MUMPS_host_identifier ( comma MUMPS_host_identifier )* + +MUMPS_type_specification ::= + INT + | DEC ( left_paren precision ( comma scale )? right_paren )? + | REAL + +MUMPS_derived_type_specification ::= + MUMPS_CLOB_variable + | MUMPS_BLOB_variable + | MUMPS_user_defined_type_variable + | MUMPS_CLOB_locator_variable + | MUMPS_BLOB_locator_variable + | MUMPS_user_defined_type_locator_variable + | MUMPS_array_locator_variable + | MUMPS_multiset_locator_variable + | MUMPS_REF_variable + +MUMPS_CLOB_variable ::= + SQL TYPE IS CLOB left_paren large_object_length right_paren + ( CHARACTER SET IS? character_set_specification )? + +MUMPS_BLOB_variable ::= SQL TYPE IS BLOB left_paren +large_object_length right_paren + +MUMPS_user_defined_type_variable ::= SQL TYPE IS +path_resolved_user_defined_type_name AS predefined_type + +MUMPS_CLOB_locator_variable ::= SQL TYPE IS CLOB AS LOCATOR + +MUMPS_BLOB_locator_variable ::= SQL TYPE IS BLOB AS LOCATOR + +MUMPS_user_defined_type_locator_variable ::= SQL TYPE IS +path_resolved_user_defined_type_name AS LOCATOR + +MUMPS_array_locator_variable ::= SQL TYPE IS array_type AS LOCATOR + +MUMPS_multiset_locator_variable ::= SQL TYPE IS multiset_type AS +LOCATOR + +MUMPS_REF_variable ::= SQL TYPE IS reference_type + +//20.8 embedded_SQL_Pascal_program (p1035) +//Specify an embedded_SQL_Pascal_program. + +embedded_SQL_Pascal_program ::= //!! See the Syntax Rules. + +Pascal_variable_definition ::= + Pascal_host_identifier ( comma Pascal_host_identifier )* colon +Pascal_type_specification semicolon + +Pascal_host_identifier ::= //!! See the Syntax Rules. + +Pascal_type_specification ::= + PACKED ARRAY left_bracket /*1*/ double_period length +right_bracket OF CHAR + ( CHARACTER SET IS? character_set_specification )? + | INTEGER + | REAL + | CHAR ( CHARACTER SET IS? character_set_specification )? + | BOOLEAN + | Pascal_derived_type_specification + +Pascal_derived_type_specification ::= + Pascal_CLOB_variable + | Pascal_BLOB_variable + | Pascal_user_defined_type_variable + | Pascal_CLOB_locator_variable + | Pascal_BLOB_locator_variable + | Pascal_user_defined_type_locator_variable + | Pascal_array_locator_variable + | Pascal_multiset_locator_variable + | Pascal_REF_variable + +Pascal_CLOB_variable ::= + SQL TYPE IS CLOB left_paren large_object_length right_paren + ( CHARACTER SET IS? character_set_specification )? + +Pascal_BLOB_variable ::= SQL TYPE IS BLOB left_paren +large_object_length right_paren + +Pascal_CLOB_locator_variable ::= SQL TYPE IS CLOB AS LOCATOR + +Pascal_user_defined_type_variable ::= SQL TYPE IS +path_resolved_user_defined_type_name AS predefined_type + +Pascal_BLOB_locator_variable ::= SQL TYPE IS BLOB AS LOCATOR + +Pascal_user_defined_type_locator_variable ::= SQL TYPE IS +path_resolved_user_defined_type_name AS LOCATOR + +Pascal_array_locator_variable ::= SQL TYPE IS array_type AS LOCATOR + +Pascal_multiset_locator_variable ::= SQL TYPE IS multiset_type AS +LOCATOR + +Pascal_REF_variable ::= SQL TYPE IS reference_type + +//20.9 embedded_SQL_PL_I_program (p1040) +//Specify an embedded_SQL_PL_I_program. + +embedded_SQL_PL_I_program ::= //!! See the Syntax Rules. + +PL_I_variable_definition ::= + ( DCL | DECLARE ) ( PL_I_host_identifier + | left_paren PL_I_host_identifier ( comma PL_I_host_identifier )* +right_paren ) + PL_I_type_specification character_representation? semicolon + +PL_I_host_identifier ::= //!! See the Syntax Rules. + +PL_I_type_specification ::= + ( CHAR | CHARACTER ) VARYING? left_paren length right_paren ( +CHARACTER SET IS? character_set_specification )? + | PL_I_type_fixed_decimal left_paren precision comma scale? +right_paren + | PL_I_type_fixed_binary ( left_paren precision right_paren )? + | PL_I_type_float_binary left_paren precision right_paren + | PL_I_derived_type_specification + +PL_I_derived_type_specification ::= + PL_I_CLOB_variable + | PL_I_BLOB_variable + | PL_I_user_defined_type_variable + | PL_I_CLOB_locator_variable + | PL_I_BLOB_locator_variable + | PL_I_user_defined_type_locator_variable + | PL_I_array_locator_variable + | PL_I_multiset_locator_variable + | PL_I_REF_variable + +PL_I_CLOB_variable ::= + SQL TYPE IS CLOB left_paren large_object_length right_paren + ( CHARACTER SET IS? character_set_specification )? + +PL_I_BLOB_variable ::= SQL TYPE IS BLOB left_paren +large_object_length right_paren + +PL_I_user_defined_type_variable ::= SQL TYPE IS +path_resolved_user_defined_type_name AS predefined_type + +PL_I_CLOB_locator_variable ::= SQL TYPE IS CLOB AS LOCATOR + +PL_I_BLOB_locator_variable ::= SQL TYPE IS BLOB AS LOCATOR + +PL_I_user_defined_type_locator_variable ::= SQL TYPE IS +path_resolved_user_defined_type_name AS LOCATOR + +PL_I_array_locator_variable ::= SQL TYPE IS array_type AS LOCATOR + +PL_I_multiset_locator_variable ::= SQL TYPE IS multiset_type AS +LOCATOR + +PL_I_REF_variable ::= SQL TYPE IS reference_type + +PL_I_type_fixed_decimal ::= + ( DEC | DECIMAL ) FIXED + | FIXED ( DEC | DECIMAL ) + +PL_I_type_fixed_binary ::= + ( BIN | BINARY ) FIXED + | FIXED ( BIN | BINARY ) + +PL_I_type_float_binary ::= + ( BIN | BINARY ) FLOAT + | FLOAT ( BIN | BINARY ) + +direct_implementation_defined_statement ::= //!! See the Syntax +Rules. + +//21.2 direct_select_statement__multiple_rows (p1051) +//Specify a statement to retrieve multiple rows from a specified table. + +direct_select_statement__multiple_rows ::= cursor_specification + +//22 Diagnostics management +//22.1 get_diagnostics_statement (p1053) +//Get exception or completion condition information from a diagnostics +area. + +get_diagnostics_statement ::= GET DIAGNOSTICS +SQL_diagnostics_information + +SQL_diagnostics_information ::= statement_information | +condition_information + +statement_information ::= statement_information_item ( comma +statement_information_item )* + +statement_information_item ::= simple_target_specification +equals_operator statement_information_item_name + +statement_information_item_name ::= + NUMBER + | MORE + | COMMAND_FUNCTION + | COMMAND_FUNCTION_CODE + | DYNAMIC_FUNCTION + | DYNAMIC_FUNCTION_CODE + | ROW_COUNT + | TRANSACTIONS_COMMITTED + | TRANSACTIONS_ROLLED_BACK + | TRANSACTION_ACTIVE + +condition_information ::= + ( EXCEPTION | CONDITION ) condition_number +condition_information_item ( comma condition_information_item )* + +condition_information_item ::= simple_target_specification +equals_operator condition_information_item_name + +condition_information_item_name ::= + CATALOG_NAME + | CLASS_ORIGIN + | COLUMN_NAME + | CONDITION_NUMBER + | CONNECTION_NAME + | CONSTRAINT_CATALOG + | CONSTRAINT_NAME + | CONSTRAINT_SCHEMA + | CURSOR_NAME + | MESSAGE_LENGTH + | MESSAGE_OCTET_LENGTH + | MESSAGE_TEXT + | PARAMETER_MODE + | PARAMETER_NAME + | PARAMETER_ORDINAL_POSITION + | RETURNED_SQLSTATE + | ROUTINE_CATALOG + | ROUTINE_NAME + | ROUTINE_SCHEMA + | SCHEMA_NAME + | SERVER_NAME + | SPECIFIC_NAME + | SUBCLASS_ORIGIN + | TABLE_NAME + | TRIGGER_CATALOG + | TRIGGER_NAME + | TRIGGER_SCHEMA + +condition_number ::= simple_value_specification + +// Tokens + +//reserved_word +ADD ::= "ADD" +ALL ::= "ALL" +ALLOCATE ::= "ALLOCATE" +ALTER ::= "ALTER" +AND ::= "AND" +ANY ::= "ANY" +ARE ::= "ARE" +ARRAY ::= "ARRAY" +AS ::= "AS" +ASENSITIVE ::= "ASENSITIVE" +ASYMMETRIC ::= "ASYMMETRIC" +AT ::= "AT" +ATOMIC ::= "ATOMIC" +AUTHORIZATION ::= "AUTHORIZATION" +BEGIN ::= "BEGIN" +BETWEEN ::= "BETWEEN" +BIGINT ::= "BIGINT" +BINARY ::= "BINARY" +BLOB ::= "BLOB" +BOOLEAN ::= "BOOLEAN" +BOTH ::= "BOTH" +BY ::= "BY" +CALL ::= "CALL" +CALLED ::= "CALLED" +CASCADED ::= "CASCADED" +CASE ::= "CASE" +CAST ::= "CAST" +CHAR ::= "CHAR" +CHARACTER ::= "CHARACTER" +CHECK ::= "CHECK" +CLOB ::= "CLOB" +CLOSE ::= "CLOSE" +COLLATE ::= "COLLATE" +COLUMN ::= "COLUMN" +COMMIT ::= "COMMIT" +CONNECT ::= "CONNECT" +CONSTRAINT ::= "CONSTRAINT" +CONTINUE ::= "CONTINUE" +CORRESPONDING ::= "CORRESPONDING" +CREATE ::= "CREATE" +CROSS ::= "CROSS" +CUBE ::= "CUBE" +CURRENT ::= "CURRENT" +CURRENT_DATE ::= "CURRENT_DATE" +CURRENT_DEFAULT_TRANSFORM_GROUP ::= "CURRENT_DEFAULT_TRANSFORM_GROUP" +CURRENT_PATH ::= "CURRENT_PATH" +CURRENT_ROLE ::= "CURRENT_ROLE" +CURRENT_TIME ::= "CURRENT_TIME" +CURRENT_TIMESTAMP ::= "CURRENT_TIMESTAMP" +CURRENT_TRANSFORM_GROUP_FOR_TYPE ::= "CURRENT_TRANSFORM_GROUP_FOR_TYPE" +CURRENT_USER ::= "CURRENT_USER" +CURSOR ::= "CURSOR" +CYCLE ::= "CYCLE" +DATE ::= "DATE" +DAY ::= "DAY" +DEALLOCATE ::= "DEALLOCATE" +DEC ::= "DEC" +DECIMAL ::= "DECIMAL" +DECLARE ::= "DECLARE" +DEFAULT ::= "DEFAULT" +DELETE ::= "DELETE" +DEREF ::= "DEREF" +DESCRIBE ::= "DESCRIBE" +DETERMINISTIC ::= "DETERMINISTIC" +DISCONNECT ::= "DISCONNECT" +DISTINCT ::= "DISTINCT" +DOUBLE ::= "DOUBLE" +DROP ::= "DROP" +DYNAMIC ::= "DYNAMIC" +EACH ::= "EACH" +ELEMENT ::= "ELEMENT" +ELSE ::= "ELSE" +END ::= "END" +END-EXEC ::= "END-EXEC" +ESCAPE ::= "ESCAPE" +EXCEPT ::= "EXCEPT" +EXEC ::= "EXEC" +EXECUTE ::= "EXECUTE" +EXISTS ::= "EXISTS" +EXTERNAL ::= "EXTERNAL" +FALSE ::= "FALSE" +FETCH ::= "FETCH" +FILTER ::= "FILTER" +FLOAT ::= "FLOAT" +FOR ::= "FOR" +FOREIGN ::= "FOREIGN" +FREE ::= "FREE" +FROM ::= "FROM" +FULL ::= "FULL" +FUNCTION ::= "FUNCTION" +GET ::= "GET" +GLOBAL ::= "GLOBAL" +GRANT ::= "GRANT" +GROUP ::= "GROUP" +GROUPING ::= "GROUPING" +HAVING ::= "HAVING" +HOLD ::= "HOLD" +HOUR ::= "HOUR" +IDENTITY ::= "IDENTITY" +IMMEDIATE ::= "IMMEDIATE" +IN ::= "IN" +INDICATOR ::= "INDICATOR" +INNER ::= "INNER" +INOUT ::= "INOUT" +INPUT ::= "INPUT" +INSENSITIVE ::= "INSENSITIVE" +INSERT ::= "INSERT" +INT ::= "INT" +INTEGER ::= "INTEGER" +INTERSECT ::= "INTERSECT" +INTERVAL ::= "INTERVAL" +INTO ::= "INTO" +IS ::= "IS" +ISOLATION ::= "ISOLATION" +JOIN ::= "JOIN" +LANGUAGE ::= "LANGUAGE" +LARGE ::= "LARGE" +LATERAL ::= "LATERAL" +LEADING ::= "LEADING" +LEFT ::= "LEFT" +LIKE ::= "LIKE" +LOCAL ::= "LOCAL" +LOCALTIME ::= "LOCALTIME" +LOCALTIMESTAMP ::= "LOCALTIMESTAMP" +MATCH ::= "MATCH" +MEMBER ::= "MEMBER" +MERGE ::= "MERGE" +METHOD ::= "METHOD" +MINUTE ::= "MINUTE" +MODIFIES ::= "MODIFIES" +MODULE ::= "MODULE" +MONTH ::= "MONTH" +MULTISET ::= "MULTISET" +NATIONAL ::= "NATIONAL" +NATURAL ::= "NATURAL" +NCHAR ::= "NCHAR" +NCLOB ::= "NCLOB" +NEW ::= "NEW" +NO ::= "NO" +NONE ::= "NONE" +NOT ::= "NOT" +NULL ::= "NULL" +NUMERIC ::= "NUMERIC" +OF ::= "OF" +OLD ::= "OLD" +ON ::= "ON" +ONLY ::= "ONLY" +OPEN ::= "OPEN" +OR ::= "OR" +ORDER ::= "ORDER" +OUT ::= "OUT" +OUTER ::= "OUTER" +OUTPUT ::= "OUTPUT" +OVER ::= "OVER" +OVERLAPS ::= "OVERLAPS" +PARAMETER ::= "PARAMETER" +PARTITION ::= "PARTITION" +PRECISION ::= "PRECISION" +PREPARE ::= "PREPARE" +PRIMARY ::= "PRIMARY" +PROCEDURE ::= "PROCEDURE" +RANGE ::= "RANGE" +READS ::= "READS" +REAL ::= "REAL" +RECURSIVE ::= "RECURSIVE" +REF ::= "REF" +REFERENCES ::= "REFERENCES" +REFERENCING ::= "REFERENCING" +REGR_AVGX ::= "REGR_AVGX" +REGR_AVGY ::= "REGR_AVGY" +REGR_COUNT ::= "REGR_COUNT" +REGR_INTERCEPT ::= "REGR_INTERCEPT" +REGR_R2 ::= "REGR_R2" +REGR_SLOPE ::= "REGR_SLOPE" +REGR_SXX ::= "REGR_SXX" +REGR_SXY ::= "REGR_SXY" +REGR_SYY ::= "REGR_SYY" +RELEASE ::= "RELEASE" +RESULT ::= "RESULT" +RETURN ::= "RETURN" +RETURNS ::= "RETURNS" +REVOKE ::= "REVOKE" +RIGHT ::= "RIGHT" +ROLLBACK ::= "ROLLBACK" +ROLLUP ::= "ROLLUP" +ROW ::= "ROW" +ROWS ::= "ROWS" +SAVEPOINT ::= "SAVEPOINT" +SCROLL ::= "SCROLL" +SEARCH ::= "SEARCH" +SECOND ::= "SECOND" +SELECT ::= "SELECT" +SENSITIVE ::= "SENSITIVE" +SESSION_USER ::= "SESSION_USER" +SET ::= "SET" +SIMILAR ::= "SIMILAR" +SMALLINT ::= "SMALLINT" +SOME ::= "SOME" +SPECIFIC ::= "SPECIFIC" +SPECIFICTYPE ::= "SPECIFICTYPE" +SQL ::= "SQL" +SQLEXCEPTION ::= "SQLEXCEPTION" +SQLSTATE ::= "SQLSTATE" +SQLWARNING ::= "SQLWARNING" +START ::= "START" +STATIC ::= "STATIC" +SUBMULTISET ::= "SUBMULTISET" +SYMMETRIC ::= "SYMMETRIC" +SYSTEM ::= "SYSTEM" +SYSTEM_USER ::= "SYSTEM_USER" +TABLE ::= "TABLE" +THEN ::= "THEN" +TIME ::= "TIME" +TIMESTAMP ::= "TIMESTAMP" +TIMEZONE_HOUR ::= "TIMEZONE_HOUR" +TIMEZONE_MINUTE ::= "TIMEZONE_MINUTE" +TO ::= "TO" +TRAILING ::= "TRAILING" +TRANSLATION ::= "TRANSLATION" +TREAT ::= "TREAT" +TRIGGER ::= "TRIGGER" +TRUE ::= "TRUE" +UESCAPE ::= "UESCAPE" +UNION ::= "UNION" +UNIQUE ::= "UNIQUE" +UNKNOWN ::= "UNKNOWN" +UNNEST ::= "UNNEST" +UPDATE ::= "UPDATE" +UPPER ::= "UPPER" +USER ::= "USER" +USING ::= "USING" +VALUE ::= "VALUE" +VALUES ::= "VALUES" +VAR_POP ::= "VAR_POP" +VAR_SAMP ::= "VAR_SAMP" +VARCHAR ::= "VARCHAR" +VARYING ::= "VARYING" +WHEN ::= "WHEN" +WHENEVER ::= "WHENEVER" +WHERE ::= "WHERE" +WIDTH_BUCKET ::= "WIDTH_BUCKET" +WINDOW ::= "WINDOW" +WITH ::= "WITH" +WITHIN ::= "WITHIN" +WITHOUT ::= "WITHOUT" +YEAR ::= "YEAR" + +//non_reserved_word +A ::= "A*" +ABS ::= "ABS*" +ABSOLUTE ::= "ABSOLUTE*" +ACTION ::= "ACTION*" +ADA ::= "ADA*" +ADMIN ::= "ADMIN*" +AFTER ::= "AFTER*" +ALWAYS ::= "ALWAYS*" +ASC ::= "ASC*" +ASSERTION ::= "ASSERTION*" +ASSIGNMENT ::= "ASSIGNMENT*" +ATTRIBUTE ::= "ATTRIBUTE*" +ATTRIBUTES ::= "ATTRIBUTES*" +AVG ::= "AVG*" +BEFORE ::= "BEFORE*" +BERNOULLI ::= "BERNOULLI*" +BREADTH ::= "BREADTH*" +C ::= "C*" +CARDINALITY ::= "CARDINALITY*" +CASCADE ::= "CASCADE*" +CATALOG ::= "CATALOG*" +CATALOG_NAME ::= "CATALOG_NAME*" +CEIL ::= "CEIL*" +CEILING ::= "CEILING*" +CHAIN ::= "CHAIN*" +CHARACTERISTICS ::= "CHARACTERISTICS*" +CHARACTERS ::= "CHARACTERS*" +CHARACTER_LENGTH ::= "CHARACTER_LENGTH*" +CHARACTER_SET_CATALOG ::= "CHARACTER_SET_CATALOG*" +CHARACTER_SET_NAME ::= "CHARACTER_SET_NAME*" +CHARACTER_SET_SCHEMA ::= "CHARACTER_SET_SCHEMA*" +CHAR_LENGTH ::= "CHAR_LENGTH*" +CHECKED ::= "CHECKED*" +CLASS_ORIGIN ::= "CLASS_ORIGIN*" +COALESCE ::= "COALESCE*" +COBOL ::= "COBOL*" +CODE_UNITS ::= "CODE_UNITS*" +COLLATION ::= "COLLATION*" +COLLATION_CATALOG ::= "COLLATION_CATALOG*" +COLLATION_NAME ::= "COLLATION_NAME*" +COLLATION_SCHEMA ::= "COLLATION_SCHEMA*" +COLLECT ::= "COLLECT*" +COLUMN_NAME ::= "COLUMN_NAME*" +COMMAND_FUNCTION ::= "COMMAND_FUNCTION*" +COMMAND_FUNCTION_CODE ::= "COMMAND_FUNCTION_CODE*" +COMMITTED ::= "COMMITTED*" +CONDITION ::= "CONDITION*" +CONDITION_NUMBER ::= "CONDITION_NUMBER*" +CONNECTION_NAME ::= "CONNECTION_NAME*" +CONSTRAINTS ::= "CONSTRAINTS*" +CONSTRAINT_CATALOG ::= "CONSTRAINT_CATALOG*" +CONSTRAINT_NAME ::= "CONSTRAINT_NAME*" +CONSTRAINT_SCHEMA ::= "CONSTRAINT_SCHEMA*" +CONSTRUCTORS ::= "CONSTRUCTORS*" +CONTAINS ::= "CONTAINS*" +CONVERT ::= "CONVERT*" +CORR ::= "CORR*" +COUNT ::= "COUNT*" +COVAR_POP ::= "COVAR_POP*" +COVAR_SAMP ::= "COVAR_SAMP*" +CUME_DIST ::= "CUME_DIST*" +CURRENT_COLLATION ::= "CURRENT_COLLATION*" +CURSOR_NAME ::= "CURSOR_NAME*" +DATA ::= "DATA*" +DATETIME_INTERVAL_CODE ::= "DATETIME_INTERVAL_CODE*" +DATETIME_INTERVAL_PRECISION ::= "DATETIME_INTERVAL_PRECISION*" +DEFAULTS ::= "DEFAULTS*" +DEFERRABLE ::= "DEFERRABLE*" +DEFERRED ::= "DEFERRED*" +DEFINED ::= "DEFINED*" +DEFINER ::= "DEFINER*" +DEGREE ::= "DEGREE*" +DENSE_RANK ::= "DENSE_RANK*" +DEPTH ::= "DEPTH*" +DERIVED ::= "DERIVED*" +DESC ::= "DESC*" +DESCRIPTOR ::= "DESCRIPTOR*" +DIAGNOSTICS ::= "DIAGNOSTICS*" +DISPATCH ::= "DISPATCH*" +DOMAIN ::= "DOMAIN*" +DYNAMIC_FUNCTION ::= "DYNAMIC_FUNCTION*" +DYNAMIC_FUNCTION_CODE ::= "DYNAMIC_FUNCTION_CODE*" +EQUALS ::= "EQUALS*" +EVERY ::= "EVERY*" +EXCEPTION ::= "EXCEPTION*" +EXCLUDE ::= "EXCLUDE*" +EXCLUDING ::= "EXCLUDING*" +EXP ::= "EXP*" +EXTRACT ::= "EXTRACT*" +FINAL ::= "FINAL*" +FIRST ::= "FIRST*" +FLOOR ::= "FLOOR*" +FOLLOWING ::= "FOLLOWING*" +FORTRAN ::= "FORTRAN*" +FOUND ::= "FOUND*" +FUSION ::= "FUSION*" +G ::= "G*" +GENERAL ::= "GENERAL*" +GO ::= "GO*" +GOTO ::= "GOTO*" +GRANTED ::= "GRANTED*" +HIERARCHY ::= "HIERARCHY*" +IMPLEMENTATION ::= "IMPLEMENTATION*" +INCLUDING ::= "INCLUDING*" +INCREMENT ::= "INCREMENT*" +INITIALLY ::= "INITIALLY*" +INSTANCE ::= "INSTANCE*" +INSTANTIABLE ::= "INSTANTIABLE*" +INTERSECTION ::= "INTERSECTION*" +INVOKER ::= "INVOKER*" +ISOLATION ::= "ISOLATION*" +K ::= "K*" +KEY ::= "KEY*" +KEY_MEMBER ::= "KEY_MEMBER*" +KEY_TYPE ::= "KEY_TYPE*" +LAST ::= "LAST*" +LENGTH ::= "LENGTH*" +LEVEL ::= "LEVEL*" +LN ::= "LN*" +LOCATOR ::= "LOCATOR*" +LOWER ::= "LOWER*" +M ::= "M*" +MAP ::= "MAP*" +MATCHED ::= "MATCHED*" +MAX ::= "MAX*" +MAXVALUE ::= "MAXVALUE*" +MESSAGE_LENGTH ::= "MESSAGE_LENGTH*" +MESSAGE_OCTET_LENGTH ::= "MESSAGE_OCTET_LENGTH*" +MESSAGE_TEXT ::= "MESSAGE_TEXT*" +MIN ::= "MIN*" +MINVALUE ::= "MINVALUE*" +MOD ::= "MOD*" +MORE ::= "MORE*" +MUMPS ::= "MUMPS*" +NAME ::= "NAME*" +NAMES ::= "NAMES*" +NESTING ::= "NESTING*" +NEXT ::= "NEXT*" +NORMALIZE ::= "NORMALIZE*" +NORMALIZED ::= "NORMALIZED*" +NULLABLE ::= "NULLABLE*" +NULLIF ::= "NULLIF*" +NULLS ::= "NULLS*" +NUMBER ::= "NUMBER*" +OBJECT ::= "OBJECT*" +OCTETS ::= "OCTETS*" +OCTET_LENGTH ::= "OCTET_LENGTH*" +OPTION ::= "OPTION*" +OPTIONS ::= "OPTIONS*" +ORDERING ::= "ORDERING*" +ORDINALITY ::= "ORDINALITY*" +OTHERS ::= "OTHERS*" +OVERLAY ::= "OVERLAY*" +OVERRIDING ::= "OVERRIDING*" +PAD ::= "PAD*" +PARAMETER_MODE ::= "PARAMETER_MODE*" +PARAMETER_NAME ::= "PARAMETER_NAME*" +PARAMETER_ORDINAL_POSITION ::= "PARAMETER_ORDINAL_POSITION*" +PARAMETER_SPECIFIC_CATALOG ::= "PARAMETER_SPECIFIC_CATALOG*" +PARAMETER_SPECIFIC_NAME ::= "PARAMETER_SPECIFIC_NAME*" +PARAMETER_SPECIFIC_SCHEMA ::= "PARAMETER_SPECIFIC_SCHEMA*" +PARTIAL ::= "PARTIAL*" +PASCAL ::= "PASCAL*" +PATH ::= "PATH*" +PERCENTILE_CONT ::= "PERCENTILE_CONT*" +PERCENTILE_DISC ::= "PERCENTILE_DISC*" +PERCENT_RANK ::= "PERCENT_RANK*" +PLACING ::= "PLACING*" +PLI ::= "PLI*" +POSITION ::= "POSITION*" +POWER ::= "POWER*" +PRECEDING ::= "PRECEDING*" +PRESERVE ::= "PRESERVE*" +PRIOR ::= "PRIOR*" +PRIVILEGES ::= "PRIVILEGES*" +PUBLIC ::= "PUBLIC*" +RANK ::= "RANK*" +READ ::= "READ*" +RELATIVE ::= "RELATIVE*" +REPEATABLE ::= "REPEATABLE*" +RESTART ::= "RESTART*" +RETURNED_CARDINALITY ::= "RETURNED_CARDINALITY*" +RETURNED_LENGTH ::= "RETURNED_LENGTH*" +RETURNED_OCTET_LENGTH ::= "RETURNED_OCTET_LENGTH*" +RETURNED_SQLSTATE ::= "RETURNED_SQLSTATE*" +ROLE ::= "ROLE*" +ROUTINE ::= "ROUTINE*" +ROUTINE_CATALOG ::= "ROUTINE_CATALOG*" +ROUTINE_NAME ::= "ROUTINE_NAME*" +ROUTINE_SCHEMA ::= "ROUTINE_SCHEMA*" +ROW_COUNT ::= "ROW_COUNT*" +ROW_NUMBER ::= "ROW_NUMBER*" +SCALE ::= "SCALE*" +SCHEMA ::= "SCHEMA*" +SCHEMA_NAME ::= "SCHEMA_NAME*" +SCOPE_CATALOG ::= "SCOPE_CATALOG*" +SCOPE_NAME ::= "SCOPE_NAME*" +SCOPE_SCHEMA ::= "SCOPE_SCHEMA*" +SECTION ::= "SECTION*" +SECURITY ::= "SECURITY*" +SELF ::= "SELF*" +SEQUENCE ::= "SEQUENCE*" +SERIALIZABLE ::= "SERIALIZABLE*" +SERVER_NAME ::= "SERVER_NAME*" +SESSION ::= "SESSION*" +SETS ::= "SETS*" +SIMPLE ::= "SIMPLE*" +SIZE ::= "SIZE*" +SOURCE ::= "SOURCE*" +SPACE ::= "SPACE*" +SPECIFIC_NAME ::= "SPECIFIC_NAME*" +SQRT ::= "SQRT*" +STATE ::= "STATE*" +STATEMENT ::= "STATEMENT*" +STDDEV_POP ::= "STDDEV_POP*" +STDDEV_SAMP ::= "STDDEV_SAMP*" +STRUCTURE ::= "STRUCTURE*" +STYLE ::= "STYLE*" +SUBCLASS_ORIGIN ::= "SUBCLASS_ORIGIN*" +SUBSTRING ::= "SUBSTRING*" +SUM ::= "SUM*" +TABLESAMPLE ::= "TABLESAMPLE*" +TABLE_NAME ::= "TABLE_NAME*" +TEMPORARY ::= "TEMPORARY*" +TIES ::= "TIES*" +TOP_LEVEL_COUNT ::= "TOP_LEVEL_COUNT*" +TRANSACTION ::= "TRANSACTION*" +TRANSACTIONS_COMMITTED ::= "TRANSACTIONS_COMMITTED*" +TRANSACTIONS_ROLLED_BACK ::= "TRANSACTIONS_ROLLED_BACK*" +TRANSACTION_ACTIVE ::= "TRANSACTION_ACTIVE*" +TRANSFORM ::= "TRANSFORM*" +TRANSFORMS ::= "TRANSFORMS*" +TRANSLATE ::= "TRANSLATE*" +TRIGGER_CATALOG ::= "TRIGGER_CATALOG*" +TRIGGER_NAME ::= "TRIGGER_NAME*" +TRIGGER_SCHEMA ::= "TRIGGER_SCHEMA*" +TRIM ::= "TRIM*" +TYPE ::= "TYPE*" +UNBOUNDED ::= "UNBOUNDED*" +UNCOMMITTED ::= "UNCOMMITTED*" +UNDER ::= "UNDER*" +UNNAMED ::= "UNNAMED*" +USAGE ::= "USAGE*" +USER_DEFINED_TYPE_CATALOG ::= "USER_DEFINED_TYPE_CATALOG*" +USER_DEFINED_TYPE_CODE ::= "USER_DEFINED_TYPE_CODE*" +USER_DEFINED_TYPE_NAME ::= "USER_DEFINED_TYPE_NAME*" +USER_DEFINED_TYPE_SCHEMA ::= "USER_DEFINED_TYPE_SCHEMA*" +VIEW ::= "VIEW*" +WORK ::= "WORK*" +WRITE ::= "WRITE*" +ZONE ::= "ZONE*" From 106c398656ed9ac6839256d3681fca1b2c78bca1 Mon Sep 17 00:00:00 2001 From: Ron Savage Date: Fri, 30 Jul 2021 13:38:00 +1000 Subject: [PATCH 30/33] Add sql-2003-2.ebnf.readme --- sql-2003-2.ebnf.readme | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 sql-2003-2.ebnf.readme diff --git a/sql-2003-2.ebnf.readme b/sql-2003-2.ebnf.readme new file mode 100644 index 0000000..b894617 --- /dev/null +++ b/sql-2003-2.ebnf.readme @@ -0,0 +1,16 @@ +How to use sql-2003-2.ebnf +========================== +This file was extracted manually from sql-2003-2.bnf by Domingo Alvarez Duarte. +Many thanx Domingo! + +It is the latter file as pure ebnf, i.e. with the original markup stripped. + +It can be rendered as railroad diagrams on the website https://www.bottlecaps.de/rr/ui. +Just copy it into the Edit Grammar tab, and click View Diagram. Then wait a moment :-). + +Domingo notes: +1. Non reserved words appear with * as suffix, ex: SUBSTRING -> SUBSTRING*. + +2. You can navigate through the grammar by clicking the rectangular boxes. + +Finally, you can download the rendered railroad as either XHTML + SVG or HTML + PNG. From 3cfa9bf8cf3ccd986eaf78bfa7e861ef36f88b95 Mon Sep 17 00:00:00 2001 From: Ron Savage Date: Thu, 5 Aug 2021 18:30:01 +1000 Subject: [PATCH 31/33] Add stuff for SQL 2016 --- sql-2003-2-railway-diagrams.xhtml | 71703 ++++++++++++++++++++++ sql-2016-railway-diagrams.xhtml | 91823 ++++++++++++++++++++++++++++ sql-2016.ebnf | 10090 +++ 3 files changed, 173616 insertions(+) create mode 100644 sql-2003-2-railway-diagrams.xhtml create mode 100644 sql-2016-railway-diagrams.xhtml create mode 100644 sql-2016.ebnf diff --git a/sql-2003-2-railway-diagrams.xhtml b/sql-2003-2-railway-diagrams.xhtml new file mode 100644 index 0000000..82a3bca --- /dev/null +++ b/sql-2003-2-railway-diagrams.xhtml @@ -0,0 +1,71703 @@ + + + + + + + + + + + direct_SQL_statement: + + + + + + + + directly_executable_statement + + ; + + + + + +
             ::= directly_executable_statement ';'
    +
    + no referencesdirectly_executable_statement: + + + + + + + + direct_SQL_data_statement + + + SQL_schema_statement + + + SQL_transaction_statement + + + SQL_connection_statement + + + SQL_session_statement + + + direct_implementation_defined_statement + + + + +
             ::= direct_SQL_data_statement
    +
               | SQL_schema_statement
    +
               | SQL_transaction_statement
    +
               | SQL_connection_statement
    +
               | SQL_session_statement
    +
    +
    + referenced by: + + direct_SQL_statement + + direct_SQL_data_statement: + + + + + + + + delete_statement__searched + + + direct_select_statement__multiple_rows + + + insert_statement + + + update_statement__searched + + + merge_statement + + + temporary_table_declaration + + + + +
             ::= delete_statement__searched
    + +
               | insert_statement
    +
               | update_statement__searched
    +
               | merge_statement
    +
               | temporary_table_declaration
    +
    + referenced by: + + directly_executable_statement + + SQL_terminal_character: + + + + + + + + SQL_language_character + + + + +
             ::= SQL_language_character
    +
    + no referencesSQL_language_character: + + + + + + + + simple_Latin_letter + + + digit + + + SQL_special_character + + + + +
             ::= simple_Latin_letter
    +
               | digit
    +
               | SQL_special_character
    +
    + referenced by: + + SQL_terminal_character + + simple_Latin_letter: + + + + + + + + simple_Latin_upper_case_letter + + + simple_Latin_lower_case_letter + + + + +
             ::= simple_Latin_upper_case_letter
    +
               | simple_Latin_lower_case_letter
    +
    + referenced by: + + SQL_language_character + SQL_language_identifier_part + SQL_language_identifier_start + + simple_Latin_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 + + + W + + + X + + + Y + + + Z + + + + + +
             ::= 'A'
    +
               | 'B'
    +
               | 'C'
    +
               | 'D'
    +
               | 'E'
    +
               | 'F'
    +
               | 'G'
    +
               | 'H'
    +
               | 'I'
    +
               | 'J'
    +
               | 'K'
    +
               | 'L'
    +
               | 'M'
    +
               | 'N'
    +
               | 'O'
    +
               | 'P'
    +
               | 'Q'
    +
               | 'R'
    +
               | 'S'
    +
               | 'T'
    +
               | 'U'
    +
               | 'V'
    +
               | 'W'
    +
               | 'X'
    +
               | 'Y'
    +
               | 'Z'
    +
    + referenced by: + + SQLSTATE_char + simple_Latin_letter + + simple_Latin_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 + + + y + + + z + + + + + +
             ::= 'a'
    +
               | 'b'
    +
               | 'c'
    +
               | 'd'
    +
               | 'e'
    +
               | 'f'
    +
               | 'g'
    +
               | 'h'
    +
               | 'i'
    +
               | 'j'
    +
               | 'k'
    +
               | 'l'
    +
               | 'm'
    +
               | 'n'
    +
               | 'o'
    +
               | 'p'
    +
               | 'q'
    +
               | 'r'
    +
               | 's'
    +
               | 't'
    +
               | 'u'
    +
               | 'v'
    +
               | 'w'
    +
               | 'x'
    +
               | 'y'
    +
               | 'z'
    +
    + referenced by: + + simple_Latin_letter + + digit: + + + + + + + + 0 + + + 1 + + + 2 + + + 3 + + + 4 + + + 5 + + + 6 + + + 7 + + + 8 + + + 9 + + + + +
    digit    ::= '0'
    +
               | '1'
    +
               | '2'
    +
               | '3'
    +
               | '4'
    +
               | '5'
    +
               | '6'
    +
               | '7'
    +
               | '8'
    +
               | '9'
    +
    + referenced by: + + SQLSTATE_char + SQL_language_character + SQL_language_identifier_part + hexit + large_object_length_token + unsigned_integer + + SQL_special_character: + + + + + + + + space + + " + + + % + + + & + + + ' + + + ( + + + ) + + + * + + + + + + + , + + + - + + + . + + + / + + + : + + + ; + + + < + + + = + + + > + + + ? + + + [ + + + ] + + + ^ + + + _ + + + | + + + { + + + } + + + + + +
             ::= space
    +
               | '"'
    +
               | '%'
    +
               | '&'
    +
               | "'"
    +
               | '('
    +
               | ')'
    +
               | '*'
    +
               | '+'
    +
               | ','
    +
               | '-'
    +
               | '.'
    +
               | '/'
    +
               | ':'
    +
               | ';'
    +
               | '<'
    +
               | '='
    +
               | '>'
    +
               | '?'
    +
               | '['
    +
               | ']'
    +
               | '^'
    +
               | '_'
    +
               | '|'
    +
               | '{'
    +
               | '}'
    +
    + referenced by: + + SQL_language_character + delimiter_token + + space: + + + + + + + + + +
    space ::=
    +
    + referenced by: + + SQL_special_character + day_time_interval + unquoted_timestamp_string + + left_bracket_or_trigraph: + + + + + + + + [ + + + ??( + + + + + +
             ::= '['
    +
               | '??('
    +
    + referenced by: + + array_element_reference + array_type + array_value_constructor_by_enumeration + empty_specification + multiset_value_constructor_by_enumeration + target_array_element_specification + update_target + + right_bracket_or_trigraph: + + + + + + + + ] + + + ??) + + + + + +
             ::= ']'
    +
               | '??)'
    +
    + referenced by: + + array_element_reference + array_type + array_value_constructor_by_enumeration + empty_specification + multiset_value_constructor_by_enumeration + target_array_element_specification + update_target + + token: + + + + + + + + nondelimiter_token + + + delimiter_token + + + + +
               | delimiter_token
    +
    + no referencesnondelimiter_token: + + + + + + + + regular_identifier + + + key_word + + + unsigned_numeric_literal + + + national_character_string_literal + + + bit_string_literal + + + hex_string_literal + + + large_object_length_token + + + multiplier + + + + +
             ::= regular_identifier
    +
               | key_word
    +
               | unsigned_numeric_literal
    +
               | national_character_string_literal
    +
               | bit_string_literal
    +
               | hex_string_literal
    +
               | large_object_length_token
    +
               | multiplier
    +
    + referenced by: + + token + + regular_identifier: + + + + + + + + identifier_body + + + + +
             ::= identifier_body
    +
    + referenced by: + + actual_identifier + nondelimiter_token + + identifier_body: + + + + + + + + identifier_start + + + identifier_part + + + + +
             ::= identifier_start identifier_part?
    +
    + referenced by: + + regular_identifier + + identifier_part: + + + + + + + + identifier_start + + + identifier_extend + + + + +
             ::= identifier_start
    +
               | identifier_extend
    +
    + referenced by: + + identifier_body + + identifier_start: + + + + + + + + + + +
             ::=
    +
    + referenced by: + + identifier_body + identifier_part + + identifier_extend: + + + + + + + + + + +
             ::=
    +
    + referenced by: + + identifier_part + + large_object_length_token: + + + + + + + + digit + + . + + + . + + + . + + + multiplier + + + + +
             ::= digit . . . multiplier
    +
    + referenced by: + + large_object_length + nondelimiter_token + + multiplier: + + + + + + + + K + + + M + + + G + + + + + +
             ::= 'K'
    +
               | 'M'
    +
               | 'G'
    +
    + referenced by: + + large_object_length + large_object_length_token + nondelimiter_token + + delimited_identifier: + + + + + + + + " + + + delimited_identifier_body + + " + + + + + +
             ::= '"' delimited_identifier_body '"'
    +
    + referenced by: + + actual_identifier + delimiter_token + + delimited_identifier_body: + + + + + + + + delimited_identifier_part + + . + + + . + + + . + + + + + +
             ::= delimited_identifier_part . . .
    +
    + referenced by: + + delimited_identifier + + delimited_identifier_part: + + + + + + + + nondoublequote_character + + + doublequote_symbol + + + + +
             ::= nondoublequote_character
    +
               | doublequote_symbol
    +
    + referenced by: + + Unicode_identifier_part + delimited_identifier_body + + Unicode_delimited_identifier: + + + + + + + + U + + & + + + " + + + Unicode_delimiter_body + + " + + + Unicode_escape_specifier + + + + +
             ::= U '&' '"' Unicode_delimiter_body '"' Unicode_escape_specifier
    +
    + referenced by: + + delimiter_token + + Unicode_escape_specifier: + + + + + + + + UESCAPE + + + ' + + + Unicode_escape_character + + ' + + + + + +
             ::= ( 'UESCAPE' "'" Unicode_escape_character "'" )?
    +
    + referenced by: + + Unicode_delimited_identifier + + Unicode_delimiter_body: + + + + + + + + Unicode_identifier_part + + . + + + . + + + . + + + + + +
             ::= Unicode_identifier_part . . .
    +
    + referenced by: + + Unicode_delimited_identifier + + Unicode_identifier_part: + + + + + + + + delimited_identifier_part + + + Unicode_escape_value + + + + +
             ::= delimited_identifier_part
    +
               | Unicode_escape_value
    +
    + referenced by: + + Unicode_delimiter_body + + Unicode_escape_value: + + + + + + + + Unicode_4_digit_escape_value + + + Unicode_6_digit_escape_value + + + Unicode_character_escape_value + + + + +
             ::= Unicode_4_digit_escape_value
    +
               | Unicode_6_digit_escape_value
    +
               | Unicode_character_escape_value
    +
    + referenced by: + + Unicode_identifier_part + Unicode_representation + + Unicode_4_digit_escape_value: + + + + + + + + Unicode_escape_character + + + hexit + + + hexit + + + hexit + + + hexit + + + + + + + referenced by: + + Unicode_escape_value + + Unicode_6_digit_escape_value: + + + + + + + + Unicode_escape_character + + + + + + hexit + + + hexit + + + hexit + + + hexit + + + hexit + + + hexit + + + + + + + referenced by: + + Unicode_escape_value + + Unicode_character_escape_value: + + + + + + + + Unicode_escape_character + + + Unicode_escape_character + + + + + + + referenced by: + + Unicode_escape_value + + Unicode_escape_character: + + + + + + + + + + +
             ::=
    +
    + referenced by: + + Unicode_4_digit_escape_value + Unicode_6_digit_escape_value + Unicode_character_escape_value + Unicode_escape_specifier + + nondoublequote_character: + + + + + + + + + + +
             ::=
    +
    + referenced by: + + delimited_identifier_part + + doublequote_symbol: + + + + + + + + " + + + " + + + + + +
             ::= '"' '"'
    +
    + referenced by: + + delimited_identifier_part + + delimiter_token: + + + + + + + + character_string_literal + + + date_string + + + time_string + + + timestamp_string + + + interval_string + + + delimited_identifier + + + Unicode_delimited_identifier + + + SQL_special_character + + <> + + + >= + + + <= + + + || + + + -> + + + ??( + + + ??) + + + :: + + + .. + + + + + +
             ::= character_string_literal
    +
               | date_string
    +
               | time_string
    +
               | timestamp_string
    +
               | interval_string
    +
               | delimited_identifier
    +
               | Unicode_delimited_identifier
    +
               | SQL_special_character
    +
               | '<>'
    +
               | '>='
    +
               | '<='
    +
               | '||'
    +
               | '->'
    +
               | '??('
    +
               | '??)'
    +
               | '::'
    +
               | '..'
    +
    + referenced by: + + token + + separator: + + + + + + + + comment + + + white_space + + + + +
             ::= ( comment | white_space )*
    +
    + referenced by: + + Unicode_character_string_literal + binary_string_literal + bracketed_comment_contents + character_string_literal + national_character_string_literal + + comment: + + + + + + + + simple_comment + + + bracketed_comment + + + + +
               | bracketed_comment
    +
    + referenced by: + + separator + + simple_comment: + + + + + + + + simple_comment_introducer + + + comment_character + + + newline + + + + + + + referenced by: + + comment + + simple_comment_introducer: + + + + + + + + - + + + - + + + + + +
             ::= '-' '-'+
    +
    + referenced by: + + simple_comment + + bracketed_comment: + + + + + + + + bracketed_comment_introducer + + + bracketed_comment_contents + + + bracketed_comment_terminator + + + + + + + referenced by: + + comment + + bracketed_comment_introducer: + + + + + + + + slash + + * + + + + + +
             ::= slash '*'
    +
    + referenced by: + + bracketed_comment + + bracketed_comment_terminator: + + + + + + + + * + + + slash + + + + +
             ::= '*' slash
    +
    + referenced by: + + bracketed_comment + + bracketed_comment_contents: + + + + + + + + comment_character + + + separator + + + + +
             ::= ( comment_character | separator )*
    +
    + referenced by: + + bracketed_comment + + comment_character: + + + + + + + + nonquote_character + + ' + + + + + +
             ::= nonquote_character
    +
               | "'"
    +
    + referenced by: + + bracketed_comment_contents + simple_comment + + newline: + + + + + + + + + + + + referenced by: + + simple_comment + + key_word: + + + + + + + + reserved_word + + + non_reserved_word + + + + +
               | non_reserved_word
    +
    + referenced by: + + nondelimiter_token + + non_reserved_word: + + + + + + + + A* + + + ABS* + + + ABSOLUTE* + + + ACTION* + + + ADA* + + + ADMIN* + + + AFTER* + + + ALWAYS* + + + ASC* + + + ASSERTION* + + + ASSIGNMENT* + + + ATTRIBUTE* + + + ATTRIBUTES* + + + AVG* + + + BEFORE* + + + BERNOULLI* + + + BREADTH* + + + C* + + + CARDINALITY* + + + CASCADE* + + + CATALOG* + + + CATALOG_NAME* + + + CEIL* + + + CEILING* + + + CHAIN* + + + CHARACTERISTICS* + + + CHARACTERS* + + + CHARACTER_LENGTH* + + + CHARACTER_SET_CATALOG* + + + CHARACTER_SET_NAME* + + + CHARACTER_SET_SCHEMA* + + + CHAR_LENGTH* + + + CHECKED* + + + CLASS_ORIGIN* + + + COALESCE* + + + COBOL* + + + CODE_UNITS* + + + COLLATION* + + + COLLATION_CATALOG* + + + COLLATION_NAME* + + + COLLATION_SCHEMA* + + + COLLECT* + + + COLUMN_NAME* + + + COMMAND_FUNCTION* + + + COMMAND_FUNCTION_CODE* + + + COMMITTED* + + + CONDITION* + + + CONDITION_NUMBER* + + + CONNECTION_NAME* + + + CONSTRAINTS* + + + CONSTRAINT_CATALOG* + + + CONSTRAINT_NAME* + + + CONSTRAINT_SCHEMA* + + + CONSTRUCTORS* + + + CONTAINS* + + + CONVERT* + + + CORR* + + + COUNT* + + + COVAR_POP* + + + COVAR_SAMP* + + + CUME_DIST* + + + CURRENT_COLLATION* + + + CURSOR_NAME* + + + DATA* + + + DATETIME_INTERVAL_CODE* + + + DATETIME_INTERVAL_PRECISION* + + + DEFAULTS* + + + DEFERRABLE* + + + DEFERRED* + + + DEFINED* + + + DEFINER* + + + DEGREE* + + + DENSE_RANK* + + + DEPTH* + + + DERIVED* + + + DESC* + + + DESCRIPTOR* + + + DIAGNOSTICS* + + + DISPATCH* + + + DOMAIN* + + + DYNAMIC_FUNCTION* + + + DYNAMIC_FUNCTION_CODE* + + + EQUALS* + + + EVERY* + + + EXCEPTION* + + + EXCLUDE* + + + EXCLUDING* + + + EXP* + + + EXTRACT* + + + FINAL* + + + FIRST* + + + FLOOR* + + + FOLLOWING* + + + FORTRAN* + + + FOUND* + + + FUSION* + + + G* + + + GENERAL* + + + GO* + + + GOTO* + + + GRANTED* + + + HIERARCHY* + + + IMPLEMENTATION* + + + INCLUDING* + + + INCREMENT* + + + INITIALLY* + + + INSTANCE* + + + INSTANTIABLE* + + + INTERSECTION* + + + INVOKER* + + + ISOLATION + + K* + + + KEY* + + + KEY_MEMBER* + + + KEY_TYPE* + + + LAST* + + + LENGTH* + + + LEVEL* + + + LN* + + + LOCATOR* + + + LOWER* + + + M* + + + MAP* + + + MATCHED* + + + MAX* + + + MAXVALUE* + + + MESSAGE_LENGTH* + + + MESSAGE_OCTET_LENGTH* + + + MESSAGE_TEXT* + + + MIN* + + + MINVALUE* + + + MOD* + + + MORE* + + + MUMPS* + + + NAME* + + + NAMES* + + + NESTING* + + + NEXT* + + + NORMALIZE* + + + NORMALIZED* + + + NULLABLE* + + + NULLIF* + + + NULLS* + + + NUMBER* + + + OBJECT* + + + OCTETS* + + + OCTET_LENGTH* + + + OPTION* + + + OPTIONS* + + + ORDERING* + + + ORDINALITY* + + + OTHERS* + + + OVERLAY* + + + OVERRIDING* + + + PAD* + + + PARAMETER_MODE* + + + PARAMETER_NAME* + + + PARAMETER_ORDINAL_POSITION* + + + PARAMETER_SPECIFIC_CATALOG* + + + PARAMETER_SPECIFIC_NAME* + + + PARAMETER_SPECIFIC_SCHEMA* + + + PARTIAL* + + + PASCAL* + + + PATH* + + + PERCENTILE_CONT* + + + PERCENTILE_DISC* + + + PERCENT_RANK* + + + PLACING* + + + PLI* + + + POSITION* + + + POWER* + + + PRECEDING* + + + PRESERVE* + + + PRIOR* + + + PRIVILEGES* + + + PUBLIC* + + + RANK* + + + READ* + + + RELATIVE* + + + REPEATABLE* + + + RESTART* + + + RETURNED_CARDINALITY* + + + RETURNED_LENGTH* + + + RETURNED_OCTET_LENGTH* + + + RETURNED_SQLSTATE* + + + ROLE* + + + ROUTINE* + + + ROUTINE_CATALOG* + + + ROUTINE_NAME* + + + ROUTINE_SCHEMA* + + + ROW_COUNT* + + + ROW_NUMBER* + + + SCALE* + + + SCHEMA* + + + SCHEMA_NAME* + + + SCOPE_CATALOG* + + + SCOPE_NAME* + + + SCOPE_SCHEMA* + + + SECTION* + + + SECURITY* + + + SELF* + + + SEQUENCE* + + + SERIALIZABLE* + + + SERVER_NAME* + + + SESSION* + + + SETS* + + + SIMPLE* + + + SIZE* + + + SOURCE* + + + SPACE* + + + SPECIFIC_NAME* + + + SQRT* + + + STATE* + + + STATEMENT* + + + STDDEV_POP* + + + STDDEV_SAMP* + + + STRUCTURE* + + + STYLE* + + + SUBCLASS_ORIGIN* + + + SUBSTRING* + + + SUM* + + + TABLESAMPLE* + + + TABLE_NAME* + + + TEMPORARY* + + + TIES* + + + TOP_LEVEL_COUNT* + + + TRANSACTION* + + + TRANSACTIONS_COMMITTED* + + + TRANSACTIONS_ROLLED_BACK* + + + TRANSACTION_ACTIVE* + + + TRANSFORM* + + + TRANSFORMS* + + + TRANSLATE* + + + TRIGGER_CATALOG* + + + TRIGGER_NAME* + + + TRIGGER_SCHEMA* + + + TRIM* + + + TYPE* + + + UNBOUNDED* + + + UNCOMMITTED* + + + UNDER* + + + UNNAMED* + + + USAGE* + + + USER_DEFINED_TYPE_CATALOG* + + + USER_DEFINED_TYPE_CODE* + + + USER_DEFINED_TYPE_NAME* + + + USER_DEFINED_TYPE_SCHEMA* + + + VIEW* + + + WORK* + + + WRITE* + + + ZONE* + + + + + +
             ::= 'A*'
    +
               | 'ABS*'
    +
               | 'ABSOLUTE*'
    +
               | 'ACTION*'
    +
               | 'ADA*'
    +
               | 'ADMIN*'
    +
               | 'AFTER*'
    +
               | 'ALWAYS*'
    +
               | 'ASC*'
    +
               | 'ASSERTION*'
    +
               | 'ASSIGNMENT*'
    +
               | 'ATTRIBUTE*'
    +
               | 'ATTRIBUTES*'
    +
               | 'AVG*'
    +
               | 'BEFORE*'
    +
               | 'BERNOULLI*'
    +
               | 'BREADTH*'
    +
               | 'C*'
    +
               | 'CARDINALITY*'
    +
               | 'CASCADE*'
    +
               | 'CATALOG*'
    +
               | 'CATALOG_NAME*'
    +
               | 'CEIL*'
    +
               | 'CEILING*'
    +
               | 'CHAIN*'
    +
               | 'CHARACTERISTICS*'
    +
               | 'CHARACTERS*'
    +
               | 'CHARACTER_LENGTH*'
    +
               | 'CHARACTER_SET_CATALOG*'
    +
               | 'CHARACTER_SET_NAME*'
    +
               | 'CHARACTER_SET_SCHEMA*'
    +
               | 'CHAR_LENGTH*'
    +
               | 'CHECKED*'
    +
               | 'CLASS_ORIGIN*'
    +
               | 'COALESCE*'
    +
               | 'COBOL*'
    +
               | 'CODE_UNITS*'
    +
               | 'COLLATION*'
    +
               | 'COLLATION_CATALOG*'
    +
               | 'COLLATION_NAME*'
    +
               | 'COLLATION_SCHEMA*'
    +
               | 'COLLECT*'
    +
               | 'COLUMN_NAME*'
    +
               | 'COMMAND_FUNCTION*'
    +
               | 'COMMAND_FUNCTION_CODE*'
    +
               | 'COMMITTED*'
    +
               | 'CONDITION*'
    +
               | 'CONDITION_NUMBER*'
    +
               | 'CONNECTION_NAME*'
    +
               | 'CONSTRAINTS*'
    +
               | 'CONSTRAINT_CATALOG*'
    +
               | 'CONSTRAINT_NAME*'
    +
               | 'CONSTRAINT_SCHEMA*'
    +
               | 'CONSTRUCTORS*'
    +
               | 'CONTAINS*'
    +
               | 'CONVERT*'
    +
               | 'CORR*'
    +
               | 'COUNT*'
    +
               | 'COVAR_POP*'
    +
               | 'COVAR_SAMP*'
    +
               | 'CUME_DIST*'
    +
               | 'CURRENT_COLLATION*'
    +
               | 'CURSOR_NAME*'
    +
               | 'DATA*'
    +
               | 'DATETIME_INTERVAL_CODE*'
    +
               | 'DATETIME_INTERVAL_PRECISION*'
    +
               | 'DEFAULTS*'
    +
               | 'DEFERRABLE*'
    +
               | 'DEFERRED*'
    +
               | 'DEFINED*'
    +
               | 'DEFINER*'
    +
               | 'DEGREE*'
    +
               | 'DENSE_RANK*'
    +
               | 'DEPTH*'
    +
               | 'DERIVED*'
    +
               | 'DESC*'
    +
               | 'DESCRIPTOR*'
    +
               | 'DIAGNOSTICS*'
    +
               | 'DISPATCH*'
    +
               | 'DOMAIN*'
    +
               | 'DYNAMIC_FUNCTION*'
    +
               | 'DYNAMIC_FUNCTION_CODE*'
    +
               | 'EQUALS*'
    +
               | 'EVERY*'
    +
               | 'EXCEPTION*'
    +
               | 'EXCLUDE*'
    +
               | 'EXCLUDING*'
    +
               | 'EXP*'
    +
               | 'EXTRACT*'
    +
               | 'FINAL*'
    +
               | 'FIRST*'
    +
               | 'FLOOR*'
    +
               | 'FOLLOWING*'
    +
               | 'FORTRAN*'
    +
               | 'FOUND*'
    +
               | 'FUSION*'
    +
               | 'G*'
    +
               | 'GENERAL*'
    +
               | 'GO*'
    +
               | 'GOTO*'
    +
               | 'GRANTED*'
    +
               | 'HIERARCHY*'
    +
               | 'IMPLEMENTATION*'
    +
               | 'INCLUDING*'
    +
               | 'INCREMENT*'
    +
               | 'INITIALLY*'
    +
               | 'INSTANCE*'
    +
               | 'INSTANTIABLE*'
    +
               | 'INTERSECTION*'
    +
               | 'INVOKER*'
    +
               | ISOLATION
    +
               | 'K*'
    +
               | 'KEY*'
    +
               | 'KEY_MEMBER*'
    +
               | 'KEY_TYPE*'
    +
               | 'LAST*'
    +
               | 'LENGTH*'
    +
               | 'LEVEL*'
    +
               | 'LN*'
    +
               | 'LOCATOR*'
    +
               | 'LOWER*'
    +
               | 'M*'
    +
               | 'MAP*'
    +
               | 'MATCHED*'
    +
               | 'MAX*'
    +
               | 'MAXVALUE*'
    +
               | 'MESSAGE_LENGTH*'
    +
               | 'MESSAGE_OCTET_LENGTH*'
    +
               | 'MESSAGE_TEXT*'
    +
               | 'MIN*'
    +
               | 'MINVALUE*'
    +
               | 'MOD*'
    +
               | 'MORE*'
    +
               | 'MUMPS*'
    +
               | 'NAME*'
    +
               | 'NAMES*'
    +
               | 'NESTING*'
    +
               | 'NEXT*'
    +
               | 'NORMALIZE*'
    +
               | 'NORMALIZED*'
    +
               | 'NULLABLE*'
    +
               | 'NULLIF*'
    +
               | 'NULLS*'
    +
               | 'NUMBER*'
    +
               | 'OBJECT*'
    +
               | 'OCTETS*'
    +
               | 'OCTET_LENGTH*'
    +
               | 'OPTION*'
    +
               | 'OPTIONS*'
    +
               | 'ORDERING*'
    +
               | 'ORDINALITY*'
    +
               | 'OTHERS*'
    +
               | 'OVERLAY*'
    +
               | 'OVERRIDING*'
    +
               | 'PAD*'
    +
               | 'PARAMETER_MODE*'
    +
               | 'PARAMETER_NAME*'
    +
               | 'PARAMETER_ORDINAL_POSITION*'
    +
               | 'PARAMETER_SPECIFIC_CATALOG*'
    +
               | 'PARAMETER_SPECIFIC_NAME*'
    +
               | 'PARAMETER_SPECIFIC_SCHEMA*'
    +
               | 'PARTIAL*'
    +
               | 'PASCAL*'
    +
               | 'PATH*'
    +
               | 'PERCENTILE_CONT*'
    +
               | 'PERCENTILE_DISC*'
    +
               | 'PERCENT_RANK*'
    +
               | 'PLACING*'
    +
               | 'PLI*'
    +
               | 'POSITION*'
    +
               | 'POWER*'
    +
               | 'PRECEDING*'
    +
               | 'PRESERVE*'
    +
               | 'PRIOR*'
    +
               | 'PRIVILEGES*'
    +
               | 'PUBLIC*'
    +
               | 'RANK*'
    +
               | 'READ*'
    +
               | 'RELATIVE*'
    +
               | 'REPEATABLE*'
    +
               | 'RESTART*'
    +
               | 'RETURNED_CARDINALITY*'
    +
               | 'RETURNED_LENGTH*'
    +
               | 'RETURNED_OCTET_LENGTH*'
    +
               | 'RETURNED_SQLSTATE*'
    +
               | 'ROLE*'
    +
               | 'ROUTINE*'
    +
               | 'ROUTINE_CATALOG*'
    +
               | 'ROUTINE_NAME*'
    +
               | 'ROUTINE_SCHEMA*'
    +
               | 'ROW_COUNT*'
    +
               | 'ROW_NUMBER*'
    +
               | 'SCALE*'
    +
               | 'SCHEMA*'
    +
               | 'SCHEMA_NAME*'
    +
               | 'SCOPE_CATALOG*'
    +
               | 'SCOPE_NAME*'
    +
               | 'SCOPE_SCHEMA*'
    +
               | 'SECTION*'
    +
               | 'SECURITY*'
    +
               | 'SELF*'
    +
               | 'SEQUENCE*'
    +
               | 'SERIALIZABLE*'
    +
               | 'SERVER_NAME*'
    +
               | 'SESSION*'
    +
               | 'SETS*'
    +
               | 'SIMPLE*'
    +
               | 'SIZE*'
    +
               | 'SOURCE*'
    +
               | 'SPACE*'
    +
               | 'SPECIFIC_NAME*'
    +
               | 'SQRT*'
    +
               | 'STATE*'
    +
               | 'STATEMENT*'
    +
               | 'STDDEV_POP*'
    +
               | 'STDDEV_SAMP*'
    +
               | 'STRUCTURE*'
    +
               | 'STYLE*'
    +
               | 'SUBCLASS_ORIGIN*'
    +
               | 'SUBSTRING*'
    +
               | 'SUM*'
    +
               | 'TABLESAMPLE*'
    +
               | 'TABLE_NAME*'
    +
               | 'TEMPORARY*'
    +
               | 'TIES*'
    +
               | 'TOP_LEVEL_COUNT*'
    +
               | 'TRANSACTION*'
    +
               | 'TRANSACTIONS_COMMITTED*'
    +
               | 'TRANSACTIONS_ROLLED_BACK*'
    +
               | 'TRANSACTION_ACTIVE*'
    +
               | 'TRANSFORM*'
    +
               | 'TRANSFORMS*'
    +
               | 'TRANSLATE*'
    +
               | 'TRIGGER_CATALOG*'
    +
               | 'TRIGGER_NAME*'
    +
               | 'TRIGGER_SCHEMA*'
    +
               | 'TRIM*'
    +
               | 'TYPE*'
    +
               | 'UNBOUNDED*'
    +
               | 'UNCOMMITTED*'
    +
               | 'UNDER*'
    +
               | 'UNNAMED*'
    +
               | 'USAGE*'
    +
               | 'USER_DEFINED_TYPE_CATALOG*'
    +
               | 'USER_DEFINED_TYPE_CODE*'
    +
               | 'USER_DEFINED_TYPE_NAME*'
    +
               | 'USER_DEFINED_TYPE_SCHEMA*'
    +
               | 'VIEW*'
    +
               | 'WORK*'
    +
               | 'WRITE*'
    +
               | 'ZONE*'
    +
    + referenced by: + + key_word + + reserved_word: + + + + + + + + ADD + + + ALL + + + ALLOCATE + + + ALTER + + + AND + + + ANY + + + ARE + + + ARRAY + + + AS + + + ASENSITIVE + + + ASYMMETRIC + + + AT + + + ATOMIC + + + AUTHORIZATION + + + BEGIN + + + BETWEEN + + + BIGINT + + + BINARY + + + BLOB + + + BOOLEAN + + + BOTH + + + BY + + + CALL + + + CALLED + + + CASCADED + + + CASE + + + CAST + + + CHAR + + + CHARACTER + + + CHECK + + + CLOB + + + CLOSE + + + COLLATE + + + COLUMN + + + COMMIT + + + CONNECT + + + CONSTRAINT + + + CONTINUE + + + CORRESPONDING + + + CREATE + + + CROSS + + + CUBE + + + CURRENT + + + CURRENT_DATE + + + CURRENT_DEFAULT_TRANSFORM_GROUP + + + CURRENT_PATH + + + CURRENT_ROLE + + + CURRENT_TIME + + + CURRENT_TIMESTAMP + + + CURRENT_TRANSFORM_GROUP_FOR_TYPE + + + CURRENT_USER + + + CURSOR + + + CYCLE + + + DATE + + + DAY + + + DEALLOCATE + + + DEC + + + DECIMAL + + + DECLARE + + + DEFAULT + + + DELETE + + + DEREF + + + DESCRIBE + + + DETERMINISTIC + + + DISCONNECT + + + DISTINCT + + + DOUBLE + + + DROP + + + DYNAMIC + + + EACH + + + ELEMENT + + + ELSE + + + END + + + END-EXEC + + + ESCAPE + + + EXCEPT + + + EXEC + + + EXECUTE + + + EXISTS + + + EXTERNAL + + + FALSE + + + FETCH + + + FILTER + + + FLOAT + + + FOR + + + FOREIGN + + + FREE + + + FROM + + + FULL + + + FUNCTION + + + GET + + + GLOBAL + + + GRANT + + + GROUP + + + GROUPING + + + HAVING + + + HOLD + + + HOUR + + + IDENTITY + + + IMMEDIATE + + + IN + + + INDICATOR + + + INNER + + + INOUT + + + INPUT + + + INSENSITIVE + + + INSERT + + + INT + + + INTEGER + + + INTERSECT + + + INTERVAL + + + INTO + + + IS + + + ISOLATION + + JOIN + + + LANGUAGE + + + LARGE + + + LATERAL + + + LEADING + + + LEFT + + + LIKE + + + LOCAL + + + LOCALTIME + + + LOCALTIMESTAMP + + + MATCH + + + MEMBER + + + MERGE + + + METHOD + + + MINUTE + + + MODIFIES + + + MODULE + + + MONTH + + + MULTISET + + + NATIONAL + + + NATURAL + + + NCHAR + + + NCLOB + + + NEW + + + NO + + + NONE + + + NOT + + + NULL + + + NUMERIC + + + OF + + + OLD + + + ON + + + ONLY + + + OPEN + + + OR + + + ORDER + + + OUT + + + OUTER + + + OUTPUT + + + OVER + + + OVERLAPS + + + PARAMETER + + + PARTITION + + + PRECISION + + + PREPARE + + + PRIMARY + + + PROCEDURE + + + RANGE + + + READS + + + REAL + + + RECURSIVE + + + REF + + + REFERENCES + + + REFERENCING + + + REGR_AVGX + + + REGR_AVGY + + + REGR_COUNT + + + REGR_INTERCEPT + + + REGR_R2 + + + REGR_SLOPE + + + REGR_SXX + + + REGR_SXY + + + REGR_SYY + + + RELEASE + + + RESULT + + + RETURN + + + RETURNS + + + REVOKE + + + RIGHT + + + ROLLBACK + + + ROLLUP + + + ROW + + + ROWS + + + SAVEPOINT + + + SCROLL + + + SEARCH + + + SECOND + + + SELECT + + + SENSITIVE + + + SESSION_USER + + + SET + + + SIMILAR + + + SMALLINT + + + SOME + + + SPECIFIC + + + SPECIFICTYPE + + + SQL + + + SQLEXCEPTION + + + SQLSTATE + + + SQLWARNING + + + START + + + STATIC + + + SUBMULTISET + + + SYMMETRIC + + + SYSTEM + + + SYSTEM_USER + + + TABLE + + + THEN + + + TIME + + + TIMESTAMP + + + TIMEZONE_HOUR + + + TIMEZONE_MINUTE + + + TO + + + TRAILING + + + TRANSLATION + + + TREAT + + + TRIGGER + + + TRUE + + + UESCAPE + + + UNION + + + UNIQUE + + + UNKNOWN + + + UNNEST + + + UPDATE + + + UPPER + + + USER + + + USING + + + VALUE + + + VALUES + + + VAR_POP + + + VAR_SAMP + + + VARCHAR + + + VARYING + + + WHEN + + + WHENEVER + + + WHERE + + + WIDTH_BUCKET + + + WINDOW + + + WITH + + + WITHIN + + + WITHOUT + + + YEAR + + + + + +
             ::= 'ADD'
    +
               | 'ALL'
    +
               | 'ALLOCATE'
    +
               | 'ALTER'
    +
               | 'AND'
    +
               | 'ANY'
    +
               | 'ARE'
    +
               | 'ARRAY'
    +
               | 'AS'
    +
               | 'ASENSITIVE'
    +
               | 'ASYMMETRIC'
    +
               | 'AT'
    +
               | 'ATOMIC'
    +
               | 'AUTHORIZATION'
    +
               | 'BEGIN'
    +
               | 'BETWEEN'
    +
               | 'BIGINT'
    +
               | 'BINARY'
    +
               | 'BLOB'
    +
               | 'BOOLEAN'
    +
               | 'BOTH'
    +
               | 'BY'
    +
               | 'CALL'
    +
               | 'CALLED'
    +
               | 'CASCADED'
    +
               | 'CASE'
    +
               | 'CAST'
    +
               | 'CHAR'
    +
               | 'CHARACTER'
    +
               | 'CHECK'
    +
               | 'CLOB'
    +
               | 'CLOSE'
    +
               | 'COLLATE'
    +
               | 'COLUMN'
    +
               | 'COMMIT'
    +
               | 'CONNECT'
    +
               | 'CONSTRAINT'
    +
               | 'CONTINUE'
    +
               | 'CORRESPONDING'
    +
               | 'CREATE'
    +
               | 'CROSS'
    +
               | 'CUBE'
    +
               | 'CURRENT'
    +
               | 'CURRENT_DATE'
    +
               | 'CURRENT_DEFAULT_TRANSFORM_GROUP'
    +
               | 'CURRENT_PATH'
    +
               | 'CURRENT_ROLE'
    +
               | 'CURRENT_TIME'
    +
               | 'CURRENT_TIMESTAMP'
    +
               | 'CURRENT_TRANSFORM_GROUP_FOR_TYPE'
    +
               | 'CURRENT_USER'
    +
               | 'CURSOR'
    +
               | 'CYCLE'
    +
               | 'DATE'
    +
               | 'DAY'
    +
               | 'DEALLOCATE'
    +
               | 'DEC'
    +
               | 'DECIMAL'
    +
               | 'DECLARE'
    +
               | 'DEFAULT'
    +
               | 'DELETE'
    +
               | 'DEREF'
    +
               | 'DESCRIBE'
    +
               | 'DETERMINISTIC'
    +
               | 'DISCONNECT'
    +
               | 'DISTINCT'
    +
               | 'DOUBLE'
    +
               | 'DROP'
    +
               | 'DYNAMIC'
    +
               | 'EACH'
    +
               | 'ELEMENT'
    +
               | 'ELSE'
    +
               | 'END'
    +
               | 'END-EXEC'
    +
               | 'ESCAPE'
    +
               | 'EXCEPT'
    +
               | 'EXEC'
    +
               | 'EXECUTE'
    +
               | 'EXISTS'
    +
               | 'EXTERNAL'
    +
               | 'FALSE'
    +
               | 'FETCH'
    +
               | 'FILTER'
    +
               | 'FLOAT'
    +
               | 'FOR'
    +
               | 'FOREIGN'
    +
               | 'FREE'
    +
               | 'FROM'
    +
               | 'FULL'
    +
               | 'FUNCTION'
    +
               | 'GET'
    +
               | 'GLOBAL'
    +
               | 'GRANT'
    +
               | 'GROUP'
    +
               | 'GROUPING'
    +
               | 'HAVING'
    +
               | 'HOLD'
    +
               | 'HOUR'
    +
               | 'IDENTITY'
    +
               | 'IMMEDIATE'
    +
               | 'IN'
    +
               | 'INDICATOR'
    +
               | 'INNER'
    +
               | 'INOUT'
    +
               | 'INPUT'
    +
               | 'INSENSITIVE'
    +
               | 'INSERT'
    +
               | 'INT'
    +
               | 'INTEGER'
    +
               | 'INTERSECT'
    +
               | 'INTERVAL'
    +
               | 'INTO'
    +
               | 'IS'
    +
               | ISOLATION
    +
               | 'JOIN'
    +
               | 'LANGUAGE'
    +
               | 'LARGE'
    +
               | 'LATERAL'
    +
               | 'LEADING'
    +
               | 'LEFT'
    +
               | 'LIKE'
    +
               | 'LOCAL'
    +
               | 'LOCALTIME'
    +
               | 'LOCALTIMESTAMP'
    +
               | 'MATCH'
    +
               | 'MEMBER'
    +
               | 'MERGE'
    +
               | 'METHOD'
    +
               | 'MINUTE'
    +
               | 'MODIFIES'
    +
               | 'MODULE'
    +
               | 'MONTH'
    +
               | 'MULTISET'
    +
               | 'NATIONAL'
    +
               | 'NATURAL'
    +
               | 'NCHAR'
    +
               | 'NCLOB'
    +
               | 'NEW'
    +
               | 'NO'
    +
               | 'NONE'
    +
               | 'NOT'
    +
               | 'NULL'
    +
               | 'NUMERIC'
    +
               | 'OF'
    +
               | 'OLD'
    +
               | 'ON'
    +
               | 'ONLY'
    +
               | 'OPEN'
    +
               | 'OR'
    +
               | 'ORDER'
    +
               | 'OUT'
    +
               | 'OUTER'
    +
               | 'OUTPUT'
    +
               | 'OVER'
    +
               | 'OVERLAPS'
    +
               | 'PARAMETER'
    +
               | 'PARTITION'
    +
               | 'PRECISION'
    +
               | 'PREPARE'
    +
               | 'PRIMARY'
    +
               | 'PROCEDURE'
    +
               | 'RANGE'
    +
               | 'READS'
    +
               | 'REAL'
    +
               | 'RECURSIVE'
    +
               | 'REF'
    +
               | 'REFERENCES'
    +
               | 'REFERENCING'
    +
               | 'REGR_AVGX'
    +
               | 'REGR_AVGY'
    +
               | 'REGR_COUNT'
    +
               | 'REGR_INTERCEPT'
    +
               | 'REGR_R2'
    +
               | 'REGR_SLOPE'
    +
               | 'REGR_SXX'
    +
               | 'REGR_SXY'
    +
               | 'REGR_SYY'
    +
               | 'RELEASE'
    +
               | 'RESULT'
    +
               | 'RETURN'
    +
               | 'RETURNS'
    +
               | 'REVOKE'
    +
               | 'RIGHT'
    +
               | 'ROLLBACK'
    +
               | 'ROLLUP'
    +
               | 'ROW'
    +
               | 'ROWS'
    +
               | 'SAVEPOINT'
    +
               | 'SCROLL'
    +
               | 'SEARCH'
    +
               | 'SECOND'
    +
               | 'SELECT'
    +
               | 'SENSITIVE'
    +
               | 'SESSION_USER'
    +
               | 'SET'
    +
               | 'SIMILAR'
    +
               | 'SMALLINT'
    +
               | 'SOME'
    +
               | 'SPECIFIC'
    +
               | 'SPECIFICTYPE'
    +
               | 'SQL'
    +
               | 'SQLEXCEPTION'
    +
               | 'SQLSTATE'
    +
               | 'SQLWARNING'
    +
               | 'START'
    +
               | 'STATIC'
    +
               | 'SUBMULTISET'
    +
               | 'SYMMETRIC'
    +
               | 'SYSTEM'
    +
               | 'SYSTEM_USER'
    +
               | 'TABLE'
    +
               | 'THEN'
    +
               | 'TIME'
    +
               | 'TIMESTAMP'
    +
               | 'TIMEZONE_HOUR'
    +
               | 'TIMEZONE_MINUTE'
    +
               | 'TO'
    +
               | 'TRAILING'
    +
               | 'TRANSLATION'
    +
               | 'TREAT'
    +
               | 'TRIGGER'
    +
               | 'TRUE'
    +
               | 'UESCAPE'
    +
               | 'UNION'
    +
               | 'UNIQUE'
    +
               | 'UNKNOWN'
    +
               | 'UNNEST'
    +
               | 'UPDATE'
    +
               | 'UPPER'
    +
               | 'USER'
    +
               | 'USING'
    +
               | 'VALUE'
    +
               | 'VALUES'
    +
               | 'VAR_POP'
    +
               | 'VAR_SAMP'
    +
               | 'VARCHAR'
    +
               | 'VARYING'
    +
               | 'WHEN'
    +
               | 'WHENEVER'
    +
               | 'WHERE'
    +
               | 'WIDTH_BUCKET'
    +
               | 'WINDOW'
    +
               | 'WITH'
    +
               | 'WITHIN'
    +
               | 'WITHOUT'
    +
               | 'YEAR'
    +
    + referenced by: + + key_word + + literal: + + + + + + + + signed_numeric_literal + + + general_literal + + + + +
               | general_literal
    +
    + referenced by: + + default_option + simple_value_specification + value_specification + + unsigned_literal: + + + + + + + + unsigned_numeric_literal + + + general_literal + + + + +
             ::= unsigned_numeric_literal
    +
               | general_literal
    +
    + referenced by: + + unsigned_value_specification + + general_literal: + + + + + + + + character_string_literal + + + national_character_string_literal + + + Unicode_character_string_literal + + + binary_string_literal + + + datetime_literal + + + interval_literal + + + boolean_literal + + + + +
             ::= character_string_literal
    +
               | national_character_string_literal
    +
               | Unicode_character_string_literal
    +
               | binary_string_literal
    +
               | datetime_literal
    +
               | interval_literal
    +
               | boolean_literal
    +
    + referenced by: + + literal + unsigned_literal + + character_string_literal: + + + + + + + + _ + + + character_set_specification + + ' + + + character_representation + + ' + + + separator + + + + +
             ::= ( '_' character_set_specification )? "'" character_representation? "'" ( separator "'" character_representation? "'" )*
    +
    + referenced by: + + delimiter_token + external_routine_name + general_literal + + character_representation: + + + + + + + + nonquote_character + + + quote_symbol + + + + +
             ::= nonquote_character
    +
               | quote_symbol
    +
    + referenced by: + + Ada_initial_value + COBOL_variable_definition + C_initial_value + PL_I_variable_definition + Unicode_representation + character_string_literal + national_character_string_literal + + nonquote_character: + + + + + + + + + + +
             ::=
    +
    + referenced by: + + character_representation + comment_character + + quote_symbol: + + + + + + + + ' + + + ' + + + + + +
             ::= "'" "'"
    +
    + referenced by: + + character_representation + + national_character_string_literal: + + + + + + + + N + + ' + + + character_representation + + ' + + + separator + + + + +
             ::= N "'" character_representation* "'" ( separator "'" character_representation* "'" )*
    +
    + referenced by: + + general_literal + nondelimiter_token + + Unicode_character_string_literal: + + + + + + + + _ + + + character_set_specification + + + U + + & + + + ' + + + Unicode_representation + + ' + + + separator + + ESCAPE + + + escape_character + + + + +
             ::= ( '_' character_set_specification )? U '&' "'" Unicode_representation? "'" ( separator "'" Unicode_representation? "'" )* ( 'ESCAPE' escape_character )?
    +
    + referenced by: + + general_literal + + Unicode_representation: + + + + + + + + character_representation + + + Unicode_escape_value + + + + +
             ::= character_representation
    +
               | Unicode_escape_value
    +
    + referenced by: + + Unicode_character_string_literal + + binary_string_literal: + + + + + + + + X + + ' + + + hexit + + + hexit + + ' + + + separator + + ESCAPE + + + escape_character + + + + +
             ::= X "'" ( hexit hexit )* "'" ( separator "'" ( hexit hexit )* "'" )* ( 'ESCAPE' escape_character )?
    +
    + referenced by: + + general_literal + + hexit: + + + + + + + + digit + + A + + + B + + + C + + + D + + + E + + + F + + + a + + + b + + + c + + + d + + + e + + + f + + + + +
    hexit    ::= digit
    +
               | 'A'
    +
               | 'B'
    +
               | 'C'
    +
               | 'D'
    +
               | 'E'
    +
               | 'F'
    +
               | 'a'
    +
               | 'b'
    +
               | 'c'
    +
               | 'd'
    +
               | 'e'
    +
               | 'f'
    +
    + referenced by: + + Unicode_4_digit_escape_value + Unicode_6_digit_escape_value + binary_string_literal + + signed_numeric_literal: + + + + + + + + sign + + + unsigned_numeric_literal + + + + +
             ::= sign? unsigned_numeric_literal
    +
    + referenced by: + + literal + sequence_generator_increment + sequence_generator_max_value + sequence_generator_min_value + sequence_generator_restart_value + sequence_generator_start_value + + unsigned_numeric_literal: + + + + + + + + exact_numeric_literal + + + approximate_numeric_literal + + + + +
             ::= exact_numeric_literal
    +
               | approximate_numeric_literal
    +
    + referenced by: + + nondelimiter_token + signed_numeric_literal + unsigned_literal + + exact_numeric_literal: + + + + + + + + unsigned_integer + + . + + + unsigned_integer + + . + + + unsigned_integer + + + + +
             ::= unsigned_integer ( '.' unsigned_integer? )?
    +
               | '.' unsigned_integer
    +
    + referenced by: + + mantissa + unsigned_numeric_literal + + sign: + + + + + + + + + + + + - + + + + +
    sign     ::= '+'
    +
               | '-'
    +
    + referenced by: + + factor + interval_factor + interval_literal + signed_integer + signed_numeric_literal + time_zone_interval + unquoted_interval_string + + approximate_numeric_literal: + + + + + + + + mantissa + + + E + + + exponent + + + + +
             ::= mantissa E exponent
    +
    + referenced by: + + unsigned_numeric_literal + + mantissa: + + + + + + + + exact_numeric_literal + + + + + + referenced by: + + approximate_numeric_literal + + exponent: + + + + + + + + signed_integer + + + + + + referenced by: + + approximate_numeric_literal + + signed_integer: + + + + + + + + sign + + + unsigned_integer + + + + +
             ::= sign? unsigned_integer
    +
    + referenced by: + + exponent + + unsigned_integer: + + + + + + + + digit + + . + + + . + + + . + + + + + +
             ::= digit . . .
    +
    + referenced by: + + array_type + datetime_value + exact_numeric_literal + goto_target + high_value + interval_fractional_seconds_precision + interval_leading_field_precision + large_object_length + length + low_value + maximum_dynamic_result_sets + precision + scale + seconds_fraction + seconds_integer_value + signed_integer + time_fractional_seconds_precision + + datetime_literal: + + + + + + + + date_literal + + + time_literal + + + timestamp_literal + + + + +
             ::= date_literal
    +
               | time_literal
    +
               | timestamp_literal
    +
    + referenced by: + + general_literal + + date_literal: + + + + + + + + DATE + + + date_string + + + + +
             ::= 'DATE' date_string
    +
    + referenced by: + + datetime_literal + + time_literal: + + + + + + + + TIME + + + time_string + + + + +
             ::= 'TIME' time_string
    +
    + referenced by: + + datetime_literal + + timestamp_literal: + + + + + + + + TIMESTAMP + + + timestamp_string + + + + +
             ::= 'TIMESTAMP' timestamp_string
    +
    + referenced by: + + datetime_literal + + date_string: + + + + + + + + ' + + + unquoted_date_string + + ' + + + + + +
             ::= "'" unquoted_date_string "'"
    +
    + referenced by: + + date_literal + delimiter_token + + time_string: + + + + + + + + ' + + + unquoted_time_string + + ' + + + + + +
             ::= "'" unquoted_time_string "'"
    +
    + referenced by: + + delimiter_token + time_literal + + timestamp_string: + + + + + + + + ' + + + unquoted_timestamp_string + + ' + + + + + +
             ::= "'" unquoted_timestamp_string "'"
    +
    + referenced by: + + delimiter_token + timestamp_literal + + time_zone_interval: + + + + + + + + sign + + + hours_value + + : + + + minutes_value + + + + +
             ::= sign hours_value ':' minutes_value
    +
    + referenced by: + + unquoted_time_string + + date_value: + + + + + + + + years_value + + - + + + months_value + + - + + + days_value + + + + +
             ::= years_value '-' months_value '-' days_value
    +
    + referenced by: + + unquoted_date_string + + time_value: + + + + + + + + hours_value + + : + + + minutes_value + + : + + + seconds_value + + + + +
             ::= hours_value ':' minutes_value ':' seconds_value
    +
    + referenced by: + + unquoted_time_string + + interval_literal: + + + + + + + + INTERVAL + + + sign + + + interval_string + + + interval_qualifier + + + + +
             ::= 'INTERVAL' sign? interval_string interval_qualifier
    +
    + referenced by: + + general_literal + + interval_string: + + + + + + + + ' + + + unquoted_interval_string + + ' + + + + + +
             ::= "'" unquoted_interval_string "'"
    +
    + referenced by: + + delimiter_token + interval_literal + + unquoted_date_string: + + + + + + + + date_value + + + + +
             ::= date_value
    +
    + referenced by: + + date_string + unquoted_timestamp_string + + unquoted_time_string: + + + + + + + + time_value + + + time_zone_interval + + + + +
             ::= time_value time_zone_interval?
    +
    + referenced by: + + time_string + unquoted_timestamp_string + + unquoted_timestamp_string: + + + + + + + + unquoted_date_string + + + space + + + unquoted_time_string + + + + + + + referenced by: + + timestamp_string + + unquoted_interval_string: + + + + + + + + sign + + + year_month_literal + + + day_time_literal + + + + +
             ::= sign? ( year_month_literal | day_time_literal )
    +
    + referenced by: + + interval_string + + year_month_literal: + + + + + + + + years_value + + - + + + months_value + + + + +
             ::= years_value ( '-'? months_value )?
    +
    + referenced by: + + unquoted_interval_string + + day_time_literal: + + + + + + + + day_time_interval + + + time_interval + + + + +
             ::= day_time_interval
    +
               | time_interval
    +
    + referenced by: + + unquoted_interval_string + + day_time_interval: + + + + + + + + days_value + + + space + + + hours_value + + : + + + minutes_value + + : + + + seconds_value + + + + +
             ::= days_value ( space hours_value ( ':' minutes_value ( ':' seconds_value )? )? )?
    +
    + referenced by: + + day_time_literal + + time_interval: + + + + + + + + hours_value + + : + + + minutes_value + + : + + + seconds_value + + + minutes_value + + : + + + seconds_value + + + seconds_value + + + + +
             ::= hours_value ( ':' minutes_value ( ':' seconds_value )? )?
    +
               | minutes_value ( ':' seconds_value )?
    +
               | seconds_value
    +
    + referenced by: + + day_time_literal + + years_value: + + + + + + + + datetime_value + + + + +
             ::= datetime_value
    +
    + referenced by: + + date_value + year_month_literal + + months_value: + + + + + + + + datetime_value + + + + +
             ::= datetime_value
    +
    + referenced by: + + date_value + year_month_literal + + days_value: + + + + + + + + datetime_value + + + + +
             ::= datetime_value
    +
    + referenced by: + + date_value + day_time_interval + + hours_value: + + + + + + + + datetime_value + + + + +
             ::= datetime_value
    +
    + referenced by: + + day_time_interval + time_interval + time_value + time_zone_interval + + minutes_value: + + + + + + + + datetime_value + + + + +
             ::= datetime_value
    +
    + referenced by: + + day_time_interval + time_interval + time_value + time_zone_interval + + seconds_value: + + + + + + + + seconds_integer_value + + . + + + seconds_fraction + + + + +
             ::= seconds_integer_value ( '.' seconds_fraction? )?
    +
    + referenced by: + + day_time_interval + time_interval + time_value + + seconds_integer_value: + + + + + + + + unsigned_integer + + + + +
             ::= unsigned_integer
    +
    + referenced by: + + seconds_value + + seconds_fraction: + + + + + + + + unsigned_integer + + + + +
             ::= unsigned_integer
    +
    + referenced by: + + seconds_value + + datetime_value: + + + + + + + + unsigned_integer + + + + +
             ::= unsigned_integer
    +
    + referenced by: + + days_value + hours_value + minutes_value + months_value + years_value + + boolean_literal: + + + + + + + + TRUE + + + FALSE + + + UNKNOWN + + + + + +
             ::= 'TRUE'
    +
               | 'FALSE'
    +
               | 'UNKNOWN'
    +
    + referenced by: + + general_literal + + identifier: + + + + + + + + actual_identifier + + + + +
             ::= actual_identifier
    +
    + referenced by: + + SQL_client_module_name + SQL_parameter_name + asterisked_identifier + attribute_name + cast_to_distinct_identifier + cast_to_ref_identifier + cast_to_source_identifier + cast_to_type_identifier + catalog_name + column_name + correlation_name + external_routine_name + field_name + group_name + host_parameter_name + identifier_chain + method_name + new_values_table_alias + old_values_table_alias + procedure_name + qualified_identifier + query_name + regular_character_set_identifier + role_name + savepoint_name + statement_name + user_identifier + window_name + + actual_identifier: + + + + + + + + regular_identifier + + + delimited_identifier + + + + +
             ::= regular_identifier
    +
               | delimited_identifier
    +
    + referenced by: + + identifier + + SQL_language_identifier: + + + + + + + + SQL_language_identifier_start + + _ + + + SQL_language_identifier_part + + + + + + + referenced by: + + character_set_name + + SQL_language_identifier_start: + + + + + + + + simple_Latin_letter + + + + +
             ::= simple_Latin_letter
    +
    + referenced by: + + SQL_language_identifier + + SQL_language_identifier_part: + + + + + + + + simple_Latin_letter + + + digit + + + + +
             ::= simple_Latin_letter
    +
               | digit
    +
    + referenced by: + + SQL_language_identifier + + authorization_identifier: + + + + + + + + role_name + + + user_identifier + + + + +
             ::= role_name
    +
               | user_identifier
    +
    + referenced by: + + grantee + module_authorization_identifier + schema_authorization_identifier + + table_name: + + + + + + + + local_or_schema_qualified_name + + + + +
             ::= local_or_schema_qualified_name
    +
    + referenced by: + + alter_table_statement + drop_table_statement + drop_view_statement + insertion_target + like_clause + object_name + referenced_table_and_columns + scope_clause + subview_clause + supertable_name + table_definition + table_or_query_name + target_table + temporary_table_declaration + trigger_definition + view_definition + + domain_name: + + + + + + + + schema_qualified_name + + + + +
             ::= schema_qualified_name
    +
    + referenced by: + + alter_domain_statement + cast_target + column_definition + domain_definition + drop_domain_statement + object_name + + schema_name: + + + + + + + + catalog_name + + . + + + unqualified_schema_name + + + + +
             ::= ( catalog_name '.' )? unqualified_schema_name
    +
    + referenced by: + + character_set_name + drop_schema_statement + embedded_authorization_clause + local_or_schema_qualifier + module_authorization_clause + routine_name + schema_name_clause + schema_name_list + schema_qualified_name + schema_qualified_type_name + specific_method_name + + catalog_name: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + schema_name + + schema_qualified_name: + + + + + + + + schema_name + + . + + + qualified_identifier + + + + +
             ::= ( schema_name '.' )? qualified_identifier
    +
    + referenced by: + + collation_name + constraint_name + domain_name + schema_qualified_routine_name + sequence_generator_name + specific_name + transcoding_name + transliteration_name + trigger_name + + local_or_schema_qualified_name: + + + + + + + + local_or_schema_qualifier + + . + + + qualified_identifier + + + + +
             ::= ( local_or_schema_qualifier '.' )? qualified_identifier
    +
    + referenced by: + + table_name + + local_or_schema_qualifier: + + + + + + + + schema_name + + MODULE + + + + + +
             ::= schema_name
    +
               | 'MODULE'
    +
    + referenced by: + + local_or_schema_qualified_name + + qualified_identifier: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + attribute_or_method_reference + column_reference + local_or_schema_qualified_name + local_qualified_name + routine_name + schema_qualified_name + schema_qualified_type_name + + column_name: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + alter_column_definition + as_clause + column_definition + column_name_list + column_options + column_reference + cycle_column + cycle_mark_column + drop_column_definition + object_column + path_column + self_referencing_column_name + sequence_column + table_function_column_list_element + view_column_option + + correlation_name: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + merge_correlation_name + new_values_correlation_name + old_values_correlation_name + table_primary + + query_name: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + table_or_query_name + with_list_element + + SQL_client_module_name: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + module_name_clause + + procedure_name: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + externally_invoked_procedure + + schema_qualified_routine_name: + + + + + + + + schema_qualified_name + + + + +
             ::= schema_qualified_name
    +
    + referenced by: + + SQL_invoked_procedure + function_specification + member_name_alternatives + + method_name: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + direct_invocation + generalized_invocation + member_name_alternatives + method_reference + method_specification_designator + mutated_set_clause + partial_method_specification + specific_method_specification_designator + static_method_invocation + + specific_name: + + + + + + + + schema_qualified_name + + + + +
             ::= schema_qualified_name
    +
    + referenced by: + + routine_characteristic + specific_routine_designator + state_category + + cursor_name: + + + + + + + + local_qualified_name + + + + +
             ::= local_qualified_name
    +
    + referenced by: + + close_statement + declare_cursor + delete_statement__positioned + dynamic_cursor_name + dynamic_declare_cursor + fetch_statement + open_statement + preparable_dynamic_delete_statement__positioned + preparable_dynamic_update_statement__positioned + update_statement__positioned + + local_qualified_name: + + + + + + + + MODULE + + + . + + + qualified_identifier + + + + +
             ::= ( 'MODULE' '.' )? qualified_identifier
    +
    + referenced by: + + cursor_name + + host_parameter_name: + + + + + + + + : + + + identifier + + + + +
             ::= ':' identifier
    +
    + referenced by: + + host_parameter_declaration + host_parameter_specification + indicator_parameter + locator_reference + simple_value_specification + + SQL_parameter_name: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + SQL_parameter_declaration + + constraint_name: + + + + + + + + schema_qualified_name + + + + +
             ::= schema_qualified_name
    +
    + referenced by: + + SQL_condition + assertion_definition + constraint_name_definition + constraint_name_list + drop_assertion_statement + drop_domain_constraint_definition + drop_table_constraint_definition + + external_routine_name: + + + + + + + + identifier + + + character_string_literal + + + + +
             ::= identifier
    +
               | character_string_literal
    +
    + referenced by: + + alter_routine_characteristic + external_body_reference + + trigger_name: + + + + + + + + schema_qualified_name + + + + +
             ::= schema_qualified_name
    +
    + referenced by: + + drop_trigger_statement + trigger_definition + + collation_name: + + + + + + + + schema_qualified_name + + + + +
             ::= schema_qualified_name
    +
    + referenced by: + + collate_clause + collation_definition + drop_collation_statement + existing_collation_name + module_collation_specification + object_name + + character_set_name: + + + + + + + + schema_name + + . + + + SQL_language_identifier + + + + +
             ::= ( schema_name '.' )? SQL_language_identifier
    +
    + referenced by: + + character_set_definition + drop_character_set_statement + implementation_defined_character_set_name + object_name + standard_character_set_name + user_defined_character_set_name + + transliteration_name: + + + + + + + + schema_qualified_name + + + + +
             ::= schema_qualified_name
    +
    + referenced by: + + character_transliteration + drop_transliteration_statement + existing_transliteration_name + object_name + transliteration_definition + + transcoding_name: + + + + + + + + schema_qualified_name + + + + +
             ::= schema_qualified_name
    +
    + referenced by: + + transcoding + + user_defined_type_name: + + + + + + + + schema_qualified_type_name + + + + +
             ::= schema_qualified_type_name
    +
    + referenced by: + + path_resolved_user_defined_type_name + schema_resolved_user_defined_type_name + + schema_resolved_user_defined_type_name: + + + + + + + + user_defined_type_name + + + + +
             ::= user_defined_type_name
    +
    + referenced by: + + alter_transform_statement + alter_type_statement + drop_data_type_statement + drop_transform_statement + drop_user_defined_ordering_statement + method_specification_designator + object_name + specific_routine_designator + transform_definition + user_defined_ordering_definition + user_defined_type_body + + schema_qualified_type_name: + + + + + + + + schema_name + + . + + + qualified_identifier + + + + +
             ::= ( schema_name '.' )? qualified_identifier
    +
    + referenced by: + + user_defined_type_name + + attribute_name: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + attribute_definition + dereference_operation + drop_attribute_definition + list_of_attributes + + field_name: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + field_definition + field_reference + + savepoint_name: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + savepoint_specifier + + sequence_generator_name: + + + + + + + + schema_qualified_name + + + + +
             ::= schema_qualified_name
    +
    + referenced by: + + alter_sequence_generator_statement + drop_sequence_generator_statement + next_value_expression + object_name + sequence_generator_definition + + role_name: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + authorization_identifier + drop_role_statement + role_definition + role_granted + role_revoked + + user_identifier: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + authorization_identifier + + connection_name: + + + + + + + + simple_value_specification + + + + +
             ::= simple_value_specification
    +
    + referenced by: + + connection_object + connection_target + + SQL_server_name: + + + + + + + + simple_value_specification + + + + +
             ::= simple_value_specification
    +
    + referenced by: + + connection_target + + connection_user_name: + + + + + + + + simple_value_specification + + + + +
             ::= simple_value_specification
    +
    + referenced by: + + connection_target + + SQL_statement_name: + + + + + + + + statement_name + + + extended_statement_name + + + + +
             ::= statement_name
    +
               | extended_statement_name
    +
    + referenced by: + + deallocate_prepared_statement + describe_input_statement + described_object + execute_statement + prepare_statement + + statement_name: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + SQL_statement_name + dynamic_declare_cursor + + extended_statement_name: + + + + + + + + scope_option + + + simple_value_specification + + + + + + + referenced by: + + SQL_statement_name + statement_cursor + + dynamic_cursor_name: + + + + + + + + cursor_name + + + extended_cursor_name + + + + +
             ::= cursor_name
    +
               | extended_cursor_name
    +
    + referenced by: + + dynamic_close_statement + dynamic_delete_statement__positioned + dynamic_fetch_statement + dynamic_open_statement + dynamic_update_statement__positioned + + extended_cursor_name: + + + + + + + + scope_option + + + simple_value_specification + + + + + + + referenced by: + + allocate_cursor_statement + described_object + dynamic_cursor_name + + descriptor_name: + + + + + + + + scope_option + + + simple_value_specification + + + + + + + referenced by: + + allocate_descriptor_statement + deallocate_descriptor_statement + get_descriptor_statement + into_descriptor + set_descriptor_statement + using_descriptor + + scope_option: + + + + + + + + GLOBAL + + + LOCAL + + + + + +
             ::= 'GLOBAL'
    +
               | 'LOCAL'
    +
    + referenced by: + + descriptor_name + extended_cursor_name + extended_statement_name + preparable_dynamic_delete_statement__positioned + preparable_dynamic_update_statement__positioned + + window_name: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + existing_window_name + new_window_name + window_name_or_specification + + data_type: + + + + + + + + predefined_type + + + row_type + + + path_resolved_user_defined_type_name + + + reference_type + + + collection_type + + + + +
             ::= predefined_type
    +
               | row_type
    +
               | path_resolved_user_defined_type_name
    +
               | reference_type
    +
               | collection_type
    +
    + referenced by: + + array_type + attribute_definition + cast_target + column_definition + data_type_list + domain_definition + field_definition + generalized_invocation + host_parameter_data_type + multiset_type + parameter_type + result_cast_from_type + returns_data_type + sequence_generator_data_type_option + source_data_type + table_function_column_list_element + target_data_type + + predefined_type: + + + + + + + + character_string_type + + CHARACTER + + + SET + + + character_set_specification + + + national_character_string_type + + + collate_clause + + + binary_large_object_string_type + + + numeric_type + + BOOLEAN + + + datetime_type + + + interval_type + + + + + +
               | binary_large_object_string_type
    +
               | numeric_type
    +
               | 'BOOLEAN'
    +
               | datetime_type
    +
               | interval_type
    +
    + referenced by: + + Ada_user_defined_type_variable + COBOL_user_defined_type_variable + C_user_defined_type_variable + Fortran_user_defined_type_variable + MUMPS_user_defined_type_variable + PL_I_user_defined_type_variable + Pascal_user_defined_type_variable + data_type + representation + user_defined_representation + + character_string_type: + + + + + + + + CHARACTER + + + CHAR + + + VARYING + + + ( + + + length + + ) + + + LARGE + + + OBJECT* + + + ( + + + large_object_length + + ) + + + VARCHAR + + + ( + + + length + + ) + + + CLOB + + + ( + + + large_object_length + + ) + + + + + +
             ::= ( 'CHARACTER' | 'CHAR' ) ( 'VARYING'? '(' length ')' | 'LARGE' 'OBJECT*' ( '(' large_object_length ')' )? )?
    +
               | 'VARCHAR' '(' length ')'
    +
               | 'CLOB' ( '(' large_object_length ')' )?
    +
    + referenced by: + + predefined_type + + national_character_string_type: + + + + + + + + NATIONAL + + + CHARACTER + + + VARYING + + + ( + + + length + + ) + + + LARGE + + + OBJECT* + + + ( + + + large_object_length + + ) + + + CHAR + + + VARYING + + + ( + + + length + + ) + + + NCHAR + + + VARYING + + + ( + + + length + + ) + + + LARGE + + + OBJECT* + + + ( + + + large_object_length + + ) + + + NCLOB + + + ( + + + large_object_length + + ) + + + + + +
             ::= 'NATIONAL' ( 'CHARACTER' ( 'VARYING'? '(' length ')' | 'LARGE' 'OBJECT*' ( '(' large_object_length ')' )? )? | 'CHAR' ( 'VARYING'? '(' length ')' )? )
    +
               | 'NCHAR' ( 'VARYING'? '(' length ')' | 'LARGE' 'OBJECT*' ( '(' large_object_length ')' )? )?
    +
               | 'NCLOB' ( '(' large_object_length ')' )?
    +
    + referenced by: + + predefined_type + + binary_large_object_string_type: + + + + + + + + BINARY + + + LARGE + + + OBJECT* + + + BLOB + + + ( + + + large_object_length + + ) + + + + + +
             ::= ( 'BINARY' 'LARGE' 'OBJECT*' | 'BLOB' ) ( '(' large_object_length ')' )?
    +
    + referenced by: + + predefined_type + + numeric_type: + + + + + + + + exact_numeric_type + + + approximate_numeric_type + + + + +
             ::= exact_numeric_type
    +
               | approximate_numeric_type
    +
    + referenced by: + + predefined_type + + exact_numeric_type: + + + + + + + + NUMERIC + + + DECIMAL + + + DEC + + + ( + + + precision + + , + + + scale + + ) + + + SMALLINT + + + INTEGER + + + INT + + + BIGINT + + + + + +
             ::= ( 'NUMERIC' | 'DECIMAL' | 'DEC' ) ( '(' precision ( ',' scale )? ')' )?
    +
               | 'SMALLINT'
    +
               | 'INTEGER'
    +
               | 'INT'
    +
               | 'BIGINT'
    +
    + referenced by: + + numeric_type + + approximate_numeric_type: + + + + + + + + FLOAT + + + ( + + + precision + + ) + + + REAL + + + DOUBLE + + + PRECISION + + + + + +
             ::= 'FLOAT' ( '(' precision ')' )?
    +
               | 'REAL'
    +
               | 'DOUBLE' 'PRECISION'
    +
    + referenced by: + + numeric_type + + length: + + + + + + + + unsigned_integer + + + + + + referenced by: + + Ada_qualified_type_specification + Ada_unqualified_type_specification + COBOL_character_type + COBOL_national_character_type + COBOL_nines + C_array_specification + Fortran_type_specification + MUMPS_length_specification + PL_I_type_specification + Pascal_type_specification + character_string_type + national_character_string_type + + large_object_length: + + + + + + + + unsigned_integer + + + multiplier + + + large_object_length_token + + + char_length_units + + + + + + + referenced by: + + Ada_BLOB_variable + Ada_CLOB_variable + COBOL_BLOB_variable + COBOL_CLOB_variable + COBOL_NCLOB_variable + C_BLOB_variable + C_CLOB_variable + C_NCLOB_variable + Fortran_BLOB_variable + Fortran_CLOB_variable + MUMPS_BLOB_variable + MUMPS_CLOB_variable + PL_I_BLOB_variable + PL_I_CLOB_variable + Pascal_BLOB_variable + Pascal_CLOB_variable + binary_large_object_string_type + character_string_type + national_character_string_type + + char_length_units: + + + + + + + + CHARACTERS* + + + CODE_UNITS* + + + OCTETS* + + + + + +
             ::= 'CHARACTERS*'
    +
               | 'CODE_UNITS*'
    +
               | 'OCTETS*'
    +
    + referenced by: + + char_length_expression + character_overlay_function + character_substring_function + large_object_length + string_position_expression + + precision: + + + + + + + + unsigned_integer + + + + +
             ::= unsigned_integer
    +
    + referenced by: + + MUMPS_type_specification + PL_I_type_specification + approximate_numeric_type + exact_numeric_type + + scale: + + + + + + + + unsigned_integer + + + + + + referenced by: + + MUMPS_type_specification + PL_I_type_specification + exact_numeric_type + + datetime_type: + + + + + + + + DATE + + + TIME + + + ( + + + time_precision + + ) + + + TIMESTAMP + + + ( + + + timestamp_precision + + ) + + + with_or_without_time_zone + + + + +
             ::= 'DATE'
    +
               | ( 'TIME' ( '(' time_precision ')' )? | 'TIMESTAMP' ( '(' timestamp_precision ')' )? ) with_or_without_time_zone?
    +
    + referenced by: + + predefined_type + + with_or_without_time_zone: + + + + + + + + WITH + + + WITHOUT + + + TIME + + + ZONE* + + + + + +
             ::= ( 'WITH' | 'WITHOUT' ) 'TIME' 'ZONE*'
    +
    + referenced by: + + datetime_type + + time_precision: + + + + + + + + time_fractional_seconds_precision + + + + +
             ::= time_fractional_seconds_precision
    +
    + referenced by: + + current_local_time_value_function + current_time_value_function + datetime_type + + timestamp_precision: + + + + + + + + time_fractional_seconds_precision + + + + +
             ::= time_fractional_seconds_precision
    +
    + referenced by: + + current_local_timestamp_value_function + current_timestamp_value_function + datetime_type + + time_fractional_seconds_precision: + + + + + + + + unsigned_integer + + + + +
             ::= unsigned_integer
    +
    + referenced by: + + time_precision + timestamp_precision + + interval_type: + + + + + + + + INTERVAL + + + interval_qualifier + + + + +
             ::= 'INTERVAL' interval_qualifier
    +
    + referenced by: + + predefined_type + + row_type: + + + + + + + + ROW + + + row_type_body + + + + + + referenced by: + + data_type + + row_type_body: + + + + + + + + ( + + + field_definition + + , + + + ) + + + + + +
             ::= '(' field_definition ( ',' field_definition )* ')'
    +
    + referenced by: + + row_type + + reference_type: + + + + + + + + REF + + + ( + + + referenced_type + + ) + + + scope_clause + + + + +
             ::= 'REF' '(' referenced_type ')' scope_clause?
    +
    + referenced by: + + Ada_REF_variable + COBOL_REF_variable + C_REF_variable + Fortran_REF_variable + MUMPS_REF_variable + PL_I_REF_variable + Pascal_REF_variable + data_type + target_subtype + + scope_clause: + + + + + + + + SCOPE + + + table_name + + + + +
             ::= SCOPE table_name
    +
    + referenced by: + + add_column_scope_clause + column_option_list + reference_type + view_column_option + + referenced_type: + + + + + + + + path_resolved_user_defined_type_name + + + + + + + referenced by: + + reference_type + + path_resolved_user_defined_type_name: + + + + + + + + user_defined_type_name + + + + +
             ::= user_defined_type_name
    +
    + referenced by: + + Ada_user_defined_type_locator_variable + Ada_user_defined_type_variable + COBOL_user_defined_type_locator_variable + COBOL_user_defined_type_variable + C_user_defined_type_locator_variable + C_user_defined_type_variable + Fortran_user_defined_type_locator_variable + Fortran_user_defined_type_variable + MUMPS_user_defined_type_locator_variable + MUMPS_user_defined_type_variable + PL_I_user_defined_type_locator_variable + PL_I_user_defined_type_variable + Pascal_user_defined_type_locator_variable + Pascal_user_defined_type_variable + data_type + exclusive_user_defined_type_specification + general_value_specification + generalized_expression + group_specification + inclusive_user_defined_type_specification + referenceable_view_specification + referenced_type + static_method_invocation + supertype_name + table_contents_source + target_subtype + transform_group_characteristic + + collection_type: + + + + + + + + array_type + + + multiset_type + + + + +
             ::= array_type
    +
               | multiset_type
    +
    + referenced by: + + data_type + + array_type: + + + + + + + + data_type + + ARRAY + + + left_bracket_or_trigraph + + + unsigned_integer + + + right_bracket_or_trigraph + + + + + + + referenced by: + + Ada_array_locator_variable + COBOL_array_locator_variable + C_array_locator_variable + Fortran_array_locator_variable + MUMPS_array_locator_variable + PL_I_array_locator_variable + Pascal_array_locator_variable + collection_type + + multiset_type: + + + + + + + + data_type + + MULTISET + + + + + +
             ::= data_type 'MULTISET'
    +
    + referenced by: + + Ada_multiset_locator_variable + COBOL_multiset_locator_variable + C_multiset_locator_variable + Fortran_multiset_locator_variable + MUMPS_multiset_locator_variable + PL_I_multiset_locator_variable + Pascal_multiset_locator_variable + collection_type + + field_definition: + + + + + + + + field_name + + + data_type + + + reference_scope_check + + + + + + + referenced by: + + row_type_body + + value_expression_primary: + + + + + + + + parenthesized_value_expression + + + nonparenthesized_value_expression_primary + + + + +
             ::= parenthesized_value_expression
    +
    +
    + referenced by: + + all_fields_reference + array_factor + attribute_or_method_reference + blob_primary + character_primary + datetime_primary + direct_invocation + field_reference + generalized_invocation + interval_primary + method_reference + multiset_primary + numeric_primary + reference_value_expression + user_defined_type_value_expression + + parenthesized_value_expression: + + + + + + + + ( + + + value_expression + + ) + + + + + +
             ::= '(' value_expression ')'
    +
    + referenced by: + + value_expression_primary + + nonparenthesized_value_expression_primary: + + + + + + + + unsigned_value_specification + + + column_reference + + + set_function_specification + + + window_function + + + scalar_subquery + + + case_expression + + + cast_specification + + + field_reference + + + subtype_treatment + + + method_invocation + + + static_method_invocation + + + new_specification + + + attribute_or_method_reference + + + reference_resolution + + + collection_value_constructor + + + array_element_reference + + + multiset_element_reference + + + routine_invocation + + + next_value_expression + + + + +
             ::= unsigned_value_specification
    +
               | column_reference
    +
               | set_function_specification
    +
               | window_function
    +
               | scalar_subquery
    +
               | case_expression
    +
               | cast_specification
    +
               | field_reference
    +
               | subtype_treatment
    +
               | method_invocation
    +
               | static_method_invocation
    +
               | new_specification
    +
               | attribute_or_method_reference
    +
               | reference_resolution
    +
               | collection_value_constructor
    +
               | array_element_reference
    +
               | multiset_element_reference
    +
               | routine_invocation
    +
               | next_value_expression
    +
    + referenced by: + + boolean_predicand + row_value_special_case + value_expression_primary + + value_specification: + + + + + + + + literal + + + general_value_specification + + + + +
             ::= literal
    +
               | general_value_specification
    +
    + referenced by: + + SQL_path_characteristic + catalog_name_characteristic + character_set_name_characteristic + collation_specification + role_specification + schema_name_characteristic + set_session_user_identifier_statement + transform_group_characteristic + + unsigned_value_specification: + + + + + + + + unsigned_literal + + + general_value_specification + + + + +
             ::= unsigned_literal
    +
               | general_value_specification
    +
    + referenced by: + + nonparenthesized_value_expression_primary + window_frame_following + window_frame_preceding + + general_value_specification: + + + + + + + + host_parameter_specification + + + SQL_parameter_reference + + ? + + + embedded_variable_specification + + + current_collation_specification + + CURRENT_DEFAULT_TRANSFORM_GROUP + + + CURRENT_PATH + + + CURRENT_ROLE + + + CURRENT_TRANSFORM_GROUP_FOR_TYPE + + + path_resolved_user_defined_type_name + + CURRENT_USER + + + SESSION_USER + + + SYSTEM_USER + + + USER + + + VALUE + + + + + +
             ::= host_parameter_specification
    +
               | SQL_parameter_reference
    +
               | '?'
    +
               | embedded_variable_specification
    +
               | current_collation_specification
    +
               | 'CURRENT_DEFAULT_TRANSFORM_GROUP'
    +
               | 'CURRENT_PATH'
    +
               | 'CURRENT_ROLE'
    +
               | 'CURRENT_TRANSFORM_GROUP_FOR_TYPE' path_resolved_user_defined_type_name
    +
               | 'CURRENT_USER'
    +
               | 'SESSION_USER'
    +
               | 'SYSTEM_USER'
    +
               | 'USER'
    +
               | 'VALUE'
    +
    + referenced by: + + unsigned_value_specification + using_argument + value_specification + + simple_value_specification: + + + + + + + + literal + + + host_parameter_name + + + SQL_parameter_reference + + + embedded_variable_name + + + + +
             ::= literal
    +
               | host_parameter_name
    +
               | SQL_parameter_reference
    +
               | embedded_variable_name
    +
    + referenced by: + + SQL_server_name + SQL_statement_variable + attributes_variable + condition_number + connection_name + connection_user_name + descriptor_name + extended_cursor_name + extended_statement_name + fetch_orientation + item_number + number_of_conditions + occurrences + simple_value_specification_1 + simple_value_specification_2 + target_array_element_specification + update_target + + target_specification: + + + + + + + + host_parameter_specification + + + SQL_parameter_reference + + + column_reference + + + target_array_element_specification + + ? + + + embedded_variable_specification + + + + +
             ::= host_parameter_specification
    +
               | SQL_parameter_reference
    +
               | column_reference
    +
               | target_array_element_specification
    +
               | '?'
    +
               | embedded_variable_specification
    +
    + referenced by: + + SQL_argument + fetch_target_list + into_argument + select_target_list + + simple_target_specification: + + + + + + + + host_parameter_specification + + + SQL_parameter_reference + + + column_reference + + + embedded_variable_name + + + + +
             ::= host_parameter_specification
    +
               | SQL_parameter_reference
    +
               | column_reference
    +
               | embedded_variable_name
    +
    + referenced by: + + condition_information_item + simple_target_specification_1 + simple_target_specification_2 + statement_information_item + + host_parameter_specification: + + + + + + + + host_parameter_name + + + indicator_parameter + + + + + + + referenced by: + + general_value_specification + simple_target_specification + target_specification + + embedded_variable_specification: + + + + + + + + embedded_variable_name + + + indicator_variable + + + + + + + referenced by: + + general_value_specification + target_specification + + indicator_variable: + + + + + + + + INDICATOR + + + embedded_variable_name + + + + +
             ::= 'INDICATOR'? embedded_variable_name
    +
    + referenced by: + + embedded_variable_specification + + indicator_parameter: + + + + + + + + INDICATOR + + + host_parameter_name + + + + +
             ::= 'INDICATOR'? host_parameter_name
    +
    + referenced by: + + host_parameter_specification + + target_array_element_specification: + + + + + + + + target_array_reference + + + left_bracket_or_trigraph + + + simple_value_specification + + + right_bracket_or_trigraph + + + + + + + referenced by: + + target_specification + + target_array_reference: + + + + + + + + SQL_parameter_reference + + + column_reference + + + + +
             ::= SQL_parameter_reference
    +
               | column_reference
    +
    + referenced by: + + target_array_element_specification + + current_collation_specification: + + + + + + + + CURRENT_COLLATION* + + + ( + + + string_value_expression + + ) + + + + + +
             ::= 'CURRENT_COLLATION*' '(' string_value_expression ')'
    +
    + referenced by: + + general_value_specification + + contextually_typed_value_specification: + + + + + + + + implicitly_typed_value_specification + + DEFAULT + + + + + + +
               | 'DEFAULT'
    +
    + referenced by: + + contextually_typed_row_value_constructor + contextually_typed_row_value_constructor_element + merge_insert_value_element + update_source + + implicitly_typed_value_specification: + + + + + + + + NULL + + + empty_specification + + + + +
             ::= 'NULL'
    +
               | empty_specification
    +
    + referenced by: + + cast_operand + contextually_typed_value_specification + default_option + + empty_specification: + + + + + + + + ARRAY + + + MULTISET + + + left_bracket_or_trigraph + + + right_bracket_or_trigraph + + + + +
             ::= ( 'ARRAY' | 'MULTISET' ) left_bracket_or_trigraph right_bracket_or_trigraph
    +
    + referenced by: + + implicitly_typed_value_specification + + identifier_chain: + + + + + + + + identifier + + . + + + + + +
             ::= identifier ( '.' identifier )*
    +
    + referenced by: + + basic_identifier_chain + + basic_identifier_chain: + + + + + + + + identifier_chain + + + + +
             ::= identifier_chain
    +
    + referenced by: + + SQL_parameter_reference + column_reference + + column_reference: + + + + + + + + basic_identifier_chain + + MODULE + + + . + + + qualified_identifier + + . + + + column_name + + + + +
             ::= basic_identifier_chain
    +
               | 'MODULE' '.' qualified_identifier '.' column_name
    +
    + referenced by: + + grouping_column_reference + grouping_operation + nonparenthesized_value_expression_primary + simple_target_specification + target_array_reference + target_specification + window_partition_column_reference + + SQL_parameter_reference: + + + + + + + + basic_identifier_chain + + + + +
             ::= basic_identifier_chain
    +
    + referenced by: + + general_value_specification + simple_target_specification + simple_value_specification + target_array_reference + target_specification + + set_function_specification: + + + + + + + + aggregate_function + + + grouping_operation + + + + +
             ::= aggregate_function
    +
               | grouping_operation
    +
    + referenced by: + + nonparenthesized_value_expression_primary + + grouping_operation: + + + + + + + + GROUPING + + + ( + + + column_reference + + , + + + ) + + + + + +
             ::= 'GROUPING' '(' column_reference ( ',' column_reference )* ')'
    +
    + referenced by: + + set_function_specification + + window_function: + + + + + + + + window_function_type + + OVER + + + window_name_or_specification + + + + + + + referenced by: + + nonparenthesized_value_expression_primary + + window_function_type: + + + + + + + + rank_function_type + + ROW_NUMBER* + + + ( + + + ) + + + aggregate_function + + + + +
             ::= ( rank_function_type | 'ROW_NUMBER*' ) '(' ')'
    +
               | aggregate_function
    +
    + referenced by: + + window_function + + rank_function_type: + + + + + + + + RANK* + + + DENSE_RANK* + + + PERCENT_RANK* + + + CUME_DIST* + + + + + +
             ::= 'RANK*'
    +
               | 'DENSE_RANK*'
    +
               | 'PERCENT_RANK*'
    +
               | 'CUME_DIST*'
    +
    + referenced by: + + hypothetical_set_function + window_function_type + + window_name_or_specification: + + + + + + + + window_name + + + in_line_window_specification + + + + +
             ::= window_name
    +
               | in_line_window_specification
    +
    + referenced by: + + window_function + + in_line_window_specification: + + + + + + + + window_specification + + + + +
             ::= window_specification
    +
    + referenced by: + + window_name_or_specification + + case_expression: + + + + + + + + case_abbreviation + + + case_specification + + + + +
             ::= case_abbreviation
    +
               | case_specification
    +
    + referenced by: + + nonparenthesized_value_expression_primary + + case_abbreviation: + + + + + + + + NULLIF* + + + ( + + + value_expression + + , + + + COALESCE* + + + ( + + + value_expression + + , + + + value_expression + + ) + + + + + +
             ::= ( 'NULLIF*' '(' value_expression ',' | 'COALESCE*' '(' ( value_expression ',' )* ) value_expression ')'
    +
    + referenced by: + + case_expression + + case_specification: + + + + + + + + simple_case + + + searched_case + + + + +
             ::= simple_case
    +
               | searched_case
    +
    + referenced by: + + case_expression + + simple_case: + + + + + + + + CASE + + + case_operand + + + simple_when_clause + + + else_clause + + END + + + + + +
             ::= 'CASE' case_operand simple_when_clause else_clause? 'END'
    +
    + referenced by: + + case_specification + + searched_case: + + + + + + + + CASE + + + searched_when_clause + + + else_clause + + END + + + + + +
             ::= 'CASE' searched_when_clause else_clause? 'END'
    +
    + referenced by: + + case_specification + + simple_when_clause: + + + + + + + + WHEN + + + when_operand + + THEN + + + result + + + + +
             ::= 'WHEN' when_operand 'THEN' result
    +
    + referenced by: + + simple_case + + searched_when_clause: + + + + + + + + WHEN + + + search_condition + + THEN + + + result + + + + +
             ::= 'WHEN' search_condition 'THEN' result
    +
    + referenced by: + + searched_case + + else_clause: + + + + + + + + ELSE + + + result + + + + +
             ::= 'ELSE' result
    +
    + referenced by: + + searched_case + simple_case + + case_operand: + + + + + + + + row_value_predicand + + + overlaps_predicate + + + + +
             ::= row_value_predicand
    +
               | overlaps_predicate
    +
    + referenced by: + + simple_case + + when_operand: + + + + + + + + row_value_predicand + + + comparison_predicate_part_2 + + + between_predicate_part_2 + + + in_predicate_part_2 + + + character_like_predicate_part_2 + + + octet_like_predicate_part_2 + + + similar_predicate_part_2 + + + null_predicate_part_2 + + + quantified_comparison_predicate_part_2 + + + match_predicate_part_2 + + + overlaps_predicate_part_2 + + + distinct_predicate_part_2 + + + member_predicate_part_2 + + + submultiset_predicate_part_2 + + + set_predicate_part_2 + + + type_predicate_part_2 + + + + +
             ::= row_value_predicand
    +
               | comparison_predicate_part_2
    +
               | between_predicate_part_2
    +
               | in_predicate_part_2
    +
               | character_like_predicate_part_2
    +
               | octet_like_predicate_part_2
    +
               | similar_predicate_part_2
    +
               | null_predicate_part_2
    + +
               | match_predicate_part_2
    +
               | overlaps_predicate_part_2
    +
               | distinct_predicate_part_2
    +
               | member_predicate_part_2
    +
               | submultiset_predicate_part_2
    +
               | set_predicate_part_2
    +
               | type_predicate_part_2
    +
    + referenced by: + + simple_when_clause + + result: + + + + + + + + result_expression + + NULL + + + + + +
               | 'NULL'
    +
    + referenced by: + + else_clause + searched_when_clause + simple_when_clause + + result_expression: + + + + + + + + value_expression + + + + +
             ::= value_expression
    +
    + referenced by: + + result + + cast_specification: + + + + + + + + CAST + + + ( + + + cast_operand + + AS + + + cast_target + + ) + + + + + +
             ::= 'CAST' '(' cast_operand 'AS' cast_target ')'
    +
    + referenced by: + + nonparenthesized_value_expression_primary + + cast_operand: + + + + + + + + value_expression + + + implicitly_typed_value_specification + + + + +
             ::= value_expression
    +
               | implicitly_typed_value_specification
    +
    + referenced by: + + cast_specification + + cast_target: + + + + + + + + domain_name + + + data_type + + + + +
             ::= domain_name
    +
               | data_type
    +
    + referenced by: + + cast_specification + + next_value_expression: + + + + + + + + NEXT* + + + VALUE + + + FOR + + + sequence_generator_name + + + + +
             ::= 'NEXT*' 'VALUE' 'FOR' sequence_generator_name
    +
    + referenced by: + + nonparenthesized_value_expression_primary + + field_reference: + + + + + + + + value_expression_primary + + . + + + field_name + + + + +
             ::= value_expression_primary '.' field_name
    +
    + referenced by: + + nonparenthesized_value_expression_primary + + subtype_treatment: + + + + + + + + TREAT + + + ( + + + subtype_operand + + AS + + + target_subtype + + ) + + + + + +
             ::= 'TREAT' '(' subtype_operand 'AS' target_subtype ')'
    +
    + referenced by: + + nonparenthesized_value_expression_primary + + subtype_operand: + + + + + + + + value_expression + + + + +
             ::= value_expression
    +
    + referenced by: + + subtype_treatment + + target_subtype: + + + + + + + + path_resolved_user_defined_type_name + + + reference_type + + + + + +
               | reference_type
    +
    + referenced by: + + subtype_treatment + + method_invocation: + + + + + + + + direct_invocation + + + generalized_invocation + + + + +
             ::= direct_invocation
    +
               | generalized_invocation
    +
    + referenced by: + + new_invocation + nonparenthesized_value_expression_primary + + direct_invocation: + + + + + + + + value_expression_primary + + . + + + method_name + + + SQL_argument_list + + + + + + + referenced by: + + method_invocation + + generalized_invocation: + + + + + + + + ( + + + value_expression_primary + + AS + + + data_type + + ) + + + . + + + method_name + + + SQL_argument_list + + + + +
             ::= '(' value_expression_primary 'AS' data_type ')' '.' method_name SQL_argument_list?
    +
    + referenced by: + + method_invocation + + method_selection: + + + + + + + + routine_invocation + + + + +
             ::= routine_invocation
    +
    + no referencesconstructor_method_selection: + + + + + + + + routine_invocation + + + + +
             ::= routine_invocation
    +
    + no referencesstatic_method_invocation: + + + + + + + + path_resolved_user_defined_type_name + + :: + + + method_name + + + SQL_argument_list + + + + + + + referenced by: + + nonparenthesized_value_expression_primary + + static_method_selection: + + + + + + + + routine_invocation + + + + +
             ::= routine_invocation
    +
    + no referencesnew_specification: + + + + + + + + NEW + + + routine_invocation + + + + +
             ::= 'NEW' routine_invocation
    +
    + referenced by: + + nonparenthesized_value_expression_primary + + new_invocation: + + + + + + + + method_invocation + + + routine_invocation + + + + +
             ::= method_invocation
    +
               | routine_invocation
    +
    + no referencesattribute_or_method_reference: + + + + + + + + value_expression_primary + + -> + + + qualified_identifier + + + SQL_argument_list + + + + + + + referenced by: + + nonparenthesized_value_expression_primary + + dereference_operation: + + + + + + + + reference_value_expression + + -> + + + attribute_name + + + + +
             ::= reference_value_expression '->' attribute_name
    +
    + no referencesmethod_reference: + + + + + + + + value_expression_primary + + -> + + + method_name + + + SQL_argument_list + + + + + + + no referencesreference_resolution: + + + + + + + + DEREF + + + ( + + + reference_value_expression + + ) + + + + + +
             ::= 'DEREF' '(' reference_value_expression ')'
    +
    + referenced by: + + nonparenthesized_value_expression_primary + + array_element_reference: + + + + + + + + array_value_expression + + + left_bracket_or_trigraph + + + numeric_value_expression + + + right_bracket_or_trigraph + + + + + + + referenced by: + + nonparenthesized_value_expression_primary + + multiset_element_reference: + + + + + + + + ELEMENT + + + ( + + + multiset_value_expression + + ) + + + + + +
             ::= 'ELEMENT' '(' multiset_value_expression ')'
    +
    + referenced by: + + nonparenthesized_value_expression_primary + + value_expression: + + + + + + + + common_value_expression + + + boolean_value_expression + + + row_value_expression + + + + +
             ::= common_value_expression
    +
               | boolean_value_expression
    +
               | row_value_expression
    +
    + referenced by: + + SQL_argument + array_element + case_abbreviation + cast_operand + contextually_typed_row_value_constructor_element + cycle_mark_value + derived_column + general_set_function + generalized_expression + generation_expression + hypothetical_set_function_value_expression_list + merge_insert_value_element + multiset_element + non_cycle_mark_value + parenthesized_value_expression + result_expression + return_value + row_value_constructor_element + sort_key + subtype_operand + update_source + + common_value_expression: + + + + + + + + numeric_value_expression + + + string_value_expression + + + datetime_value_expression + + + interval_value_expression + + + user_defined_type_value_expression + + + reference_value_expression + + + collection_value_expression + + + + +
             ::= numeric_value_expression
    +
               | string_value_expression
    +
               | datetime_value_expression
    +
               | interval_value_expression
    +
               | user_defined_type_value_expression
    +
               | reference_value_expression
    +
               | collection_value_expression
    +
    + referenced by: + + contextually_typed_row_value_constructor + row_value_constructor + row_value_constructor_predicand + value_expression + + user_defined_type_value_expression: + + + + + + + + value_expression_primary + + + + +
             ::= value_expression_primary
    +
    + referenced by: + + common_value_expression + specific_type_method + + reference_value_expression: + + + + + + + + value_expression_primary + + + + +
             ::= value_expression_primary
    +
    + referenced by: + + common_value_expression + dereference_operation + reference_resolution + + collection_value_expression: + + + + + + + + array_value_expression + + + multiset_value_expression + + + + +
             ::= array_value_expression
    +
               | multiset_value_expression
    +
    + referenced by: + + cardinality_expression + collection_derived_table + common_value_expression + table_function_derived_table + + collection_value_constructor: + + + + + + + + array_value_constructor + + + multiset_value_constructor + + + + +
             ::= array_value_constructor
    +
               | multiset_value_constructor
    +
    + referenced by: + + nonparenthesized_value_expression_primary + + numeric_value_expression: + + + + + + + + term + + + + + + - + + + + + +
             ::= term ( ( '+' | '-' ) term )*
    +
    + referenced by: + + absolute_value_expression + array_element_reference + ceiling_function + common_value_expression + dependent_variable_expression + exponential_function + floor_function + independent_variable_expression + inverse_distribution_function_argument + natural_logarithm + numeric_value_expression_base + numeric_value_expression_exponent + repeat_argument + sample_percentage + square_root + start_position + string_length + width_bucket_bound_1 + width_bucket_bound_2 + width_bucket_count + width_bucket_operand + + term: + + + + + + + + factor + + * + + + / + + + + +
    term     ::= factor ( ( '*' | '/' ) factor )*
    +
    + referenced by: + + interval_term + numeric_value_expression + + factor: + + + + + + + + sign + + + numeric_primary + + + + + + referenced by: + + interval_term + term + + numeric_primary: + + + + + + + + value_expression_primary + + + numeric_value_function + + + + +
             ::= value_expression_primary
    +
               | numeric_value_function
    +
    + referenced by: + + factor + + numeric_value_function: + + + + + + + + position_expression + + + extract_expression + + + length_expression + + + cardinality_expression + + + absolute_value_expression + + + modulus_expression + + + natural_logarithm + + + exponential_function + + + power_function + + + square_root + + + floor_function + + + ceiling_function + + + width_bucket_function + + + + +
             ::= position_expression
    +
               | extract_expression
    +
               | length_expression
    +
               | cardinality_expression
    +
               | absolute_value_expression
    +
               | modulus_expression
    +
               | natural_logarithm
    +
               | exponential_function
    +
               | power_function
    +
               | square_root
    +
               | floor_function
    +
               | ceiling_function
    +
               | width_bucket_function
    +
    + referenced by: + + numeric_primary + + position_expression: + + + + + + + + string_position_expression + + + blob_position_expression + + + + +
             ::= string_position_expression
    +
               | blob_position_expression
    +
    + referenced by: + + numeric_value_function + + string_position_expression: + + + + + + + + POSITION* + + + ( + + + string_value_expression + + IN + + + string_value_expression + + USING + + + char_length_units + + ) + + + + + +
             ::= 'POSITION*' '(' string_value_expression 'IN' string_value_expression ( 'USING' char_length_units )? ')'
    +
    + referenced by: + + position_expression + + blob_position_expression: + + + + + + + + POSITION* + + + ( + + + blob_value_expression + + IN + + + blob_value_expression + + ) + + + + + +
             ::= 'POSITION*' '(' blob_value_expression 'IN' blob_value_expression ')'
    +
    + referenced by: + + position_expression + + length_expression: + + + + + + + + char_length_expression + + + octet_length_expression + + + + +
             ::= char_length_expression
    +
               | octet_length_expression
    +
    + referenced by: + + numeric_value_function + + char_length_expression: + + + + + + + + CHAR_LENGTH* + + + CHARACTER_LENGTH* + + + ( + + + string_value_expression + + USING + + + char_length_units + + ) + + + + + +
             ::= ( 'CHAR_LENGTH*' | 'CHARACTER_LENGTH*' ) '(' string_value_expression ( 'USING' char_length_units )? ')'
    +
    + referenced by: + + length_expression + + octet_length_expression: + + + + + + + + OCTET_LENGTH* + + + ( + + + string_value_expression + + ) + + + + + +
             ::= 'OCTET_LENGTH*' '(' string_value_expression ')'
    +
    + referenced by: + + length_expression + + extract_expression: + + + + + + + + EXTRACT* + + + ( + + + extract_field + + FROM + + + extract_source + + ) + + + + + +
             ::= 'EXTRACT*' '(' extract_field 'FROM' extract_source ')'
    +
    + referenced by: + + numeric_value_function + + extract_field: + + + + + + + + primary_datetime_field + + + time_zone_field + + + + +
             ::= primary_datetime_field
    +
               | time_zone_field
    +
    + referenced by: + + extract_expression + + time_zone_field: + + + + + + + + TIMEZONE_HOUR + + + TIMEZONE_MINUTE + + + + + +
             ::= 'TIMEZONE_HOUR'
    +
               | 'TIMEZONE_MINUTE'
    +
    + referenced by: + + extract_field + + extract_source: + + + + + + + + datetime_value_expression + + + interval_value_expression + + + + +
             ::= datetime_value_expression
    +
               | interval_value_expression
    +
    + referenced by: + + extract_expression + + cardinality_expression: + + + + + + + + CARDINALITY* + + + ( + + + collection_value_expression + + ) + + + + + +
             ::= 'CARDINALITY*' '(' collection_value_expression ')'
    +
    + referenced by: + + numeric_value_function + + absolute_value_expression: + + + + + + + + ABS* + + + ( + + + numeric_value_expression + + ) + + + + + +
             ::= 'ABS*' '(' numeric_value_expression ')'
    +
    + referenced by: + + numeric_value_function + + modulus_expression: + + + + + + + + MOD* + + + ( + + + numeric_value_expression_dividend + + , + + + numeric_value_expression_divisor + + ) + + + + + + + + referenced by: + + numeric_value_function + + natural_logarithm: + + + + + + + + LN* + + + ( + + + numeric_value_expression + + ) + + + + + +
             ::= 'LN*' '(' numeric_value_expression ')'
    +
    + referenced by: + + numeric_value_function + + exponential_function: + + + + + + + + EXP* + + + ( + + + numeric_value_expression + + ) + + + + + +
             ::= 'EXP*' '(' numeric_value_expression ')'
    +
    + referenced by: + + numeric_value_function + + power_function: + + + + + + + + POWER* + + + ( + + + numeric_value_expression_base + + , + + + numeric_value_expression_exponent + + ) + + + + + +
             ::= 'POWER*' '(' numeric_value_expression_base ',' numeric_value_expression_exponent ')'
    +
    + referenced by: + + numeric_value_function + + numeric_value_expression_base: + + + + + + + + numeric_value_expression + + + + +
             ::= numeric_value_expression
    +
    + referenced by: + + power_function + + numeric_value_expression_exponent: + + + + + + + + numeric_value_expression + + + + +
             ::= numeric_value_expression
    +
    + referenced by: + + power_function + + square_root: + + + + + + + + SQRT* + + + ( + + + numeric_value_expression + + ) + + + + + +
             ::= 'SQRT*' '(' numeric_value_expression ')'
    +
    + referenced by: + + numeric_value_function + + floor_function: + + + + + + + + FLOOR* + + + ( + + + numeric_value_expression + + ) + + + + + +
             ::= 'FLOOR*' '(' numeric_value_expression ')'
    +
    + referenced by: + + numeric_value_function + + ceiling_function: + + + + + + + + CEIL* + + + CEILING* + + + ( + + + numeric_value_expression + + ) + + + + + +
             ::= ( 'CEIL*' | 'CEILING*' ) '(' numeric_value_expression ')'
    +
    + referenced by: + + numeric_value_function + + width_bucket_function: + + + + + + + + WIDTH_BUCKET + + + ( + + + width_bucket_operand + + , + + + width_bucket_bound_1 + + , + + + width_bucket_bound_2 + + , + + + width_bucket_count + + ) + + + + + +
             ::= 'WIDTH_BUCKET' '(' width_bucket_operand ',' width_bucket_bound_1 ',' width_bucket_bound_2 ',' width_bucket_count ')'
    +
    + referenced by: + + numeric_value_function + + width_bucket_operand: + + + + + + + + numeric_value_expression + + + + +
             ::= numeric_value_expression
    +
    + referenced by: + + width_bucket_function + + width_bucket_bound_1: + + + + + + + + numeric_value_expression + + + + +
             ::= numeric_value_expression
    +
    + referenced by: + + width_bucket_function + + width_bucket_bound_2: + + + + + + + + numeric_value_expression + + + + +
             ::= numeric_value_expression
    +
    + referenced by: + + width_bucket_function + + width_bucket_count: + + + + + + + + numeric_value_expression + + + + +
             ::= numeric_value_expression
    +
    + referenced by: + + width_bucket_function + + string_value_expression: + + + + + + + + character_value_expression + + + blob_value_expression + + + + +
             ::= character_value_expression
    +
               | blob_value_expression
    +
    + referenced by: + + char_length_expression + common_value_expression + current_collation_specification + normalized_predicate + octet_length_expression + string_position_expression + + character_value_expression: + + + + + + + + concatenation + + + character_factor + + + + +
             ::= concatenation
    +
               | character_factor
    +
    + referenced by: + + character_overlay_function + character_pattern + character_substring_function + character_transliteration + concatenation + escape_character + fold + normalize_function + regular_expression_substring_function + similar_pattern + string_value_expression + transcoding + trim_character + trim_source + + concatenation: + + + + + + + + character_value_expression + + || + + + character_factor + + + + +
             ::= character_value_expression '||' character_factor
    +
    + referenced by: + + character_value_expression + + character_factor: + + + + + + + + character_primary + + + collate_clause + + + + +
             ::= character_primary collate_clause?
    +
    + referenced by: + + character_value_expression + concatenation + + character_primary: + + + + + + + + value_expression_primary + + + string_value_function + + + + +
             ::= value_expression_primary
    +
               | string_value_function
    +
    + referenced by: + + character_factor + + blob_value_expression: + + + + + + + + blob_concatenation + + + blob_factor + + + + +
             ::= blob_concatenation
    +
               | blob_factor
    +
    + referenced by: + + blob_concatenation + blob_overlay_function + blob_position_expression + blob_substring_function + blob_trim_source + escape_octet + octet_pattern + string_value_expression + trim_octet + + blob_factor: + + + + + + + + blob_primary + + + + +
             ::= blob_primary
    +
    + referenced by: + + blob_concatenation + blob_value_expression + + blob_primary: + + + + + + + + value_expression_primary + + + string_value_function + + + + +
             ::= value_expression_primary
    +
               | string_value_function
    +
    + referenced by: + + blob_factor + + blob_concatenation: + + + + + + + + blob_value_expression + + || + + + blob_factor + + + + +
             ::= blob_value_expression '||' blob_factor
    +
    + referenced by: + + blob_value_expression + + string_value_function: + + + + + + + + character_value_function + + + blob_value_function + + + + +
             ::= character_value_function
    +
               | blob_value_function
    +
    + referenced by: + + blob_primary + character_primary + + character_value_function: + + + + + + + + character_substring_function + + + regular_expression_substring_function + + + fold + + + transcoding + + + character_transliteration + + + trim_function + + + character_overlay_function + + + normalize_function + + + specific_type_method + + + + +
             ::= character_substring_function
    + +
               | fold
    +
               | transcoding
    +
               | character_transliteration
    +
               | trim_function
    +
               | character_overlay_function
    +
               | normalize_function
    +
               | specific_type_method
    +
    + referenced by: + + string_value_function + + character_substring_function: + + + + + + + + SUBSTRING* + + + ( + + + character_value_expression + + FROM + + + start_position + + FOR + + + string_length + + USING + + + char_length_units + + ) + + + + + +
             ::= 'SUBSTRING*' '(' character_value_expression 'FROM' start_position ( 'FOR' string_length )? ( 'USING' char_length_units )? ')'
    +
    + referenced by: + + character_value_function + + regular_expression_substring_function: + + + + + + + + SUBSTRING* + + + ( + + + character_value_expression + + SIMILAR + + + character_value_expression + + ESCAPE + + + escape_character + + ) + + + + + +
             ::= 'SUBSTRING*' '(' character_value_expression 'SIMILAR' character_value_expression 'ESCAPE' escape_character ')'
    +
    + referenced by: + + character_value_function + + fold: + + + + + + + + UPPER + + + LOWER* + + + ( + + + character_value_expression + + ) + + + + +
    fold     ::= ( 'UPPER' | 'LOWER*' ) '(' character_value_expression ')'
    +
    + referenced by: + + character_value_function + + transcoding: + + + + + + + + CONVERT* + + + ( + + + character_value_expression + + USING + + + transcoding_name + + ) + + + + + +
             ::= 'CONVERT*' '(' character_value_expression 'USING' transcoding_name ')'
    +
    + referenced by: + + character_value_function + + character_transliteration: + + + + + + + + TRANSLATE* + + + ( + + + character_value_expression + + USING + + + transliteration_name + + ) + + + + + +
             ::= 'TRANSLATE*' '(' character_value_expression 'USING' transliteration_name ')'
    +
    + referenced by: + + character_value_function + + trim_function: + + + + + + + + TRIM* + + + ( + + + trim_operands + + ) + + + + + +
             ::= 'TRIM*' '(' trim_operands ')'
    +
    + referenced by: + + character_value_function + + trim_operands: + + + + + + + + trim_specification + + + trim_character + + FROM + + + trim_source + + + + +
             ::= ( trim_specification? trim_character? 'FROM' )? trim_source
    +
    + referenced by: + + trim_function + + trim_source: + + + + + + + + character_value_expression + + + + +
             ::= character_value_expression
    +
    + referenced by: + + trim_operands + + trim_specification: + + + + + + + + LEADING + + + TRAILING + + + BOTH + + + + + +
             ::= 'LEADING'
    +
               | 'TRAILING'
    +
               | 'BOTH'
    +
    + referenced by: + + blob_trim_operands + trim_operands + + trim_character: + + + + + + + + character_value_expression + + + + +
             ::= character_value_expression
    +
    + referenced by: + + trim_operands + + character_overlay_function: + + + + + + + + OVERLAY* + + + ( + + + character_value_expression + + PLACING* + + + character_value_expression + + FROM + + + start_position + + FOR + + + string_length + + USING + + + char_length_units + + ) + + + + + +
             ::= 'OVERLAY*' '(' character_value_expression 'PLACING*' character_value_expression 'FROM' start_position ( 'FOR' string_length )? ( 'USING' char_length_units )? ')'
    +
    + referenced by: + + character_value_function + + normalize_function: + + + + + + + + NORMALIZE* + + + ( + + + character_value_expression + + ) + + + + + +
             ::= 'NORMALIZE*' '(' character_value_expression ')'
    +
    + referenced by: + + character_value_function + + specific_type_method: + + + + + + + + user_defined_type_value_expression + + . + + + SPECIFICTYPE + + + + + +
             ::= user_defined_type_value_expression '.' 'SPECIFICTYPE'
    +
    + referenced by: + + character_value_function + + blob_value_function: + + + + + + + + blob_substring_function + + + blob_trim_function + + + blob_overlay_function + + + + +
             ::= blob_substring_function
    +
               | blob_trim_function
    +
               | blob_overlay_function
    +
    + referenced by: + + string_value_function + + blob_substring_function: + + + + + + + + SUBSTRING* + + + ( + + + blob_value_expression + + FROM + + + start_position + + FOR + + + string_length + + ) + + + + + +
             ::= 'SUBSTRING*' '(' blob_value_expression 'FROM' start_position ( 'FOR' string_length )? ')'
    +
    + referenced by: + + blob_value_function + + blob_trim_function: + + + + + + + + TRIM* + + + ( + + + blob_trim_operands + + ) + + + + + +
             ::= 'TRIM*' '(' blob_trim_operands ')'
    +
    + referenced by: + + blob_value_function + + blob_trim_operands: + + + + + + + + trim_specification + + + trim_octet + + FROM + + + blob_trim_source + + + + +
             ::= ( trim_specification? trim_octet? 'FROM' )? blob_trim_source
    +
    + referenced by: + + blob_trim_function + + blob_trim_source: + + + + + + + + blob_value_expression + + + + +
             ::= blob_value_expression
    +
    + referenced by: + + blob_trim_operands + + trim_octet: + + + + + + + + blob_value_expression + + + + +
             ::= blob_value_expression
    +
    + referenced by: + + blob_trim_operands + + blob_overlay_function: + + + + + + + + OVERLAY* + + + ( + + + blob_value_expression + + PLACING* + + + blob_value_expression + + FROM + + + start_position + + FOR + + + string_length + + ) + + + + + +
             ::= 'OVERLAY*' '(' blob_value_expression 'PLACING*' blob_value_expression 'FROM' start_position ( 'FOR' string_length )? ')'
    +
    + referenced by: + + blob_value_function + + start_position: + + + + + + + + numeric_value_expression + + + + +
             ::= numeric_value_expression
    +
    + referenced by: + + blob_overlay_function + blob_substring_function + character_overlay_function + character_substring_function + + string_length: + + + + + + + + numeric_value_expression + + + + +
             ::= numeric_value_expression
    +
    + referenced by: + + blob_overlay_function + blob_substring_function + character_overlay_function + character_substring_function + + datetime_value_expression: + + + + + + + + interval_value_expression + + + + + + datetime_term + + + + + + - + + + interval_term + + + + +
             ::= ( interval_value_expression '+' )? datetime_term ( ( '+' | '-' ) interval_term )*
    +
    + referenced by: + + common_value_expression + extract_source + interval_value_expression + + datetime_term: + + + + + + + + datetime_factor + + + + +
             ::= datetime_factor
    +
    + referenced by: + + datetime_value_expression + interval_value_expression + + datetime_factor: + + + + + + + + datetime_primary + + + time_zone + + + + +
             ::= datetime_primary time_zone?
    +
    + referenced by: + + datetime_term + + datetime_primary: + + + + + + + + value_expression_primary + + + datetime_value_function + + + + +
             ::= value_expression_primary
    +
               | datetime_value_function
    +
    + referenced by: + + datetime_factor + + time_zone: + + + + + + + + AT + + + time_zone_specifier + + + + +
             ::= 'AT' time_zone_specifier
    +
    + referenced by: + + datetime_factor + + time_zone_specifier: + + + + + + + + LOCAL + + + TIME + + + ZONE* + + + interval_primary + + + + +
             ::= 'LOCAL'
    +
               | 'TIME' 'ZONE*' interval_primary
    +
    + referenced by: + + time_zone + + datetime_value_function: + + + + + + + + CURRENT_DATE + + + current_time_value_function + + + current_timestamp_value_function + + + current_local_time_value_function + + + current_local_timestamp_value_function + + + + +
             ::= 'CURRENT_DATE'
    +
               | current_time_value_function
    +
               | current_timestamp_value_function
    +
               | current_local_time_value_function
    +
    +
    + referenced by: + + datetime_primary + default_option + + current_time_value_function: + + + + + + + + CURRENT_TIME + + + ( + + + time_precision + + ) + + + + + +
             ::= 'CURRENT_TIME' ( '(' time_precision ')' )?
    +
    + referenced by: + + datetime_value_function + + current_local_time_value_function: + + + + + + + + LOCALTIME + + + ( + + + time_precision + + ) + + + + + +
             ::= 'LOCALTIME' ( '(' time_precision ')' )?
    +
    + referenced by: + + datetime_value_function + + current_timestamp_value_function: + + + + + + + + CURRENT_TIMESTAMP + + + ( + + + timestamp_precision + + ) + + + + + +
             ::= 'CURRENT_TIMESTAMP' ( '(' timestamp_precision ')' )?
    +
    + referenced by: + + datetime_value_function + + current_local_timestamp_value_function: + + + + + + + + LOCALTIMESTAMP + + + ( + + + timestamp_precision + + ) + + + + + +
             ::= 'LOCALTIMESTAMP' ( '(' timestamp_precision ')' )?
    +
    + referenced by: + + datetime_value_function + + interval_value_expression: + + + + + + + + interval_term + + + interval_value_expression_1 + + + + + + - + + + interval_term_1 + + ( + + + datetime_value_expression + + - + + + datetime_term + + ) + + + interval_qualifier + + + + +
             ::= interval_term
    +
               | interval_value_expression_1 ( '+' | '-' ) interval_term_1
    +
               | '(' datetime_value_expression '-' datetime_term ')' interval_qualifier
    +
    + referenced by: + + common_value_expression + datetime_value_expression + extract_source + interval_absolute_value_function + interval_value_expression_1 + set_time_zone_value + + interval_term: + + + + + + + + term + + * + + + interval_factor + + + interval_term_2 + + * + + + / + + + factor + + + + +
             ::= ( term '*' )? interval_factor
    +
               | interval_term_2 ( '*' | '/' ) factor
    +
    + referenced by: + + datetime_value_expression + interval_term_1 + interval_term_2 + interval_value_expression + + interval_factor: + + + + + + + + sign + + + interval_primary + + + + +
             ::= sign? interval_primary
    +
    + referenced by: + + interval_term + + interval_primary: + + + + + + + + value_expression_primary + + + interval_qualifier + + + interval_value_function + + + + + +
               | interval_value_function
    +
    + referenced by: + + interval_factor + time_zone_specifier + + interval_value_expression_1: + + + + + + + + interval_value_expression + + + + +
             ::= interval_value_expression
    +
    + referenced by: + + interval_value_expression + + interval_term_1: + + + + + + + + interval_term + + + + +
             ::= interval_term
    +
    + referenced by: + + interval_value_expression + + interval_term_2: + + + + + + + + interval_term + + + + +
             ::= interval_term
    +
    + referenced by: + + interval_term + + interval_value_function: + + + + + + + + interval_absolute_value_function + + + + +
             ::= interval_absolute_value_function
    +
    + referenced by: + + interval_primary + + interval_absolute_value_function: + + + + + + + + ABS* + + + ( + + + interval_value_expression + + ) + + + + + +
             ::= 'ABS*' '(' interval_value_expression ')'
    +
    + referenced by: + + interval_value_function + + boolean_value_expression: + + + + + + + + boolean_term + + OR + + + + + +
             ::= boolean_term ( 'OR' boolean_term )*
    +
    + referenced by: + + contextually_typed_row_value_constructor + parenthesized_boolean_value_expression + row_value_constructor + search_condition + value_expression + + boolean_term: + + + + + + + + boolean_factor + + AND + + + + + +
             ::= boolean_factor ( 'AND' boolean_factor )*
    +
    + referenced by: + + boolean_value_expression + + boolean_factor: + + + + + + + + NOT + + + boolean_test + + + + +
             ::= 'NOT'? boolean_test
    +
    + referenced by: + + boolean_term + + boolean_test: + + + + + + + + boolean_primary + + IS + + + NOT + + + truth_value + + + + +
             ::= boolean_primary ( 'IS' 'NOT'? truth_value )?
    +
    + referenced by: + + boolean_factor + + truth_value: + + + + + + + + TRUE + + + FALSE + + + UNKNOWN + + + + + +
             ::= 'TRUE'
    +
               | 'FALSE'
    +
               | 'UNKNOWN'
    +
    + referenced by: + + boolean_test + + boolean_primary: + + + + + + + + predicate + + + boolean_predicand + + + + +
             ::= predicate
    +
               | boolean_predicand
    +
    + referenced by: + + boolean_test + + boolean_predicand: + + + + + + + + parenthesized_boolean_value_expression + + + nonparenthesized_value_expression_primary + + + + + + + + referenced by: + + boolean_primary + row_value_constructor_predicand + + parenthesized_boolean_value_expression: + + + + + + + + ( + + + boolean_value_expression + + ) + + + + + +
             ::= '(' boolean_value_expression ')'
    +
    + referenced by: + + boolean_predicand + + array_value_expression: + + + + + + + + array_concatenation + + + array_factor + + + + +
             ::= array_concatenation
    +
               | array_factor
    +
    + referenced by: + + array_element_reference + array_value_expression_1 + collection_value_expression + + array_concatenation: + + + + + + + + array_value_expression_1 + + || + + + array_factor + + + + +
             ::= array_value_expression_1 '||' array_factor
    +
    + referenced by: + + array_value_expression + + array_value_expression_1: + + + + + + + + array_value_expression + + + + +
             ::= array_value_expression
    +
    + referenced by: + + array_concatenation + + array_factor: + + + + + + + + value_expression_primary + + + + +
             ::= value_expression_primary
    +
    + referenced by: + + array_concatenation + array_value_expression + + array_value_constructor: + + + + + + + + array_value_constructor_by_enumeration + + + array_value_constructor_by_query + + + + + +
               | array_value_constructor_by_query
    +
    + referenced by: + + collection_value_constructor + + array_value_constructor_by_enumeration: + + + + + + + + ARRAY + + + left_bracket_or_trigraph + + + array_element_list + + + right_bracket_or_trigraph + + + + + + + referenced by: + + array_value_constructor + + array_element_list: + + + + + + + + array_element + + , + + + + + +
             ::= array_element ( ',' array_element )*
    +
    + referenced by: + + array_value_constructor_by_enumeration + + array_element: + + + + + + + + value_expression + + + + +
             ::= value_expression
    +
    + referenced by: + + array_element_list + + array_value_constructor_by_query: + + + + + + + + ARRAY + + + ( + + + query_expression + + + order_by_clause + + ) + + + + + +
             ::= 'ARRAY' '(' query_expression order_by_clause? ')'
    +
    + referenced by: + + array_value_constructor + + multiset_value_expression: + + + + + + + + multiset_term + + ALL + + + DISTINCT + + + UNION + + + EXCEPT + + + MULTISET + + + + + +
             ::= multiset_term ( 'MULTISET' ( 'UNION' | 'EXCEPT' ) ( 'ALL' | 'DISTINCT' )? multiset_term )*
    +
    + referenced by: + + collection_value_expression + member_predicate_part_2 + multiset_element_reference + multiset_set_function + submultiset_predicate_part_2 + + multiset_term: + + + + + + + + multiset_primary + + ALL + + + DISTINCT + + + INTERSECT + + + MULTISET + + + + + +
             ::= multiset_primary ( 'MULTISET' 'INTERSECT' ( 'ALL' | 'DISTINCT' )? multiset_primary )*
    +
    + referenced by: + + multiset_value_expression + + multiset_primary: + + + + + + + + multiset_value_function + + + value_expression_primary + + + + +
             ::= multiset_value_function
    +
               | value_expression_primary
    +
    + referenced by: + + multiset_term + + multiset_value_function: + + + + + + + + multiset_set_function + + + + +
             ::= multiset_set_function
    +
    + referenced by: + + multiset_primary + + multiset_set_function: + + + + + + + + SET + + + ( + + + multiset_value_expression + + ) + + + + + +
             ::= 'SET' '(' multiset_value_expression ')'
    +
    + referenced by: + + multiset_value_function + + multiset_value_constructor: + + + + + + + + multiset_value_constructor_by_enumeration + + + multiset_value_constructor_by_query + + + table_value_constructor_by_query + + + + + +
               | multiset_value_constructor_by_query
    +
               | table_value_constructor_by_query
    +
    + referenced by: + + collection_value_constructor + + multiset_value_constructor_by_enumeration: + + + + + + + + MULTISET + + + left_bracket_or_trigraph + + + multiset_element_list + + + right_bracket_or_trigraph + + + + + + + referenced by: + + multiset_value_constructor + + multiset_element_list: + + + + + + + + multiset_element + + , + + + + + +
             ::= multiset_element ( ',' multiset_element )*
    +
    + referenced by: + + multiset_value_constructor_by_enumeration + + multiset_element: + + + + + + + + value_expression + + + + +
             ::= value_expression
    +
    + referenced by: + + multiset_element_list + + multiset_value_constructor_by_query: + + + + + + + + MULTISET + + + ( + + + query_expression + + ) + + + + + +
             ::= 'MULTISET' '(' query_expression ')'
    +
    + referenced by: + + multiset_value_constructor + + table_value_constructor_by_query: + + + + + + + + TABLE + + + ( + + + query_expression + + ) + + + + + +
             ::= 'TABLE' '(' query_expression ')'
    +
    + referenced by: + + multiset_value_constructor + + row_value_constructor: + + + + + + + + common_value_expression + + + boolean_value_expression + + + explicit_row_value_constructor + + + + +
             ::= common_value_expression
    +
               | boolean_value_expression
    +
               | explicit_row_value_constructor
    +
    + referenced by: + + table_row_value_expression + + explicit_row_value_constructor: + + + + + + + + ( + + + row_value_constructor_element + + , + + + ROW + + + ( + + + row_value_constructor_element_list + + ) + + + row_subquery + + + + +
             ::= ( '(' row_value_constructor_element ',' | 'ROW' '(' ) row_value_constructor_element_list ')'
    +
               | row_subquery
    +
    + referenced by: + + row_value_constructor + row_value_constructor_predicand + row_value_expression + + row_value_constructor_element_list: + + + + + + + + row_value_constructor_element + + , + + + + + + + + referenced by: + + explicit_row_value_constructor + + row_value_constructor_element: + + + + + + + + value_expression + + + + +
             ::= value_expression
    +
    + referenced by: + + explicit_row_value_constructor + row_value_constructor_element_list + + contextually_typed_row_value_constructor: + + + + + + + + common_value_expression + + + boolean_value_expression + + + contextually_typed_value_specification + + ( + + + contextually_typed_row_value_constructor_element + + , + + + ROW + + + ( + + + contextually_typed_row_value_constructor_element_list + + ) + + + + + +
             ::= common_value_expression
    +
               | boolean_value_expression
    + +
    +
    + referenced by: + + contextually_typed_row_value_expression + + contextually_typed_row_value_constructor_element_list: + + + + + + + + contextually_typed_row_value_constructor_element + + , + + + + + + + + referenced by: + + contextually_typed_row_value_constructor + + contextually_typed_row_value_constructor_element: + + + + + + + + value_expression + + + contextually_typed_value_specification + + + + +
             ::= value_expression
    +
    +
    + referenced by: + + contextually_typed_row_value_constructor + contextually_typed_row_value_constructor_element_list + + row_value_constructor_predicand: + + + + + + + + common_value_expression + + + boolean_predicand + + + explicit_row_value_constructor + + + + +
             ::= common_value_expression
    +
               | boolean_predicand
    +
               | explicit_row_value_constructor
    +
    + referenced by: + + row_value_predicand + + row_value_expression: + + + + + + + + row_value_special_case + + + explicit_row_value_constructor + + + + +
             ::= row_value_special_case
    +
               | explicit_row_value_constructor
    +
    + referenced by: + + in_value_list + value_expression + + table_row_value_expression: + + + + + + + + row_value_special_case + + + row_value_constructor + + + + +
             ::= row_value_special_case
    +
               | row_value_constructor
    +
    + referenced by: + + row_value_expression_list + + contextually_typed_row_value_expression: + + + + + + + + row_value_special_case + + + contextually_typed_row_value_constructor + + + + +
             ::= row_value_special_case
    +
    +
    + referenced by: + + assigned_row + contextually_typed_row_value_expression_list + + row_value_predicand: + + + + + + + + row_value_special_case + + + row_value_constructor_predicand + + + + +
             ::= row_value_special_case
    +
               | row_value_constructor_predicand
    +
    + referenced by: + + between_predicate + between_predicate_part_2 + case_operand + character_like_predicate + comparison_predicate + comparison_predicate_part_2 + in_predicate + match_predicate + member_predicate + null_predicate + octet_like_predicate + quantified_comparison_predicate + row_value_predicand_1 + row_value_predicand_2 + row_value_predicand_3 + row_value_predicand_4 + set_predicate + similar_predicate + submultiset_predicate + type_predicate + when_operand + + row_value_special_case: + + + + + + + + nonparenthesized_value_expression_primary + + + + + + + referenced by: + + contextually_typed_row_value_expression + row_value_expression + row_value_predicand + table_row_value_expression + + table_value_constructor: + + + + + + + + VALUES + + + row_value_expression_list + + + + +
             ::= 'VALUES' row_value_expression_list
    +
    + referenced by: + + simple_table + + row_value_expression_list: + + + + + + + + table_row_value_expression + + , + + + + + + + + referenced by: + + table_value_constructor + + contextually_typed_table_value_constructor: + + + + + + + + VALUES + + + contextually_typed_row_value_expression_list + + + + +
             ::= 'VALUES' contextually_typed_row_value_expression_list
    +
    + referenced by: + + from_constructor + + contextually_typed_row_value_expression_list: + + + + + + + + contextually_typed_row_value_expression + + , + + + + + + + + referenced by: + + contextually_typed_table_value_constructor + + table_expression: + + + + + + + + from_clause + + + where_clause + + + group_by_clause + + + having_clause + + + window_clause + + + + + + + referenced by: + + query_specification + select_statement__single_row + + from_clause: + + + + + + + + FROM + + + table_reference_list + + + + +
             ::= 'FROM' table_reference_list
    +
    + referenced by: + + table_expression + + table_reference_list: + + + + + + + + table_reference + + , + + + + + +
             ::= table_reference ( ',' table_reference )*
    +
    + referenced by: + + from_clause + + table_reference: + + + + + + + + table_primary_or_joined_table + + + sample_clause + + + + + + + referenced by: + + cross_join + merge_statement + natural_join + qualified_join + table_reference_list + union_join + + table_primary_or_joined_table: + + + + + + + + table_primary + + + joined_table + + + + +
             ::= table_primary
    +
               | joined_table
    +
    + referenced by: + + table_reference + + sample_clause: + + + + + + + + TABLESAMPLE* + + + sample_method + + ( + + + sample_percentage + + ) + + + repeatable_clause + + + + +
             ::= 'TABLESAMPLE*' sample_method '(' sample_percentage ')' repeatable_clause?
    +
    + referenced by: + + table_reference + + sample_method: + + + + + + + + BERNOULLI* + + + SYSTEM + + + + + +
             ::= 'BERNOULLI*'
    +
               | 'SYSTEM'
    +
    + referenced by: + + sample_clause + + repeatable_clause: + + + + + + + + REPEATABLE* + + + ( + + + repeat_argument + + ) + + + + + +
             ::= 'REPEATABLE*' '(' repeat_argument ')'
    +
    + referenced by: + + sample_clause + + sample_percentage: + + + + + + + + numeric_value_expression + + + + +
             ::= numeric_value_expression
    +
    + referenced by: + + sample_clause + + repeat_argument: + + + + + + + + numeric_value_expression + + + + +
             ::= numeric_value_expression
    +
    + referenced by: + + repeatable_clause + + table_primary: + + + + + + + + table_or_query_name + + + only_spec + + AS + + + correlation_name + + ( + + + derived_column_list + + ) + + + derived_table + + + lateral_derived_table + + + collection_derived_table + + + table_function_derived_table + + AS + + + correlation_name + + ( + + + derived_column_list + + ) + + + ( + + + joined_table + + ) + + + + + +
             ::= ( table_or_query_name | only_spec ) ( 'AS'? correlation_name ( '(' derived_column_list ')' )? )?
    + +
               | '(' joined_table ')'
    +
    + referenced by: + + cross_join + natural_join + table_primary_or_joined_table + union_join + + only_spec: + + + + + + + + ONLY + + + ( + + + table_or_query_name + + ) + + + + + +
             ::= 'ONLY' '(' table_or_query_name ')'
    +
    + referenced by: + + table_primary + + lateral_derived_table: + + + + + + + + LATERAL + + + table_subquery + + + + +
             ::= 'LATERAL' table_subquery
    +
    + referenced by: + + table_primary + + collection_derived_table: + + + + + + + + UNNEST + + + ( + + + collection_value_expression + + ) + + + WITH + + + ORDINALITY* + + + + + +
             ::= 'UNNEST' '(' collection_value_expression ')' ( 'WITH' 'ORDINALITY*' )?
    +
    + referenced by: + + table_primary + + table_function_derived_table: + + + + + + + + TABLE + + + ( + + + collection_value_expression + + ) + + + + + +
             ::= 'TABLE' '(' collection_value_expression ')'
    +
    + referenced by: + + table_primary + + derived_table: + + + + + + + + table_subquery + + + + +
             ::= table_subquery
    +
    + referenced by: + + table_primary + + table_or_query_name: + + + + + + + + table_name + + + query_name + + + + +
             ::= table_name
    +
               | query_name
    +
    + referenced by: + + explicit_table + only_spec + table_primary + + derived_column_list: + + + + + + + + column_name_list + + + + +
             ::= column_name_list
    +
    + referenced by: + + table_primary + + column_name_list: + + + + + + + + column_name + + , + + + + + +
             ::= column_name ( ',' column_name )*
    +
    + referenced by: + + all_fields_column_name_list + as_subquery_clause + corresponding_column_list + derived_column_list + insert_column_list + join_column_list + privilege_column_list + reference_column_list + trigger_column_list + unique_column_list + updatability_clause + view_column_list + with_column_list + + joined_table: + + + + + + + + cross_join + + + qualified_join + + + natural_join + + + union_join + + + + +
             ::= cross_join
    +
               | qualified_join
    +
               | natural_join
    +
               | union_join
    +
    + referenced by: + + query_expression_body + query_primary + query_term + table_primary + table_primary_or_joined_table + + cross_join: + + + + + + + + table_reference + + CROSS + + + JOIN + + + table_primary + + + + +
             ::= table_reference 'CROSS' 'JOIN' table_primary
    +
    + referenced by: + + joined_table + + qualified_join: + + + + + + + + table_reference + + + join_type + + JOIN + + + table_reference + + + join_specification + + + + + + + referenced by: + + joined_table + + natural_join: + + + + + + + + table_reference + + NATURAL + + + join_type + + JOIN + + + table_primary + + + + +
             ::= table_reference 'NATURAL' join_type? 'JOIN' table_primary
    +
    + referenced by: + + joined_table + + union_join: + + + + + + + + table_reference + + UNION + + + JOIN + + + table_primary + + + + +
             ::= table_reference 'UNION' 'JOIN' table_primary
    +
    + referenced by: + + joined_table + + join_specification: + + + + + + + + join_condition + + + named_columns_join + + + + +
             ::= join_condition
    +
               | named_columns_join
    +
    + referenced by: + + qualified_join + + join_condition: + + + + + + + + ON + + + search_condition + + + + +
             ::= 'ON' search_condition
    +
    + referenced by: + + join_specification + + named_columns_join: + + + + + + + + USING + + + ( + + + join_column_list + + ) + + + + + +
             ::= 'USING' '(' join_column_list ')'
    +
    + referenced by: + + join_specification + + join_type: + + + + + + + + INNER + + + outer_join_type + + OUTER + + + + + +
             ::= 'INNER'
    +
               | outer_join_type 'OUTER'?
    +
    + referenced by: + + natural_join + qualified_join + + outer_join_type: + + + + + + + + LEFT + + + RIGHT + + + FULL + + + + + +
             ::= 'LEFT'
    +
               | 'RIGHT'
    +
               | 'FULL'
    +
    + referenced by: + + join_type + + join_column_list: + + + + + + + + column_name_list + + + + +
             ::= column_name_list
    +
    + referenced by: + + named_columns_join + + where_clause: + + + + + + + + WHERE + + + search_condition + + + + +
             ::= 'WHERE' search_condition
    +
    + referenced by: + + table_expression + + group_by_clause: + + + + + + + + GROUP + + + BY + + + set_quantifier + + + grouping_element_list + + + + +
             ::= 'GROUP' 'BY' set_quantifier? grouping_element_list
    +
    + referenced by: + + table_expression + + grouping_element_list: + + + + + + + + grouping_element + + , + + + + + +
             ::= grouping_element ( ',' grouping_element )*
    +
    + referenced by: + + group_by_clause + + grouping_element: + + + + + + + + ordinary_grouping_set + + + rollup_list + + + cube_list + + + grouping_sets_specification + + + empty_grouping_set + + + + +
             ::= ordinary_grouping_set
    +
               | rollup_list
    +
               | cube_list
    +
               | grouping_sets_specification
    +
               | empty_grouping_set
    +
    + referenced by: + + grouping_element_list + + ordinary_grouping_set: + + + + + + + + grouping_column_reference + + ( + + + grouping_column_reference_list + + ) + + + + + +
             ::= grouping_column_reference
    +
               | '(' grouping_column_reference_list ')'
    +
    + referenced by: + + grouping_element + grouping_set + ordinary_grouping_set_list + + grouping_column_reference: + + + + + + + + column_reference + + + collate_clause + + + + +
             ::= column_reference collate_clause?
    +
    + referenced by: + + grouping_column_reference_list + ordinary_grouping_set + + grouping_column_reference_list: + + + + + + + + grouping_column_reference + + , + + + + + + + + referenced by: + + ordinary_grouping_set + + rollup_list: + + + + + + + + ROLLUP + + + ( + + + ordinary_grouping_set_list + + ) + + + + + +
             ::= 'ROLLUP' '(' ordinary_grouping_set_list ')'
    +
    + referenced by: + + grouping_element + grouping_set + + ordinary_grouping_set_list: + + + + + + + + ordinary_grouping_set + + , + + + + + +
             ::= ordinary_grouping_set ( ',' ordinary_grouping_set )*
    +
    + referenced by: + + cube_list + rollup_list + + cube_list: + + + + + + + + CUBE + + + ( + + + ordinary_grouping_set_list + + ) + + + + + +
             ::= 'CUBE' '(' ordinary_grouping_set_list ')'
    +
    + referenced by: + + grouping_element + grouping_set + + grouping_sets_specification: + + + + + + + + GROUPING + + + SETS* + + + ( + + + grouping_set_list + + ) + + + + + +
             ::= 'GROUPING' 'SETS*' '(' grouping_set_list ')'
    +
    + referenced by: + + grouping_element + grouping_set + + grouping_set_list: + + + + + + + + grouping_set + + , + + + + + +
             ::= grouping_set ( ',' grouping_set )*
    +
    + referenced by: + + grouping_sets_specification + + grouping_set: + + + + + + + + ordinary_grouping_set + + + rollup_list + + + cube_list + + + grouping_sets_specification + + + empty_grouping_set + + + + +
             ::= ordinary_grouping_set
    +
               | rollup_list
    +
               | cube_list
    +
               | grouping_sets_specification
    +
               | empty_grouping_set
    +
    + referenced by: + + grouping_set_list + + empty_grouping_set: + + + + + + + + ( + + + ) + + + + + +
             ::= '(' ')'
    +
    + referenced by: + + grouping_element + grouping_set + + having_clause: + + + + + + + + HAVING + + + search_condition + + + + +
             ::= 'HAVING' search_condition
    +
    + referenced by: + + table_expression + + window_clause: + + + + + + + + WINDOW + + + window_definition_list + + + + +
             ::= 'WINDOW' window_definition_list
    +
    + referenced by: + + table_expression + + window_definition_list: + + + + + + + + window_definition + + , + + + + + +
             ::= window_definition ( ',' window_definition )*
    +
    + referenced by: + + window_clause + + window_definition: + + + + + + + + new_window_name + + AS + + + window_specification + + + + +
             ::= new_window_name 'AS' window_specification
    +
    + referenced by: + + window_definition_list + + new_window_name: + + + + + + + + window_name + + + + +
             ::= window_name
    +
    + referenced by: + + window_definition + + window_specification: + + + + + + + + ( + + + window_specification_details + + ) + + + + + +
             ::= '(' window_specification_details ')'
    +
    + referenced by: + + in_line_window_specification + window_definition + + window_specification_details: + + + + + + + + existing_window_name + + + window_partition_clause + + + window_order_clause + + + window_frame_clause + + + + + + + referenced by: + + window_specification + + existing_window_name: + + + + + + + + window_name + + + + +
             ::= window_name
    +
    + referenced by: + + window_specification_details + + window_partition_clause: + + + + + + + + PARTITION + + + BY + + + window_partition_column_reference_list + + + + +
             ::= 'PARTITION' 'BY' window_partition_column_reference_list
    +
    + referenced by: + + window_specification_details + + window_partition_column_reference_list: + + + + + + + + window_partition_column_reference + + , + + + + + + + + referenced by: + + window_partition_clause + + window_partition_column_reference: + + + + + + + + column_reference + + + collate_clause + + + + +
             ::= column_reference collate_clause?
    +
    + referenced by: + + window_partition_column_reference_list + + window_order_clause: + + + + + + + + ORDER + + + BY + + + sort_specification_list + + + + +
             ::= 'ORDER' 'BY' sort_specification_list
    +
    + referenced by: + + window_specification_details + + window_frame_clause: + + + + + + + + window_frame_units + + + window_frame_extent + + + window_frame_exclusion + + + + + + + referenced by: + + window_specification_details + + window_frame_units: + + + + + + + + ROWS + + + RANGE + + + + + +
             ::= 'ROWS'
    +
               | 'RANGE'
    +
    + referenced by: + + window_frame_clause + + window_frame_extent: + + + + + + + + window_frame_start + + + window_frame_between + + + + +
             ::= window_frame_start
    +
               | window_frame_between
    +
    + referenced by: + + window_frame_clause + + window_frame_start: + + + + + + + + UNBOUNDED* + + + PRECEDING* + + + window_frame_preceding + + CURRENT + + + ROW + + + + + +
             ::= 'UNBOUNDED*' 'PRECEDING*'
    +
               | window_frame_preceding
    +
               | 'CURRENT' 'ROW'
    +
    + referenced by: + + window_frame_bound + window_frame_extent + + window_frame_preceding: + + + + + + + + unsigned_value_specification + + PRECEDING* + + + + + +
             ::= unsigned_value_specification 'PRECEDING*'
    +
    + referenced by: + + window_frame_start + + window_frame_between: + + + + + + + + BETWEEN + + + window_frame_bound_1 + + AND + + + window_frame_bound_2 + + + + +
             ::= 'BETWEEN' window_frame_bound_1 'AND' window_frame_bound_2
    +
    + referenced by: + + window_frame_extent + + window_frame_bound_1: + + + + + + + + window_frame_bound + + + + +
             ::= window_frame_bound
    +
    + referenced by: + + window_frame_between + + window_frame_bound_2: + + + + + + + + window_frame_bound + + + + +
             ::= window_frame_bound
    +
    + referenced by: + + window_frame_between + + window_frame_bound: + + + + + + + + window_frame_start + + UNBOUNDED* + + + FOLLOWING* + + + window_frame_following + + + + +
             ::= window_frame_start
    +
               | 'UNBOUNDED*' 'FOLLOWING*'
    +
               | window_frame_following
    +
    + referenced by: + + window_frame_bound_1 + window_frame_bound_2 + + window_frame_following: + + + + + + + + unsigned_value_specification + + FOLLOWING* + + + + + +
             ::= unsigned_value_specification 'FOLLOWING*'
    +
    + referenced by: + + window_frame_bound + + window_frame_exclusion: + + + + + + + + EXCLUDE* + + + CURRENT + + + ROW + + + GROUP + + + TIES* + + + NO + + + OTHERS* + + + + + +
             ::= 'EXCLUDE*' ( 'CURRENT' 'ROW' | 'GROUP' | 'TIES*' | 'NO' 'OTHERS*' )
    +
    + referenced by: + + window_frame_clause + + query_specification: + + + + + + + + SELECT + + + set_quantifier + + + select_list + + + table_expression + + + + +
             ::= 'SELECT' set_quantifier? select_list table_expression
    +
    + referenced by: + + dynamic_single_row_select_statement + simple_table + + select_list: + + + + + + + + * + + + select_sublist + + , + + + + + +
             ::= '*'
    +
               | select_sublist ( ',' select_sublist )*
    +
    + referenced by: + + query_specification + select_statement__single_row + + select_sublist: + + + + + + + + derived_column + + + qualified_asterisk + + + + +
             ::= derived_column
    +
               | qualified_asterisk
    +
    + referenced by: + + select_list + + qualified_asterisk: + + + + + + + + asterisked_identifier_chain + + . + + + * + + + all_fields_reference + + + + +
             ::= asterisked_identifier_chain '.' '*'
    +
               | all_fields_reference
    +
    + referenced by: + + select_sublist + + asterisked_identifier_chain: + + + + + + + + asterisked_identifier + + . + + + + + +
             ::= asterisked_identifier ( '.' asterisked_identifier )*
    +
    + referenced by: + + qualified_asterisk + + asterisked_identifier: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + asterisked_identifier_chain + + derived_column: + + + + + + + + value_expression + + + as_clause + + + + +
             ::= value_expression as_clause?
    +
    + referenced by: + + select_sublist + + as_clause: + + + + + + + + AS + + + column_name + + + + +
             ::= 'AS'? column_name
    +
    + referenced by: + + derived_column + + all_fields_reference: + + + + + + + + value_expression_primary + + . + + + * + + + AS + + + ( + + + all_fields_column_name_list + + ) + + + + + +
             ::= value_expression_primary '.' '*' ( 'AS' '(' all_fields_column_name_list ')' )?
    +
    + referenced by: + + qualified_asterisk + + all_fields_column_name_list: + + + + + + + + column_name_list + + + + +
             ::= column_name_list
    +
    + referenced by: + + all_fields_reference + + query_expression: + + + + + + + + with_clause + + + query_expression_body + + + + +
             ::= with_clause? query_expression_body
    +
    + referenced by: + + array_value_constructor_by_query + cursor_specification + from_subquery + multiset_value_constructor_by_query + subquery + table_value_constructor_by_query + view_definition + with_list_element + + with_clause: + + + + + + + + WITH + + + RECURSIVE + + + with_list + + + + +
             ::= 'WITH' 'RECURSIVE'? with_list
    +
    + referenced by: + + query_expression + + with_list: + + + + + + + + with_list_element + + , + + + + + +
             ::= with_list_element ( ',' with_list_element )*
    +
    + referenced by: + + with_clause + + with_list_element: + + + + + + + + query_name + + ( + + + with_column_list + + ) + + + AS + + + ( + + + query_expression + + ) + + + search_or_cycle_clause + + + + +
             ::= query_name ( '(' with_column_list ')' )? 'AS' '(' query_expression ')' search_or_cycle_clause?
    +
    + referenced by: + + with_list + + with_column_list: + + + + + + + + column_name_list + + + + +
             ::= column_name_list
    +
    + referenced by: + + with_list_element + + query_expression_body: + + + + + + + + non_join_query_expression + + + joined_table + + + + +
             ::= non_join_query_expression
    +
               | joined_table
    +
    + referenced by: + + non_join_query_expression + query_expression + + non_join_query_expression: + + + + + + + + non_join_query_term + + + query_expression_body + + UNION + + + EXCEPT + + + ALL + + + DISTINCT + + + corresponding_spec + + + query_term + + + + +
             ::= non_join_query_term
    +
               | query_expression_body ( 'UNION' | 'EXCEPT' ) ( 'ALL' | 'DISTINCT' )? corresponding_spec? query_term
    +
    + referenced by: + + non_join_query_primary + query_expression_body + + query_term: + + + + + + + + non_join_query_term + + + joined_table + + + + +
             ::= non_join_query_term
    +
               | joined_table
    +
    + referenced by: + + non_join_query_expression + non_join_query_term + + non_join_query_term: + + + + + + + + non_join_query_primary + + + query_term + + INTERSECT + + + ALL + + + DISTINCT + + + corresponding_spec + + + query_primary + + + + +
             ::= non_join_query_primary
    +
               | query_term 'INTERSECT' ( 'ALL' | 'DISTINCT' ) corresponding_spec? query_primary
    +
    + referenced by: + + non_join_query_expression + query_term + + query_primary: + + + + + + + + non_join_query_primary + + + joined_table + + + + +
             ::= non_join_query_primary
    +
               | joined_table
    +
    + referenced by: + + non_join_query_term + + non_join_query_primary: + + + + + + + + simple_table + + ( + + + non_join_query_expression + + ) + + + + + +
             ::= simple_table
    +
               | '(' non_join_query_expression ')'
    +
    + referenced by: + + non_join_query_term + query_primary + + simple_table: + + + + + + + + query_specification + + + table_value_constructor + + + explicit_table + + + + +
             ::= query_specification
    +
               | table_value_constructor
    +
               | explicit_table
    +
    + referenced by: + + non_join_query_primary + + explicit_table: + + + + + + + + TABLE + + + table_or_query_name + + + + +
             ::= 'TABLE' table_or_query_name
    +
    + referenced by: + + simple_table + + corresponding_spec: + + + + + + + + CORRESPONDING + + + BY + + + ( + + + corresponding_column_list + + ) + + + + + +
             ::= 'CORRESPONDING' ( 'BY' '(' corresponding_column_list ')' )?
    +
    + referenced by: + + non_join_query_expression + non_join_query_term + + corresponding_column_list: + + + + + + + + column_name_list + + + + +
             ::= column_name_list
    +
    + referenced by: + + corresponding_spec + + search_or_cycle_clause: + + + + + + + + search_clause + + + cycle_clause + + + cycle_clause + + + + +
             ::= search_clause cycle_clause?
    +
               | cycle_clause
    +
    + referenced by: + + with_list_element + + search_clause: + + + + + + + + SEARCH + + + recursive_search_order + + SET + + + sequence_column + + + + +
             ::= 'SEARCH' recursive_search_order 'SET' sequence_column
    +
    + referenced by: + + search_or_cycle_clause + + recursive_search_order: + + + + + + + + DEPTH* + + + BREADTH* + + + FIRST* + + + BY + + + sort_specification_list + + + + +
             ::= ( 'DEPTH*' | 'BREADTH*' ) 'FIRST*' 'BY' sort_specification_list
    +
    + referenced by: + + search_clause + + sequence_column: + + + + + + + + column_name + + + + +
             ::= column_name
    +
    + referenced by: + + search_clause + + cycle_clause: + + + + + + + + CYCLE + + + cycle_column_list + + SET + + + cycle_mark_column + + TO + + + cycle_mark_value + + DEFAULT + + + non_cycle_mark_value + + USING + + + path_column + + + + +
             ::= 'CYCLE' cycle_column_list 'SET' cycle_mark_column 'TO' cycle_mark_value 'DEFAULT' non_cycle_mark_value 'USING' path_column
    +
    + referenced by: + + search_or_cycle_clause + + cycle_column_list: + + + + + + + + cycle_column + + , + + + + + +
             ::= cycle_column ( ',' cycle_column )*
    +
    + referenced by: + + cycle_clause + + cycle_column: + + + + + + + + column_name + + + + +
             ::= column_name
    +
    + referenced by: + + cycle_column_list + + cycle_mark_column: + + + + + + + + column_name + + + + +
             ::= column_name
    +
    + referenced by: + + cycle_clause + + path_column: + + + + + + + + column_name + + + + +
             ::= column_name
    +
    + referenced by: + + cycle_clause + + cycle_mark_value: + + + + + + + + value_expression + + + + +
             ::= value_expression
    +
    + referenced by: + + cycle_clause + + non_cycle_mark_value: + + + + + + + + value_expression + + + + +
             ::= value_expression
    +
    + referenced by: + + cycle_clause + + scalar_subquery: + + + + + + + + subquery + + + + +
             ::= subquery
    +
    + referenced by: + + nonparenthesized_value_expression_primary + + row_subquery: + + + + + + + + subquery + + + + +
             ::= subquery
    +
    + referenced by: + + explicit_row_value_constructor + + table_subquery: + + + + + + + + subquery + + + + +
             ::= subquery
    +
    + referenced by: + + derived_table + exists_predicate + in_predicate_value + lateral_derived_table + match_predicate_part_2 + quantified_comparison_predicate_part_2 + unique_predicate + + subquery: + + + + + + + + ( + + + query_expression + + ) + + + + + + + referenced by: + + as_subquery_clause + row_subquery + scalar_subquery + table_subquery + + predicate: + + + + + + + + comparison_predicate + + + between_predicate + + + in_predicate + + + like_predicate + + + similar_predicate + + + null_predicate + + + quantified_comparison_predicate + + + exists_predicate + + + unique_predicate + + + normalized_predicate + + + match_predicate + + + overlaps_predicate + + + distinct_predicate + + + member_predicate + + + submultiset_predicate + + + set_predicate + + + type_predicate + + + + +
             ::= comparison_predicate
    +
               | between_predicate
    +
               | in_predicate
    +
               | like_predicate
    +
               | similar_predicate
    +
               | null_predicate
    +
               | quantified_comparison_predicate
    +
               | exists_predicate
    +
               | unique_predicate
    +
               | normalized_predicate
    +
               | match_predicate
    +
               | overlaps_predicate
    +
               | distinct_predicate
    +
               | member_predicate
    +
               | submultiset_predicate
    +
               | set_predicate
    +
               | type_predicate
    +
    + referenced by: + + boolean_primary + + comparison_predicate: + + + + + + + + row_value_predicand + + + comparison_predicate_part_2 + + + + + + + referenced by: + + predicate + + comparison_predicate_part_2: + + + + + + + + comp_op + + + row_value_predicand + + + + +
             ::= comp_op row_value_predicand
    +
    + referenced by: + + comparison_predicate + when_operand + + comp_op: + + + + + + + + = + + + <> + + + < + + + > + + + <= + + + >= + + + + +
    comp_op  ::= '='
    +
               | '<>'
    +
               | '<'
    +
               | '>'
    +
               | '<='
    +
               | '>='
    +
    + referenced by: + + comparison_predicate_part_2 + quantified_comparison_predicate_part_2 + + between_predicate: + + + + + + + + row_value_predicand + + + between_predicate_part_2 + + + + + + + referenced by: + + predicate + + between_predicate_part_2: + + + + + + + + NOT + + + BETWEEN + + + ASYMMETRIC + + + SYMMETRIC + + + row_value_predicand + + AND + + + row_value_predicand + + + + +
             ::= 'NOT'? 'BETWEEN' ( 'ASYMMETRIC' | 'SYMMETRIC' )? row_value_predicand 'AND' row_value_predicand
    +
    + referenced by: + + between_predicate + when_operand + + in_predicate: + + + + + + + + row_value_predicand + + + in_predicate_part_2 + + + + + + + referenced by: + + predicate + + in_predicate_part_2: + + + + + + + + NOT + + + IN + + + in_predicate_value + + + + +
             ::= 'NOT'? 'IN' in_predicate_value
    +
    + referenced by: + + in_predicate + when_operand + + in_predicate_value: + + + + + + + + table_subquery + + ( + + + in_value_list + + ) + + + + + +
             ::= table_subquery
    +
               | '(' in_value_list ')'
    +
    + referenced by: + + in_predicate_part_2 + + in_value_list: + + + + + + + + row_value_expression + + , + + + + + +
             ::= row_value_expression ( ',' row_value_expression )*
    +
    + referenced by: + + in_predicate_value + + like_predicate: + + + + + + + + character_like_predicate + + + octet_like_predicate + + + + +
             ::= character_like_predicate
    +
               | octet_like_predicate
    +
    + referenced by: + + predicate + + character_like_predicate: + + + + + + + + row_value_predicand + + + character_like_predicate_part_2 + + + + + + + referenced by: + + like_predicate + + character_like_predicate_part_2: + + + + + + + + NOT + + + LIKE + + + character_pattern + + ESCAPE + + + escape_character + + + + +
             ::= 'NOT'? 'LIKE' character_pattern ( 'ESCAPE' escape_character )?
    +
    + referenced by: + + character_like_predicate + when_operand + + character_pattern: + + + + + + + + character_value_expression + + + + +
             ::= character_value_expression
    +
    + referenced by: + + character_like_predicate_part_2 + + escape_character: + + + + + + + + character_value_expression + + + + +
             ::= character_value_expression
    +
    + referenced by: + + Unicode_character_string_literal + binary_string_literal + character_like_predicate_part_2 + regular_expression_substring_function + similar_predicate_part_2 + + octet_like_predicate: + + + + + + + + row_value_predicand + + + octet_like_predicate_part_2 + + + + + + + referenced by: + + like_predicate + + octet_like_predicate_part_2: + + + + + + + + NOT + + + LIKE + + + octet_pattern + + ESCAPE + + + escape_octet + + + + +
             ::= 'NOT'? 'LIKE' octet_pattern ( 'ESCAPE' escape_octet )?
    +
    + referenced by: + + octet_like_predicate + when_operand + + octet_pattern: + + + + + + + + blob_value_expression + + + + +
             ::= blob_value_expression
    +
    + referenced by: + + octet_like_predicate_part_2 + + escape_octet: + + + + + + + + blob_value_expression + + + + +
             ::= blob_value_expression
    +
    + referenced by: + + octet_like_predicate_part_2 + + similar_predicate: + + + + + + + + row_value_predicand + + + similar_predicate_part_2 + + + + + + + referenced by: + + predicate + + similar_predicate_part_2: + + + + + + + + NOT + + + SIMILAR + + + TO + + + similar_pattern + + ESCAPE + + + escape_character + + + + +
             ::= 'NOT'? 'SIMILAR' 'TO' similar_pattern ( 'ESCAPE' escape_character )?
    +
    + referenced by: + + similar_predicate + when_operand + + similar_pattern: + + + + + + + + character_value_expression + + + + +
             ::= character_value_expression
    +
    + referenced by: + + similar_predicate_part_2 + + regular_term: + + + + + + + + regular_factor + + + + +
             ::= regular_factor+
    +
    + referenced by: + + regular_primary + + regular_factor: + + + + + + + + regular_primary + + * + + + + + + + ? + + + repeat_factor + + + + +
             ::= regular_primary ( '*' | '+' | '?' | repeat_factor )?
    +
    + referenced by: + + regular_term + + repeat_factor: + + + + + + + + { + + + low_value + + + upper_limit + + } + + + + + +
             ::= '{' low_value upper_limit? '}'
    +
    + referenced by: + + regular_factor + + upper_limit: + + + + + + + + , + + + high_value + + + + +
             ::= ',' high_value?
    +
    + referenced by: + + repeat_factor + + low_value: + + + + + + + + unsigned_integer + + + + +
             ::= unsigned_integer
    +
    + referenced by: + + repeat_factor + + high_value: + + + + + + + + unsigned_integer + + + + +
             ::= unsigned_integer
    +
    + referenced by: + + upper_limit + + regular_primary: + + + + + + + + character_specifier + + % + + + regular_character_set + + ( + + + regular_term + + | + + + ) + + + + + +
             ::= character_specifier
    +
               | '%'
    +
               | regular_character_set
    +
               | '(' regular_term ( '|' regular_term )* ')'
    +
    + referenced by: + + regular_factor + + character_specifier: + + + + + + + + non_escaped_character + + + escaped_character + + + + +
             ::= non_escaped_character
    +
               | escaped_character
    +
    + referenced by: + + character_enumeration + regular_primary + + non_escaped_character: + + + + + + + + + + +
             ::=
    +
    + referenced by: + + character_specifier + + escaped_character: + + + + + + + + + + +
             ::=
    +
    + referenced by: + + character_specifier + + regular_character_set: + + + + + + + + _ + + + [ + + + ^ + + + character_enumeration + + + character_enumeration_include + + . + + + . + + + . + + + ^ + + + character_enumeration_exclude + + . + + + . + + + . + + + ] + + + + + +
             ::= '_'
    +
    +
    + referenced by: + + regular_primary + + character_enumeration_include: + + + + + + + + character_enumeration + + + + +
             ::= character_enumeration
    +
    + referenced by: + + regular_character_set + + character_enumeration_exclude: + + + + + + + + character_enumeration + + + + +
             ::= character_enumeration
    +
    + referenced by: + + regular_character_set + + character_enumeration: + + + + + + + + character_specifier + + - + + + character_specifier + + [ + + + : + + + regular_character_set_identifier + + : + + + ] + + + + + +
             ::= character_specifier ( '-' character_specifier )?
    +
               | '[' ':' regular_character_set_identifier ':' ']'
    +
    + referenced by: + + character_enumeration_exclude + character_enumeration_include + regular_character_set + + regular_character_set_identifier: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + character_enumeration + + null_predicate: + + + + + + + + row_value_predicand + + + null_predicate_part_2 + + + + + + + referenced by: + + predicate + + null_predicate_part_2: + + + + + + + + IS + + + NOT + + + NULL + + + + + +
             ::= 'IS' 'NOT'? 'NULL'
    +
    + referenced by: + + null_predicate + when_operand + + quantified_comparison_predicate: + + + + + + + + row_value_predicand + + + quantified_comparison_predicate_part_2 + + + + + + + referenced by: + + predicate + + quantified_comparison_predicate_part_2: + + + + + + + + comp_op + + + quantifier + + + table_subquery + + + + +
             ::= comp_op quantifier table_subquery
    +
    + referenced by: + + quantified_comparison_predicate + when_operand + + quantifier: + + + + + + + + ALL + + + some + + + + +
             ::= 'ALL'
    +
               | some
    +
    + referenced by: + + quantified_comparison_predicate_part_2 + + some: + + + + + + + + SOME + + + ANY + + + + +
    some     ::= 'SOME'
    +
               | 'ANY'
    +
    + referenced by: + + quantifier + + exists_predicate: + + + + + + + + EXISTS + + + table_subquery + + + + +
             ::= 'EXISTS' table_subquery
    +
    + referenced by: + + predicate + + unique_predicate: + + + + + + + + UNIQUE + + + table_subquery + + + + +
             ::= 'UNIQUE' table_subquery
    +
    + referenced by: + + predicate + + normalized_predicate: + + + + + + + + string_value_expression + + IS + + + NOT + + + NORMALIZED* + + + + + +
             ::= string_value_expression 'IS' 'NOT'? 'NORMALIZED*'
    +
    + referenced by: + + predicate + + match_predicate: + + + + + + + + row_value_predicand + + + match_predicate_part_2 + + + + + + + referenced by: + + predicate + + match_predicate_part_2: + + + + + + + + MATCH + + + UNIQUE + + + SIMPLE* + + + PARTIAL* + + + FULL + + + table_subquery + + + + +
             ::= 'MATCH' 'UNIQUE'? ( 'SIMPLE*' | 'PARTIAL*' | 'FULL' )? table_subquery
    +
    + referenced by: + + match_predicate + when_operand + + overlaps_predicate: + + + + + + + + overlaps_predicate_part_1 + + + overlaps_predicate_part_2 + + + + + + + referenced by: + + case_operand + predicate + + overlaps_predicate_part_1: + + + + + + + + row_value_predicand_1 + + + + +
             ::= row_value_predicand_1
    +
    + referenced by: + + overlaps_predicate + + overlaps_predicate_part_2: + + + + + + + + OVERLAPS + + + row_value_predicand_2 + + + + +
             ::= 'OVERLAPS' row_value_predicand_2
    +
    + referenced by: + + overlaps_predicate + when_operand + + row_value_predicand_1: + + + + + + + + row_value_predicand + + + + +
             ::= row_value_predicand
    +
    + referenced by: + + overlaps_predicate_part_1 + + row_value_predicand_2: + + + + + + + + row_value_predicand + + + + +
             ::= row_value_predicand
    +
    + referenced by: + + overlaps_predicate_part_2 + + distinct_predicate: + + + + + + + + row_value_predicand_3 + + + distinct_predicate_part_2 + + + + + + + referenced by: + + predicate + + distinct_predicate_part_2: + + + + + + + + IS + + + DISTINCT + + + FROM + + + row_value_predicand_4 + + + + +
             ::= 'IS' 'DISTINCT' 'FROM' row_value_predicand_4
    +
    + referenced by: + + distinct_predicate + when_operand + + row_value_predicand_3: + + + + + + + + row_value_predicand + + + + +
             ::= row_value_predicand
    +
    + referenced by: + + distinct_predicate + + row_value_predicand_4: + + + + + + + + row_value_predicand + + + + +
             ::= row_value_predicand
    +
    + referenced by: + + distinct_predicate_part_2 + + member_predicate: + + + + + + + + row_value_predicand + + + member_predicate_part_2 + + + + + + + referenced by: + + predicate + + member_predicate_part_2: + + + + + + + + NOT + + + MEMBER + + + OF + + + multiset_value_expression + + + + +
             ::= 'NOT'? 'MEMBER' 'OF'? multiset_value_expression
    +
    + referenced by: + + member_predicate + when_operand + + submultiset_predicate: + + + + + + + + row_value_predicand + + + submultiset_predicate_part_2 + + + + + + + referenced by: + + predicate + + submultiset_predicate_part_2: + + + + + + + + NOT + + + SUBMULTISET + + + OF + + + multiset_value_expression + + + + +
             ::= 'NOT'? 'SUBMULTISET' 'OF'? multiset_value_expression
    +
    + referenced by: + + submultiset_predicate + when_operand + + set_predicate: + + + + + + + + row_value_predicand + + + set_predicate_part_2 + + + + + + + referenced by: + + predicate + + set_predicate_part_2: + + + + + + + + IS + + + NOT + + + A* + + + SET + + + + + +
             ::= 'IS' 'NOT'? 'A*' 'SET'
    +
    + referenced by: + + set_predicate + when_operand + + type_predicate: + + + + + + + + row_value_predicand + + + type_predicate_part_2 + + + + + + + referenced by: + + predicate + + type_predicate_part_2: + + + + + + + + IS + + + NOT + + + OF + + + ( + + + type_list + + ) + + + + + +
             ::= 'IS' 'NOT'? 'OF' '(' type_list ')'
    +
    + referenced by: + + type_predicate + when_operand + + type_list: + + + + + + + + user_defined_type_specification + + , + + + + + + + + referenced by: + + type_predicate_part_2 + + user_defined_type_specification: + + + + + + + + inclusive_user_defined_type_specification + + + exclusive_user_defined_type_specification + + + + + + + + referenced by: + + type_list + + inclusive_user_defined_type_specification: + + + + + + + + path_resolved_user_defined_type_name + + + + + + + referenced by: + + user_defined_type_specification + + exclusive_user_defined_type_specification: + + + + + + + + ONLY + + + path_resolved_user_defined_type_name + + + + +
             ::= 'ONLY' path_resolved_user_defined_type_name
    +
    + referenced by: + + user_defined_type_specification + + search_condition: + + + + + + + + boolean_value_expression + + + + +
             ::= boolean_value_expression
    +
    + referenced by: + + assertion_definition + check_constraint_definition + delete_statement__searched + filter_clause + having_clause + join_condition + merge_statement + searched_when_clause + triggered_action + update_statement__searched + where_clause + + interval_qualifier: + + + + + + + + start_field + + TO + + + end_field + + + single_datetime_field + + + + +
             ::= start_field 'TO' end_field
    +
               | single_datetime_field
    +
    + referenced by: + + interval_literal + interval_primary + interval_type + interval_value_expression + + start_field: + + + + + + + + non_second_primary_datetime_field + + ( + + + interval_leading_field_precision + + ) + + + + + + + + referenced by: + + interval_qualifier + + end_field: + + + + + + + + non_second_primary_datetime_field + + SECOND + + + ( + + + interval_fractional_seconds_precision + + ) + + + + + +
             ::= non_second_primary_datetime_field
    +
               | 'SECOND' ( '(' interval_fractional_seconds_precision ')' )?
    +
    + referenced by: + + interval_qualifier + + single_datetime_field: + + + + + + + + non_second_primary_datetime_field + + ( + + + interval_leading_field_precision + + ) + + + SECOND + + + ( + + + interval_leading_field_precision + + , + + + interval_fractional_seconds_precision + + ) + + + + + + +
               | 'SECOND' ( '(' interval_leading_field_precision ( ',' interval_fractional_seconds_precision )? ')' )?
    +
    + referenced by: + + interval_qualifier + + primary_datetime_field: + + + + + + + + non_second_primary_datetime_field + + SECOND + + + + + +
             ::= non_second_primary_datetime_field
    +
               | 'SECOND'
    +
    + referenced by: + + extract_field + + non_second_primary_datetime_field: + + + + + + + + YEAR + + + MONTH + + + DAY + + + HOUR + + + MINUTE + + + + + +
             ::= 'YEAR'
    +
               | 'MONTH'
    +
               | 'DAY'
    +
               | 'HOUR'
    +
               | 'MINUTE'
    +
    + referenced by: + + end_field + primary_datetime_field + single_datetime_field + start_field + + interval_fractional_seconds_precision: + + + + + + + + unsigned_integer + + + + +
             ::= unsigned_integer
    +
    + referenced by: + + end_field + single_datetime_field + + interval_leading_field_precision: + + + + + + + + unsigned_integer + + + + +
             ::= unsigned_integer
    +
    + referenced by: + + single_datetime_field + start_field + + language_clause: + + + + + + + + LANGUAGE + + + language_name + + + + +
             ::= 'LANGUAGE' language_name
    +
    + referenced by: + + SQL_client_module_definition + alter_routine_characteristic + method_characteristic + routine_characteristic + + language_name: + + + + + + + + ADA* + + + C* + + + COBOL* + + + FORTRAN* + + + MUMPS* + + + PASCAL* + + + PLI* + + + SQL + + + + + +
             ::= 'ADA*'
    +
               | 'C*'
    +
               | 'COBOL*'
    +
               | 'FORTRAN*'
    +
               | 'MUMPS*'
    +
               | 'PASCAL*'
    +
               | 'PLI*'
    +
               | 'SQL'
    +
    + referenced by: + + language_clause + + path_specification: + + + + + + + + PATH* + + + schema_name_list + + + + +
             ::= 'PATH*' schema_name_list
    +
    + referenced by: + + embedded_path_specification + module_path_specification + schema_path_specification + + schema_name_list: + + + + + + + + schema_name + + , + + + + + +
             ::= schema_name ( ',' schema_name )*
    +
    + referenced by: + + path_specification + + routine_invocation: + + + + + + + + routine_name + + + SQL_argument_list + + + + +
             ::= routine_name SQL_argument_list
    +
    + referenced by: + + call_statement + constructor_method_selection + method_selection + new_invocation + new_specification + nonparenthesized_value_expression_primary + static_method_selection + + routine_name: + + + + + + + + schema_name + + . + + + qualified_identifier + + + + +
             ::= ( schema_name '.' )? qualified_identifier
    +
    + referenced by: + + routine_invocation + + SQL_argument_list: + + + + + + + + ( + + + SQL_argument + + , + + + ) + + + + + +
             ::= '(' ( SQL_argument ( ',' SQL_argument )* )? ')'
    +
    + referenced by: + + attribute_or_method_reference + direct_invocation + generalized_invocation + method_reference + routine_invocation + static_method_invocation + + SQL_argument: + + + + + + + + value_expression + + + generalized_expression + + + target_specification + + + + +
             ::= value_expression
    +
               | generalized_expression
    +
               | target_specification
    +
    + referenced by: + + SQL_argument_list + + generalized_expression: + + + + + + + + value_expression + + AS + + + path_resolved_user_defined_type_name + + + + + + + referenced by: + + SQL_argument + + character_set_specification: + + + + + + + + standard_character_set_name + + + implementation_defined_character_set_name + + + user_defined_character_set_name + + + + +
             ::= standard_character_set_name
    + +
               | user_defined_character_set_name
    +
    + referenced by: + + Ada_CLOB_variable + Ada_qualified_type_specification + COBOL_CLOB_variable + COBOL_NCLOB_variable + COBOL_character_type + COBOL_national_character_type + C_CLOB_variable + C_NCHAR_VARYING_variable + C_NCHAR_variable + C_NCLOB_variable + C_VARCHAR_variable + C_character_variable + Fortran_CLOB_variable + Fortran_type_specification + MUMPS_CLOB_variable + PL_I_CLOB_variable + PL_I_type_specification + Pascal_CLOB_variable + Pascal_type_specification + Unicode_character_string_literal + character_set_source + character_set_specification_list + character_string_literal + collation_definition + embedded_character_set_declaration + module_character_set_specification + predefined_type + schema_character_set_specification + source_character_set_specification + target_character_set_specification + + standard_character_set_name: + + + + + + + + character_set_name + + + + +
             ::= character_set_name
    +
    + referenced by: + + character_set_specification + + implementation_defined_character_set_name: + + + + + + + + character_set_name + + + + +
             ::= character_set_name
    +
    + referenced by: + + character_set_specification + + user_defined_character_set_name: + + + + + + + + character_set_name + + + + +
             ::= character_set_name
    +
    + referenced by: + + character_set_specification + + specific_routine_designator: + + + + + + + + SPECIFIC + + + routine_type + + + specific_name + + + routine_type + + + member_name + + FOR + + + schema_resolved_user_defined_type_name + + + + +
             ::= 'SPECIFIC' routine_type specific_name
    +
    +
    + referenced by: + + alter_routine_statement + cast_function + drop_routine_statement + from_sql_function + map_function_specification + object_name + privilege_method_list + relative_function_specification + result_set_cursor + to_sql_function + transliteration_routine + + routine_type: + + + + + + + + ROUTINE* + + + FUNCTION + + + PROCEDURE + + + INSTANCE* + + + STATIC + + + CONSTRUCTOR + + METHOD + + + + + +
             ::= 'ROUTINE*'
    +
               | 'FUNCTION'
    +
               | 'PROCEDURE'
    +
               | ( 'INSTANCE*' | 'STATIC' | CONSTRUCTOR )? 'METHOD'
    +
    + referenced by: + + specific_routine_designator + + member_name: + + + + + + + + member_name_alternatives + + + data_type_list + + + + + + + referenced by: + + specific_routine_designator + + member_name_alternatives: + + + + + + + + schema_qualified_routine_name + + + method_name + + + + +
             ::= schema_qualified_routine_name
    +
               | method_name
    +
    + referenced by: + + member_name + + data_type_list: + + + + + + + + ( + + + data_type + + , + + + ) + + + + + +
             ::= '(' ( data_type ( ',' data_type )* )? ')'
    +
    + referenced by: + + member_name + specific_method_specification_designator + + collate_clause: + + + + + + + + COLLATE + + + collation_name + + + + +
             ::= 'COLLATE' collation_name
    +
    + referenced by: + + attribute_definition + character_factor + character_set_definition + column_definition + domain_definition + grouping_column_reference + predefined_type + window_partition_column_reference + + constraint_name_definition: + + + + + + + + CONSTRAINT + + + constraint_name + + + + +
             ::= 'CONSTRAINT' constraint_name
    +
    + referenced by: + + column_constraint_definition + domain_constraint + table_constraint_definition + + constraint_characteristics: + + + + + + + + constraint_check_time + + NOT + + + DEFERRABLE* + + + NOT + + + DEFERRABLE* + + + constraint_check_time + + + + +
             ::= constraint_check_time ( 'NOT'? 'DEFERRABLE*' )?
    +
               | 'NOT'? 'DEFERRABLE*' constraint_check_time?
    +
    + referenced by: + + assertion_definition + column_constraint_definition + domain_constraint + table_constraint_definition + + constraint_check_time: + + + + + + + + INITIALLY* + + + DEFERRED* + + + IMMEDIATE + + + + + +
             ::= 'INITIALLY*' ( 'DEFERRED*' | 'IMMEDIATE' )
    +
    + referenced by: + + constraint_characteristics + + aggregate_function: + + + + + + + + COUNT* + + + ( + + + * + + + ) + + + general_set_function + + + binary_set_function + + + ordered_set_function + + + filter_clause + + + + +
             ::= ( 'COUNT*' '(' '*' ')' | general_set_function | binary_set_function | ordered_set_function ) filter_clause?
    +
    + referenced by: + + set_function_specification + window_function_type + + general_set_function: + + + + + + + + set_function_type + + ( + + + set_quantifier + + + value_expression + + ) + + + + + +
             ::= set_function_type '(' set_quantifier? value_expression ')'
    +
    + referenced by: + + aggregate_function + + set_function_type: + + + + + + + + computational_operation + + + + +
             ::= computational_operation
    +
    + referenced by: + + general_set_function + + computational_operation: + + + + + + + + AVG* + + + MAX* + + + MIN* + + + SUM* + + + EVERY* + + + ANY + + + SOME + + + COUNT* + + + STDDEV_POP* + + + STDDEV_SAMP* + + + VAR_SAMP + + + VAR_POP + + + COLLECT* + + + FUSION* + + + INTERSECTION* + + + + + +
             ::= 'AVG*'
    +
               | 'MAX*'
    +
               | 'MIN*'
    +
               | 'SUM*'
    +
               | 'EVERY*'
    +
               | 'ANY'
    +
               | 'SOME'
    +
               | 'COUNT*'
    +
               | 'STDDEV_POP*'
    +
               | 'STDDEV_SAMP*'
    +
               | 'VAR_SAMP'
    +
               | 'VAR_POP'
    +
               | 'COLLECT*'
    +
               | 'FUSION*'
    +
               | 'INTERSECTION*'
    +
    + referenced by: + + set_function_type + + set_quantifier: + + + + + + + + DISTINCT + + + ALL + + + + + +
             ::= 'DISTINCT'
    +
               | 'ALL'
    +
    + referenced by: + + general_set_function + group_by_clause + query_specification + select_statement__single_row + + filter_clause: + + + + + + + + FILTER + + + ( + + + WHERE + + + search_condition + + ) + + + + + +
             ::= 'FILTER' '(' 'WHERE' search_condition ')'
    +
    + referenced by: + + aggregate_function + + binary_set_function: + + + + + + + + binary_set_function_type + + ( + + + dependent_variable_expression + + , + + + independent_variable_expression + + ) + + + + + + + + referenced by: + + aggregate_function + + binary_set_function_type: + + + + + + + + COVAR_POP* + + + COVAR_SAMP* + + + CORR* + + + REGR_SLOPE + + + REGR_INTERCEPT + + + REGR_COUNT + + + REGR_R2 + + + REGR_AVGX + + + REGR_AVGY + + + REGR_SXX + + + REGR_SYY + + + REGR_SXY + + + + + +
             ::= 'COVAR_POP*'
    +
               | 'COVAR_SAMP*'
    +
               | 'CORR*'
    +
               | 'REGR_SLOPE'
    +
               | 'REGR_INTERCEPT'
    +
               | 'REGR_COUNT'
    +
               | 'REGR_R2'
    +
               | 'REGR_AVGX'
    +
               | 'REGR_AVGY'
    +
               | 'REGR_SXX'
    +
               | 'REGR_SYY'
    +
               | 'REGR_SXY'
    +
    + referenced by: + + binary_set_function + + dependent_variable_expression: + + + + + + + + numeric_value_expression + + + + +
             ::= numeric_value_expression
    +
    + referenced by: + + binary_set_function + + independent_variable_expression: + + + + + + + + numeric_value_expression + + + + +
             ::= numeric_value_expression
    +
    + referenced by: + + binary_set_function + + ordered_set_function: + + + + + + + + hypothetical_set_function + + + inverse_distribution_function + + + + +
             ::= hypothetical_set_function
    +
               | inverse_distribution_function
    +
    + referenced by: + + aggregate_function + + hypothetical_set_function: + + + + + + + + rank_function_type + + ( + + + hypothetical_set_function_value_expression_list + + ) + + + within_group_specification + + + + + + + referenced by: + + ordered_set_function + + within_group_specification: + + + + + + + + WITHIN + + + GROUP + + + ( + + + ORDER + + + BY + + + sort_specification_list + + ) + + + + + +
             ::= 'WITHIN' 'GROUP' '(' 'ORDER' 'BY' sort_specification_list ')'
    +
    + referenced by: + + hypothetical_set_function + inverse_distribution_function + + hypothetical_set_function_value_expression_list: + + + + + + + + value_expression + + , + + + + + +
             ::= value_expression ( ',' value_expression )*
    +
    + referenced by: + + hypothetical_set_function + + inverse_distribution_function: + + + + + + + + inverse_distribution_function_type + + ( + + + inverse_distribution_function_argument + + ) + + + within_group_specification + + + + + + + referenced by: + + ordered_set_function + + inverse_distribution_function_argument: + + + + + + + + numeric_value_expression + + + + +
             ::= numeric_value_expression
    +
    + referenced by: + + inverse_distribution_function + + inverse_distribution_function_type: + + + + + + + + PERCENTILE_CONT* + + + PERCENTILE_DISC* + + + + + +
             ::= 'PERCENTILE_CONT*'
    +
               | 'PERCENTILE_DISC*'
    +
    + referenced by: + + inverse_distribution_function + + sort_specification_list: + + + + + + + + sort_specification + + , + + + + + +
             ::= sort_specification ( ',' sort_specification )*
    +
    + referenced by: + + order_by_clause + recursive_search_order + window_order_clause + within_group_specification + + sort_specification: + + + + + + + + sort_key + + + ordering_specification + + + null_ordering + + + + + + + referenced by: + + sort_specification_list + + sort_key: + + + + + + + + value_expression + + + + + + referenced by: + + sort_specification + + ordering_specification: + + + + + + + + ASC* + + + DESC* + + + + + +
             ::= 'ASC*'
    +
               | 'DESC*'
    +
    + referenced by: + + sort_specification + + null_ordering: + + + + + + + + NULLS* + + + FIRST* + + + LAST* + + + + + +
             ::= 'NULLS*' ( 'FIRST*' | 'LAST*' )
    +
    + referenced by: + + sort_specification + + schema_definition: + + + + + + + + CREATE + + + SCHEMA* + + + schema_name_clause + + + schema_character_set_or_path + + + schema_element + + + + +
             ::= 'CREATE' 'SCHEMA*' schema_name_clause schema_character_set_or_path? schema_element?
    +
    + referenced by: + + SQL_schema_definition_statement + + schema_character_set_or_path: + + + + + + + + schema_character_set_specification + + + schema_path_specification + + + schema_path_specification + + + schema_character_set_specification + + + + + + + + referenced by: + + schema_definition + + schema_name_clause: + + + + + + + + schema_name + + AUTHORIZATION + + + schema_authorization_identifier + + AUTHORIZATION + + + schema_authorization_identifier + + + + +
             ::= schema_name ( 'AUTHORIZATION' schema_authorization_identifier )?
    +
               | 'AUTHORIZATION' schema_authorization_identifier
    +
    + referenced by: + + schema_definition + + schema_authorization_identifier: + + + + + + + + authorization_identifier + + + + +
             ::= authorization_identifier
    +
    + referenced by: + + schema_name_clause + + schema_character_set_specification: + + + + + + + + DEFAULT + + + CHARACTER + + + SET + + + character_set_specification + + + + +
             ::= 'DEFAULT' 'CHARACTER' 'SET' character_set_specification
    +
    + referenced by: + + schema_character_set_or_path + + schema_path_specification: + + + + + + + + path_specification + + + + +
             ::= path_specification
    +
    + referenced by: + + schema_character_set_or_path + + schema_element: + + + + + + + + table_definition + + + view_definition + + + domain_definition + + + character_set_definition + + + collation_definition + + + transliteration_definition + + + assertion_definition + + + trigger_definition + + + user_defined_type_definition + + + user_defined_cast_definition + + + user_defined_ordering_definition + + + transform_definition + + + schema_routine + + + sequence_generator_definition + + + grant_statement + + + role_definition + + + + +
             ::= table_definition
    +
               | view_definition
    +
               | domain_definition
    +
               | character_set_definition
    +
               | collation_definition
    +
               | transliteration_definition
    +
               | assertion_definition
    +
               | trigger_definition
    +
               | user_defined_type_definition
    +
               | user_defined_cast_definition
    +
               | user_defined_ordering_definition
    +
               | transform_definition
    +
               | schema_routine
    +
               | sequence_generator_definition
    +
               | grant_statement
    +
               | role_definition
    +
    + referenced by: + + schema_definition + + drop_schema_statement: + + + + + + + + DROP + + + SCHEMA* + + + schema_name + + + drop_behavior + + + + +
             ::= 'DROP' 'SCHEMA*' schema_name drop_behavior
    +
    + referenced by: + + SQL_schema_manipulation_statement + + drop_behavior: + + + + + + + + CASCADE* + + + RESTRICT + + + + +
             ::= 'CASCADE*'
    +
               | RESTRICT
    +
    + referenced by: + + drop_collation_statement + drop_column_definition + drop_column_scope_clause + drop_data_type_statement + drop_domain_statement + drop_routine_statement + drop_schema_statement + drop_sequence_generator_statement + drop_table_constraint_definition + drop_table_statement + drop_transform_element_list + drop_transform_statement + drop_user_defined_cast_statement + drop_user_defined_ordering_statement + drop_view_statement + revoke_privilege_statement + revoke_role_statement + + table_definition: + + + + + + + + CREATE + + + table_scope + + TABLE + + + table_name + + + table_contents_source + + ON + + + COMMIT + + + table_commit_action + + ROWS + + + + + +
             ::= 'CREATE' table_scope? 'TABLE' table_name table_contents_source ( 'ON' 'COMMIT' table_commit_action 'ROWS' )?
    +
    + referenced by: + + SQL_schema_definition_statement + schema_element + + table_contents_source: + + + + + + + + table_element_list + + OF + + + path_resolved_user_defined_type_name + + + subtable_clause + + + table_element_list + + + as_subquery_clause + + + + +
             ::= table_element_list
    + +
               | as_subquery_clause
    +
    + referenced by: + + table_definition + + table_scope: + + + + + + + + global_or_local + + TEMPORARY* + + + + + +
             ::= global_or_local 'TEMPORARY*'
    +
    + referenced by: + + table_definition + + global_or_local: + + + + + + + + GLOBAL + + + LOCAL + + + + + +
             ::= 'GLOBAL'
    +
               | 'LOCAL'
    +
    + referenced by: + + table_scope + + table_commit_action: + + + + + + + + PRESERVE* + + + DELETE + + + + + +
             ::= 'PRESERVE*'
    +
               | 'DELETE'
    +
    + referenced by: + + table_definition + temporary_table_declaration + + table_element_list: + + + + + + + + ( + + + table_element + + , + + + ) + + + + + +
             ::= '(' table_element ( ',' table_element )* ')'
    +
    + referenced by: + + table_contents_source + temporary_table_declaration + + table_element: + + + + + + + + column_definition + + + table_constraint_definition + + + like_clause + + + self_referencing_column_specification + + + column_options + + + + +
             ::= column_definition
    +
               | table_constraint_definition
    +
               | like_clause
    + +
               | column_options
    +
    + referenced by: + + table_element_list + + self_referencing_column_specification: + + + + + + + + REF + + + IS + + + self_referencing_column_name + + + reference_generation + + + + +
             ::= 'REF' 'IS' self_referencing_column_name reference_generation
    +
    + referenced by: + + table_element + view_element + + reference_generation: + + + + + + + + SYSTEM + + + USER + + + GENERATED + + DERIVED* + + + + + +
             ::= ( 'SYSTEM' | 'USER' ) GENERATED
    +
               | 'DERIVED*'
    +
    + referenced by: + + self_referencing_column_specification + + self_referencing_column_name: + + + + + + + + column_name + + + + +
             ::= column_name
    +
    + referenced by: + + self_referencing_column_specification + + column_options: + + + + + + + + column_name + + WITH + + + OPTIONS* + + + column_option_list + + + + +
             ::= column_name 'WITH' 'OPTIONS*' column_option_list
    +
    + referenced by: + + table_element + + column_option_list: + + + + + + + + scope_clause + + + default_clause + + + column_constraint_definition + + + + + + + referenced by: + + column_options + + subtable_clause: + + + + + + + + UNDER* + + + supertable_clause + + + + +
             ::= 'UNDER*' supertable_clause
    +
    + referenced by: + + table_contents_source + + supertable_clause: + + + + + + + + supertable_name + + + + +
             ::= supertable_name
    +
    + referenced by: + + subtable_clause + + supertable_name: + + + + + + + + table_name + + + + +
             ::= table_name
    +
    + referenced by: + + supertable_clause + + like_clause: + + + + + + + + LIKE + + + table_name + + + like_options + + + + +
             ::= 'LIKE' table_name like_options?
    +
    + referenced by: + + table_element + + like_options: + + + + + + + + identity_option + + + column_default_option + + + + +
             ::= identity_option
    +
               | column_default_option
    +
    + referenced by: + + like_clause + + identity_option: + + + + + + + + INCLUDING* + + + EXCLUDING* + + + IDENTITY + + + + + +
             ::= ( 'INCLUDING*' | 'EXCLUDING*' ) 'IDENTITY'
    +
    + referenced by: + + like_options + + column_default_option: + + + + + + + + INCLUDING* + + + EXCLUDING* + + + DEFAULTS* + + + + + +
             ::= ( 'INCLUDING*' | 'EXCLUDING*' ) 'DEFAULTS*'
    +
    + referenced by: + + like_options + + as_subquery_clause: + + + + + + + + ( + + + column_name_list + + ) + + + AS + + + subquery + + + with_or_without_data + + + + +
             ::= ( '(' column_name_list ')' )? 'AS' subquery with_or_without_data
    +
    + referenced by: + + table_contents_source + + with_or_without_data: + + + + + + + + WITH + + + NO + + + DATA* + + + + + +
             ::= 'WITH' 'NO'? 'DATA*'
    +
    + referenced by: + + as_subquery_clause + + column_definition: + + + + + + + + column_name + + + data_type + + + domain_name + + + reference_scope_check + + + default_clause + + + identity_column_specification + + + generation_clause + + + column_constraint_definition + + + collate_clause + + + + + + + referenced by: + + add_column_definition + table_element + + column_constraint_definition: + + + + + + + + constraint_name_definition + + + column_constraint + + + constraint_characteristics + + + + + + + referenced by: + + column_definition + column_option_list + + column_constraint: + + + + + + + + NOT + + + NULL + + + unique_specification + + + references_specification + + + check_constraint_definition + + + + +
             ::= 'NOT' 'NULL'
    +
               | unique_specification
    +
               | references_specification
    +
               | check_constraint_definition
    +
    + referenced by: + + column_constraint_definition + + reference_scope_check: + + + + + + + + REFERENCES + + + ARE + + + NOT + + + CHECKED* + + + ON + + + DELETE + + + reference_scope_check_action + + + + +
             ::= 'REFERENCES' 'ARE' 'NOT'? 'CHECKED*' ( 'ON' 'DELETE' reference_scope_check_action )?
    +
    + referenced by: + + attribute_definition + column_definition + field_definition + + reference_scope_check_action: + + + + + + + + referential_action + + + + +
             ::= referential_action
    +
    + referenced by: + + reference_scope_check + + identity_column_specification: + + + + + + + + GENERATED + + ALWAYS* + + + BY + + + DEFAULT + + + AS + + + IDENTITY + + + ( + + + common_sequence_generator_options + + ) + + + + + +
             ::= GENERATED ( 'ALWAYS*' | 'BY' 'DEFAULT' ) 'AS' 'IDENTITY' ( '(' common_sequence_generator_options ')' )?
    +
    + referenced by: + + column_definition + + generation_clause: + + + + + + + + generation_rule + + AS + + + generation_expression + + + + +
             ::= generation_rule 'AS' generation_expression
    +
    + referenced by: + + column_definition + + generation_rule: + + + + + + + + GENERATED + + ALWAYS* + + + + + +
             ::= GENERATED 'ALWAYS*'
    +
    + referenced by: + + generation_clause + + generation_expression: + + + + + + + + ( + + + value_expression + + ) + + + + + +
             ::= '(' value_expression ')'
    +
    + referenced by: + + generation_clause + + default_clause: + + + + + + + + DEFAULT + + + default_option + + + + +
             ::= 'DEFAULT' default_option
    +
    + referenced by: + + attribute_default + column_definition + column_option_list + domain_definition + set_column_default_clause + set_domain_default_clause + + default_option: + + + + + + + + literal + + + datetime_value_function + + USER + + + CURRENT_USER + + + CURRENT_ROLE + + + SESSION_USER + + + SYSTEM_USER + + + CURRENT_PATH + + + implicitly_typed_value_specification + + + + +
             ::= literal
    +
               | datetime_value_function
    +
               | 'USER'
    +
               | 'CURRENT_USER'
    +
               | 'CURRENT_ROLE'
    +
               | 'SESSION_USER'
    +
               | 'SYSTEM_USER'
    +
               | 'CURRENT_PATH'
    +
               | implicitly_typed_value_specification
    +
    + referenced by: + + default_clause + + table_constraint_definition: + + + + + + + + constraint_name_definition + + + table_constraint + + + constraint_characteristics + + + + + + + referenced by: + + add_table_constraint_definition + table_element + + table_constraint: + + + + + + + + unique_constraint_definition + + + referential_constraint_definition + + + check_constraint_definition + + + + +
             ::= unique_constraint_definition
    +
               | referential_constraint_definition
    +
               | check_constraint_definition
    +
    + referenced by: + + table_constraint_definition + + unique_constraint_definition: + + + + + + + + unique_specification + + ( + + + unique_column_list + + ) + + + UNIQUE + + + VALUE + + + + + +
             ::= unique_specification '(' unique_column_list ')'
    +
               | 'UNIQUE' 'VALUE'
    +
    + referenced by: + + table_constraint + + unique_specification: + + + + + + + + UNIQUE + + + PRIMARY + + + KEY* + + + + + +
             ::= 'UNIQUE'
    +
               | 'PRIMARY' 'KEY*'
    +
    + referenced by: + + column_constraint + unique_constraint_definition + + unique_column_list: + + + + + + + + column_name_list + + + + +
             ::= column_name_list
    +
    + referenced by: + + unique_constraint_definition + + referential_constraint_definition: + + + + + + + + FOREIGN + + + KEY* + + + ( + + + referencing_columns + + ) + + + references_specification + + + + +
             ::= 'FOREIGN' 'KEY*' '(' referencing_columns ')' references_specification
    +
    + referenced by: + + table_constraint + + references_specification: + + + + + + + + REFERENCES + + + referenced_table_and_columns + + MATCH + + + match_type + + + referential_triggered_action + + + + +
             ::= 'REFERENCES' referenced_table_and_columns ( 'MATCH' match_type )? referential_triggered_action?
    +
    + referenced by: + + column_constraint + referential_constraint_definition + + match_type: + + + + + + + + FULL + + + PARTIAL* + + + SIMPLE* + + + + + +
             ::= 'FULL'
    +
               | 'PARTIAL*'
    +
               | 'SIMPLE*'
    +
    + referenced by: + + references_specification + + referencing_columns: + + + + + + + + reference_column_list + + + + +
             ::= reference_column_list
    +
    + referenced by: + + referential_constraint_definition + + referenced_table_and_columns: + + + + + + + + table_name + + ( + + + reference_column_list + + ) + + + + + +
             ::= table_name ( '(' reference_column_list ')' )?
    +
    + referenced by: + + references_specification + + reference_column_list: + + + + + + + + column_name_list + + + + +
             ::= column_name_list
    +
    + referenced by: + + referenced_table_and_columns + referencing_columns + + referential_triggered_action: + + + + + + + + update_rule + + + delete_rule + + + delete_rule + + + update_rule + + + + +
             ::= update_rule delete_rule?
    +
               | delete_rule update_rule?
    +
    + referenced by: + + references_specification + + update_rule: + + + + + + + + ON + + + UPDATE + + + referential_action + + + + +
             ::= 'ON' 'UPDATE' referential_action
    +
    + referenced by: + + referential_triggered_action + + delete_rule: + + + + + + + + ON + + + DELETE + + + referential_action + + + + +
             ::= 'ON' 'DELETE' referential_action
    +
    + referenced by: + + referential_triggered_action + + referential_action: + + + + + + + + CASCADE* + + + SET + + + NULL + + + DEFAULT + + + RESTRICT + + NO + + + ACTION* + + + + + +
             ::= 'CASCADE*'
    +
               | 'SET' ( 'NULL' | 'DEFAULT' )
    +
               | RESTRICT
    +
               | 'NO' 'ACTION*'
    +
    + referenced by: + + delete_rule + reference_scope_check_action + update_rule + + check_constraint_definition: + + + + + + + + CHECK + + + ( + + + search_condition + + ) + + + + + +
             ::= 'CHECK' '(' search_condition ')'
    +
    + referenced by: + + column_constraint + domain_constraint + table_constraint + + alter_table_statement: + + + + + + + + ALTER + + + TABLE + + + table_name + + + alter_table_action + + + + +
             ::= 'ALTER' 'TABLE' table_name alter_table_action
    +
    + referenced by: + + SQL_schema_manipulation_statement + + alter_table_action: + + + + + + + + add_column_definition + + + alter_column_definition + + + drop_column_definition + + + add_table_constraint_definition + + + drop_table_constraint_definition + + + + +
             ::= add_column_definition
    +
               | alter_column_definition
    +
               | drop_column_definition
    +
               | add_table_constraint_definition
    +
               | drop_table_constraint_definition
    +
    + referenced by: + + alter_table_statement + + add_column_definition: + + + + + + + + ADD + + + COLUMN + + + column_definition + + + + +
             ::= 'ADD' 'COLUMN'? column_definition
    +
    + referenced by: + + alter_table_action + + alter_column_definition: + + + + + + + + ALTER + + + COLUMN + + + column_name + + + alter_column_action + + + + +
             ::= 'ALTER' 'COLUMN'? column_name alter_column_action
    +
    + referenced by: + + alter_table_action + + alter_column_action: + + + + + + + + set_column_default_clause + + + drop_column_default_clause + + + add_column_scope_clause + + + drop_column_scope_clause + + + alter_identity_column_specification + + + + +
             ::= set_column_default_clause
    +
               | drop_column_default_clause
    +
               | add_column_scope_clause
    +
               | drop_column_scope_clause
    +
               | alter_identity_column_specification
    +
    + referenced by: + + alter_column_definition + + set_column_default_clause: + + + + + + + + SET + + + default_clause + + + + +
             ::= 'SET' default_clause
    +
    + referenced by: + + alter_column_action + + drop_column_default_clause: + + + + + + + + DROP + + + DEFAULT + + + + + +
             ::= 'DROP' 'DEFAULT'
    +
    + referenced by: + + alter_column_action + + add_column_scope_clause: + + + + + + + + ADD + + + scope_clause + + + + +
             ::= 'ADD' scope_clause
    +
    + referenced by: + + alter_column_action + + drop_column_scope_clause: + + + + + + + + DROP + + + SCOPE + + + drop_behavior + + + + +
             ::= 'DROP' SCOPE drop_behavior
    +
    + referenced by: + + alter_column_action + + alter_identity_column_specification: + + + + + + + + alter_identity_column_option + + . + + + . + + + . + + + + + +
             ::= alter_identity_column_option . . .
    +
    + referenced by: + + alter_column_action + + alter_identity_column_option: + + + + + + + + alter_sequence_generator_restart_option + + SET + + + basic_sequence_generator_option + + + + + +
               | 'SET' basic_sequence_generator_option
    +
    + referenced by: + + alter_identity_column_specification + + drop_column_definition: + + + + + + + + DROP + + + COLUMN + + + column_name + + + drop_behavior + + + + +
             ::= 'DROP' 'COLUMN'? column_name drop_behavior
    +
    + referenced by: + + alter_table_action + + add_table_constraint_definition: + + + + + + + + ADD + + + table_constraint_definition + + + + +
             ::= 'ADD' table_constraint_definition
    +
    + referenced by: + + alter_table_action + + drop_table_constraint_definition: + + + + + + + + DROP + + + CONSTRAINT + + + constraint_name + + + drop_behavior + + + + +
             ::= 'DROP' 'CONSTRAINT' constraint_name drop_behavior
    +
    + referenced by: + + alter_table_action + + drop_table_statement: + + + + + + + + DROP + + + TABLE + + + table_name + + + drop_behavior + + + + +
             ::= 'DROP' 'TABLE' table_name drop_behavior
    +
    + referenced by: + + SQL_schema_manipulation_statement + + view_definition: + + + + + + + + CREATE + + + RECURSIVE + + + VIEW* + + + table_name + + + view_specification + + AS + + + query_expression + + WITH + + + levels_clause + + CHECK + + + OPTION* + + + + + +
             ::= 'CREATE' 'RECURSIVE'? 'VIEW*' table_name view_specification 'AS' query_expression ( 'WITH' levels_clause? 'CHECK' 'OPTION*' )?
    +
    + referenced by: + + SQL_schema_definition_statement + schema_element + + view_specification: + + + + + + + + regular_view_specification + + + referenceable_view_specification + + + + +
             ::= regular_view_specification
    +
               | referenceable_view_specification
    +
    + referenced by: + + view_definition + + regular_view_specification: + + + + + + + + ( + + + view_column_list + + ) + + + + + +
             ::= ( '(' view_column_list ')' )?
    +
    + referenced by: + + view_specification + + referenceable_view_specification: + + + + + + + + OF + + + path_resolved_user_defined_type_name + + + subview_clause + + + view_element_list + + + + + + + referenced by: + + view_specification + + subview_clause: + + + + + + + + UNDER* + + + table_name + + + + +
             ::= 'UNDER*' table_name
    +
    + referenced by: + + referenceable_view_specification + + view_element_list: + + + + + + + + ( + + + view_element + + , + + + ) + + + + + +
             ::= '(' view_element ( ',' view_element )* ')'
    +
    + referenced by: + + referenceable_view_specification + + view_element: + + + + + + + + self_referencing_column_specification + + + view_column_option + + + + + +
               | view_column_option
    +
    + referenced by: + + view_element_list + + view_column_option: + + + + + + + + column_name + + WITH + + + OPTIONS* + + + scope_clause + + + + +
             ::= column_name 'WITH' 'OPTIONS*' scope_clause
    +
    + referenced by: + + view_element + + levels_clause: + + + + + + + + CASCADED + + + LOCAL + + + + + +
             ::= 'CASCADED'
    +
               | 'LOCAL'
    +
    + referenced by: + + view_definition + + view_column_list: + + + + + + + + column_name_list + + + + +
             ::= column_name_list
    +
    + referenced by: + + regular_view_specification + + drop_view_statement: + + + + + + + + DROP + + + VIEW* + + + table_name + + + drop_behavior + + + + +
             ::= 'DROP' 'VIEW*' table_name drop_behavior
    +
    + referenced by: + + SQL_schema_manipulation_statement + + domain_definition: + + + + + + + + CREATE + + + DOMAIN* + + + domain_name + + AS + + + data_type + + + default_clause + + + domain_constraint + + + collate_clause + + + + +
             ::= 'CREATE' 'DOMAIN*' domain_name 'AS'? data_type default_clause? domain_constraint? collate_clause?
    +
    + referenced by: + + SQL_schema_definition_statement + schema_element + + domain_constraint: + + + + + + + + constraint_name_definition + + + check_constraint_definition + + + constraint_characteristics + + + + + + + referenced by: + + add_domain_constraint_definition + domain_definition + + alter_domain_statement: + + + + + + + + ALTER + + + DOMAIN* + + + domain_name + + + alter_domain_action + + + + +
             ::= 'ALTER' 'DOMAIN*' domain_name alter_domain_action
    +
    + referenced by: + + SQL_schema_manipulation_statement + + alter_domain_action: + + + + + + + + set_domain_default_clause + + + drop_domain_default_clause + + + add_domain_constraint_definition + + + drop_domain_constraint_definition + + + + +
             ::= set_domain_default_clause
    +
               | drop_domain_default_clause
    +
               | add_domain_constraint_definition
    +
               | drop_domain_constraint_definition
    +
    + referenced by: + + alter_domain_statement + + set_domain_default_clause: + + + + + + + + SET + + + default_clause + + + + +
             ::= 'SET' default_clause
    +
    + referenced by: + + alter_domain_action + + drop_domain_default_clause: + + + + + + + + DROP + + + DEFAULT + + + + + +
             ::= 'DROP' 'DEFAULT'
    +
    + referenced by: + + alter_domain_action + + add_domain_constraint_definition: + + + + + + + + ADD + + + domain_constraint + + + + +
             ::= 'ADD' domain_constraint
    +
    + referenced by: + + alter_domain_action + + drop_domain_constraint_definition: + + + + + + + + DROP + + + CONSTRAINT + + + constraint_name + + + + +
             ::= 'DROP' 'CONSTRAINT' constraint_name
    +
    + referenced by: + + alter_domain_action + + drop_domain_statement: + + + + + + + + DROP + + + DOMAIN* + + + domain_name + + + drop_behavior + + + + +
             ::= 'DROP' 'DOMAIN*' domain_name drop_behavior
    +
    + referenced by: + + SQL_schema_manipulation_statement + + character_set_definition: + + + + + + + + CREATE + + + CHARACTER + + + SET + + + character_set_name + + AS + + + character_set_source + + + collate_clause + + + + +
             ::= 'CREATE' 'CHARACTER' 'SET' character_set_name 'AS'? character_set_source collate_clause?
    +
    + referenced by: + + SQL_schema_definition_statement + schema_element + + character_set_source: + + + + + + + + GET + + + character_set_specification + + + + +
             ::= 'GET' character_set_specification
    +
    + referenced by: + + character_set_definition + + drop_character_set_statement: + + + + + + + + DROP + + + CHARACTER + + + SET + + + character_set_name + + + + +
             ::= 'DROP' 'CHARACTER' 'SET' character_set_name
    +
    + referenced by: + + SQL_schema_manipulation_statement + + collation_definition: + + + + + + + + CREATE + + + COLLATION* + + + collation_name + + FOR + + + character_set_specification + + FROM + + + existing_collation_name + + + pad_characteristic + + + + +
             ::= 'CREATE' 'COLLATION*' collation_name 'FOR' character_set_specification 'FROM' existing_collation_name pad_characteristic?
    +
    + referenced by: + + SQL_schema_definition_statement + schema_element + + existing_collation_name: + + + + + + + + collation_name + + + + +
             ::= collation_name
    +
    + referenced by: + + collation_definition + + pad_characteristic: + + + + + + + + NO + + + PAD* + + + PAD* + + + SPACE* + + + + + +
             ::= 'NO' 'PAD*'
    +
               | 'PAD*' 'SPACE*'
    +
    + referenced by: + + collation_definition + + drop_collation_statement: + + + + + + + + DROP + + + COLLATION* + + + collation_name + + + drop_behavior + + + + +
             ::= 'DROP' 'COLLATION*' collation_name drop_behavior
    +
    + referenced by: + + SQL_schema_manipulation_statement + + transliteration_definition: + + + + + + + + CREATE + + + TRANSLATION + + + transliteration_name + + FOR + + + source_character_set_specification + + TO + + + target_character_set_specification + + FROM + + + transliteration_source + + + + + + + referenced by: + + SQL_schema_definition_statement + schema_element + + source_character_set_specification: + + + + + + + + character_set_specification + + + + +
             ::= character_set_specification
    +
    + referenced by: + + transliteration_definition + + target_character_set_specification: + + + + + + + + character_set_specification + + + + +
             ::= character_set_specification
    +
    + referenced by: + + transliteration_definition + + transliteration_source: + + + + + + + + existing_transliteration_name + + + transliteration_routine + + + + +
             ::= existing_transliteration_name
    +
               | transliteration_routine
    +
    + referenced by: + + transliteration_definition + + existing_transliteration_name: + + + + + + + + transliteration_name + + + + +
             ::= transliteration_name
    +
    + referenced by: + + transliteration_source + + transliteration_routine: + + + + + + + + specific_routine_designator + + + + +
             ::= specific_routine_designator
    +
    + referenced by: + + transliteration_source + + drop_transliteration_statement: + + + + + + + + DROP + + + TRANSLATION + + + transliteration_name + + + + +
             ::= 'DROP' 'TRANSLATION' transliteration_name
    +
    + referenced by: + + SQL_schema_manipulation_statement + + assertion_definition: + + + + + + + + CREATE + + + ASSERTION* + + + constraint_name + + CHECK + + + ( + + + search_condition + + ) + + + constraint_characteristics + + + + +
             ::= 'CREATE' 'ASSERTION*' constraint_name 'CHECK' '(' search_condition ')' constraint_characteristics?
    +
    + referenced by: + + SQL_schema_definition_statement + schema_element + + drop_assertion_statement: + + + + + + + + DROP + + + ASSERTION* + + + constraint_name + + + + +
             ::= 'DROP' 'ASSERTION*' constraint_name
    +
    + referenced by: + + SQL_schema_manipulation_statement + + trigger_definition: + + + + + + + + CREATE + + + TRIGGER + + + trigger_name + + + trigger_action_time + + + trigger_event + + ON + + + table_name + + REFERENCING + + + old_or_new_values_alias_list + + + triggered_action + + + + +
             ::= 'CREATE' 'TRIGGER' trigger_name trigger_action_time trigger_event 'ON' table_name ( 'REFERENCING' old_or_new_values_alias_list )? triggered_action
    +
    + referenced by: + + SQL_schema_definition_statement + schema_element + + trigger_action_time: + + + + + + + + BEFORE* + + + AFTER* + + + + + +
             ::= 'BEFORE*'
    +
               | 'AFTER*'
    +
    + referenced by: + + trigger_definition + + trigger_event: + + + + + + + + INSERT + + + DELETE + + + UPDATE + + + OF + + + trigger_column_list + + + + +
             ::= 'INSERT'
    +
               | 'DELETE'
    +
               | 'UPDATE' ( 'OF' trigger_column_list )?
    +
    + referenced by: + + trigger_definition + + trigger_column_list: + + + + + + + + column_name_list + + + + +
             ::= column_name_list
    +
    + referenced by: + + trigger_event + + triggered_action: + + + + + + + + FOR + + + EACH + + + ROW + + + STATEMENT* + + + WHEN + + + ( + + + search_condition + + ) + + + triggered_SQL_statement + + + + +
             ::= ( 'FOR' 'EACH' ( 'ROW' | 'STATEMENT*' ) )? ( 'WHEN' '(' search_condition ')' )? triggered_SQL_statement
    +
    + referenced by: + + trigger_definition + + triggered_SQL_statement: + + + + + + + + SQL_procedure_statement + + BEGIN + + + ATOMIC + + + SQL_procedure_statement + + ; + + + END + + + + + +
             ::= SQL_procedure_statement
    +
               | 'BEGIN' 'ATOMIC' ( SQL_procedure_statement ';' )* 'END'
    +
    + referenced by: + + triggered_action + + old_or_new_values_alias_list: + + + + + + + + old_or_new_values_alias + + . + + + . + + + . + + + + + +
             ::= old_or_new_values_alias . . .
    +
    + referenced by: + + trigger_definition + + old_or_new_values_alias: + + + + + + + + OLD + + + ROW + + + AS + + + old_values_correlation_name + + TABLE + + + AS + + + old_values_table_alias + + NEW + + + ROW + + + AS + + + new_values_correlation_name + + TABLE + + + AS + + + new_values_table_alias + + + + +
             ::= 'OLD' ( 'ROW'? 'AS'? old_values_correlation_name | 'TABLE' 'AS'? old_values_table_alias )
    +
               | 'NEW' ( 'ROW'? 'AS'? new_values_correlation_name | 'TABLE' 'AS'? new_values_table_alias )
    +
    + referenced by: + + old_or_new_values_alias_list + + old_values_table_alias: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + old_or_new_values_alias + + new_values_table_alias: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + old_or_new_values_alias + + old_values_correlation_name: + + + + + + + + correlation_name + + + + +
             ::= correlation_name
    +
    + referenced by: + + old_or_new_values_alias + + new_values_correlation_name: + + + + + + + + correlation_name + + + + +
             ::= correlation_name
    +
    + referenced by: + + old_or_new_values_alias + + drop_trigger_statement: + + + + + + + + DROP + + + TRIGGER + + + trigger_name + + + + +
             ::= 'DROP' 'TRIGGER' trigger_name
    +
    + referenced by: + + SQL_schema_manipulation_statement + + user_defined_type_definition: + + + + + + + + CREATE + + + TYPE* + + + user_defined_type_body + + + + +
             ::= 'CREATE' 'TYPE*' user_defined_type_body
    +
    + referenced by: + + SQL_schema_definition_statement + schema_element + + user_defined_type_body: + + + + + + + + schema_resolved_user_defined_type_name + + + subtype_clause + + AS + + + representation + + + user_defined_type_option_list + + + method_specification_list + + + + + + + referenced by: + + user_defined_type_definition + + user_defined_type_option_list: + + + + + + + + user_defined_type_option + + + user_defined_type_option + + + + + + + referenced by: + + user_defined_type_body + + user_defined_type_option: + + + + + + + + instantiable_clause + + + finality + + + reference_type_specification + + + ref_cast_option + + + cast_option + + + + +
             ::= instantiable_clause
    +
               | finality
    +
               | reference_type_specification
    +
               | ref_cast_option
    +
               | cast_option
    +
    + referenced by: + + user_defined_type_option_list + + subtype_clause: + + + + + + + + UNDER* + + + supertype_name + + + + +
             ::= 'UNDER*' supertype_name
    +
    + referenced by: + + user_defined_type_body + + supertype_name: + + + + + + + + path_resolved_user_defined_type_name + + + + + + + referenced by: + + subtype_clause + + representation: + + + + + + + + predefined_type + + + member_list + + + + +
             ::= predefined_type
    +
               | member_list
    +
    + referenced by: + + user_defined_type_body + + member_list: + + + + + + + + ( + + + member + + , + + + ) + + + + + +
             ::= '(' member ( ',' member )* ')'
    +
    + referenced by: + + representation + + member: + + + + + + + + attribute_definition + + + + + + referenced by: + + member_list + + instantiable_clause: + + + + + + + + NOT + + + INSTANTIABLE* + + + + + +
             ::= 'NOT'? 'INSTANTIABLE*'
    +
    + referenced by: + + user_defined_type_option + + finality: + + + + + + + + NOT + + + FINAL* + + + + +
    finality ::= 'NOT'? 'FINAL*'
    +
    + referenced by: + + user_defined_type_option + + reference_type_specification: + + + + + + + + user_defined_representation + + + derived_representation + + + system_generated_representation + + + + +
             ::= user_defined_representation
    +
               | derived_representation
    +
               | system_generated_representation
    +
    + referenced by: + + user_defined_type_option + + user_defined_representation: + + + + + + + + REF + + + USING + + + predefined_type + + + + +
             ::= 'REF' 'USING' predefined_type
    +
    + referenced by: + + reference_type_specification + + derived_representation: + + + + + + + + REF + + + FROM + + + list_of_attributes + + + + +
             ::= 'REF' 'FROM' list_of_attributes
    +
    + referenced by: + + reference_type_specification + + system_generated_representation: + + + + + + + + REF + + + IS + + + SYSTEM + + + GENERATED + + + + +
             ::= 'REF' 'IS' 'SYSTEM' GENERATED
    +
    + referenced by: + + reference_type_specification + + ref_cast_option: + + + + + + + + cast_to_ref + + + cast_to_type + + + + +
             ::= cast_to_ref? cast_to_type?
    +
    + referenced by: + + user_defined_type_option + + cast_to_ref: + + + + + + + + CAST + + + ( + + + SOURCE* + + + AS + + + REF + + + ) + + + WITH + + + cast_to_ref_identifier + + + + +
             ::= 'CAST' '(' 'SOURCE*' 'AS' 'REF' ')' 'WITH' cast_to_ref_identifier
    +
    + referenced by: + + ref_cast_option + + cast_to_ref_identifier: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + cast_to_ref + + cast_to_type: + + + + + + + + CAST + + + ( + + + REF + + + AS + + + SOURCE* + + + ) + + + WITH + + + cast_to_type_identifier + + + + +
             ::= 'CAST' '(' 'REF' 'AS' 'SOURCE*' ')' 'WITH' cast_to_type_identifier
    +
    + referenced by: + + ref_cast_option + + cast_to_type_identifier: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + cast_to_type + + list_of_attributes: + + + + + + + + ( + + + attribute_name + + , + + + ) + + + + + +
             ::= '(' attribute_name ( ',' attribute_name )* ')'
    +
    + referenced by: + + derived_representation + + cast_option: + + + + + + + + cast_to_distinct + + + cast_to_source + + + + +
             ::= cast_to_distinct? cast_to_source?
    +
    + referenced by: + + user_defined_type_option + + cast_to_distinct: + + + + + + + + CAST + + + ( + + + SOURCE* + + + AS + + + DISTINCT + + + ) + + + WITH + + + cast_to_distinct_identifier + + + + +
             ::= 'CAST' '(' 'SOURCE*' 'AS' 'DISTINCT' ')' 'WITH' cast_to_distinct_identifier
    +
    + referenced by: + + cast_option + + cast_to_distinct_identifier: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + cast_to_distinct + + cast_to_source: + + + + + + + + CAST + + + ( + + + DISTINCT + + + AS + + + SOURCE* + + + ) + + + WITH + + + cast_to_source_identifier + + + + +
             ::= 'CAST' '(' 'DISTINCT' 'AS' 'SOURCE*' ')' 'WITH' cast_to_source_identifier
    +
    + referenced by: + + cast_option + + cast_to_source_identifier: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + cast_to_source + + method_specification_list: + + + + + + + + method_specification + + , + + + + + +
             ::= method_specification ( ',' method_specification )*
    +
    + referenced by: + + user_defined_type_body + + method_specification: + + + + + + + + original_method_specification + + + overriding_method_specification + + + + +
             ::= original_method_specification
    +
               | overriding_method_specification
    +
    + referenced by: + + method_specification_list + + original_method_specification: + + + + + + + + partial_method_specification + + SELF* + + + AS + + + RESULT + + + SELF* + + + AS + + + LOCATOR* + + + method_characteristics + + + + +
             ::= partial_method_specification ( 'SELF*' 'AS' 'RESULT' )? ( 'SELF*' 'AS' 'LOCATOR*' )? method_characteristics?
    +
    + referenced by: + + add_original_method_specification + method_specification + + overriding_method_specification: + + + + + + + + OVERRIDING* + + + partial_method_specification + + + + +
             ::= 'OVERRIDING*' partial_method_specification
    +
    + referenced by: + + add_overriding_method_specification + method_specification + + partial_method_specification: + + + + + + + + INSTANCE* + + + STATIC + + + CONSTRUCTOR + + METHOD + + + method_name + + + SQL_parameter_declaration_list + + + returns_clause + + SPECIFIC + + + specific_method_name + + + + +
             ::= ( 'INSTANCE*' | 'STATIC' | CONSTRUCTOR )? 'METHOD' method_name SQL_parameter_declaration_list returns_clause ( 'SPECIFIC' specific_method_name )?
    +
    + referenced by: + + original_method_specification + overriding_method_specification + + specific_method_name: + + + + + + + + schema_name + + . + + + qualified_identifier_ + + + + +
             ::= ( schema_name '.' )? qualified_identifier_
    +
    + referenced by: + + method_specification_designator + partial_method_specification + + method_characteristics: + + + + + + + + method_characteristic + + . + + + . + + + . + + + + + +
             ::= method_characteristic . . .
    +
    + referenced by: + + original_method_specification + + method_characteristic: + + + + + + + + language_clause + + + parameter_style_clause + + + deterministic_characteristic + + + SQL_data_access_indication + + + null_call_clause + + + + +
             ::= language_clause
    +
               | parameter_style_clause
    +
               | deterministic_characteristic
    +
               | SQL_data_access_indication
    +
               | null_call_clause
    +
    + referenced by: + + method_characteristics + + attribute_definition: + + + + + + + + attribute_name + + + data_type + + + reference_scope_check + + + attribute_default + + + collate_clause + + + + + + + referenced by: + + add_attribute_definition + member + + attribute_default: + + + + + + + + default_clause + + + + +
             ::= default_clause
    +
    + referenced by: + + attribute_definition + + alter_type_statement: + + + + + + + + ALTER + + + TYPE* + + + schema_resolved_user_defined_type_name + + + alter_type_action + + + + +
             ::= 'ALTER' 'TYPE*' schema_resolved_user_defined_type_name alter_type_action
    +
    + referenced by: + + SQL_schema_manipulation_statement + + alter_type_action: + + + + + + + + add_attribute_definition + + + drop_attribute_definition + + + add_original_method_specification + + + add_overriding_method_specification + + + drop_method_specification + + + + +
             ::= add_attribute_definition
    +
               | drop_attribute_definition
    +
               | add_original_method_specification
    +
               | add_overriding_method_specification
    +
               | drop_method_specification
    +
    + referenced by: + + alter_type_statement + + add_attribute_definition: + + + + + + + + ADD + + + ATTRIBUTE* + + + attribute_definition + + + + +
             ::= 'ADD' 'ATTRIBUTE*' attribute_definition
    +
    + referenced by: + + alter_type_action + + drop_attribute_definition: + + + + + + + + DROP + + + ATTRIBUTE* + + + attribute_name + + + RESTRICT + + + + +
             ::= 'DROP' 'ATTRIBUTE*' attribute_name RESTRICT
    +
    + referenced by: + + alter_type_action + + add_original_method_specification: + + + + + + + + ADD + + + original_method_specification + + + + +
             ::= 'ADD' original_method_specification
    +
    + referenced by: + + alter_type_action + + add_overriding_method_specification: + + + + + + + + ADD + + + overriding_method_specification + + + + +
             ::= 'ADD' overriding_method_specification
    +
    + referenced by: + + alter_type_action + + drop_method_specification: + + + + + + + + DROP + + + specific_method_specification_designator + + + RESTRICT + + + + + + + referenced by: + + alter_type_action + + specific_method_specification_designator: + + + + + + + + INSTANCE* + + + STATIC + + + CONSTRUCTOR + + METHOD + + + method_name + + + data_type_list + + + + +
             ::= ( 'INSTANCE*' | 'STATIC' | CONSTRUCTOR )? 'METHOD' method_name data_type_list
    +
    + referenced by: + + drop_method_specification + + drop_data_type_statement: + + + + + + + + DROP + + + TYPE* + + + schema_resolved_user_defined_type_name + + + drop_behavior + + + + +
             ::= 'DROP' 'TYPE*' schema_resolved_user_defined_type_name drop_behavior
    +
    + referenced by: + + SQL_schema_manipulation_statement + + SQL_invoked_routine: + + + + + + + + schema_routine + + + + +
             ::= schema_routine
    +
    + referenced by: + + SQL_schema_definition_statement + + schema_routine: + + + + + + + + schema_procedure + + + schema_function + + + + +
             ::= schema_procedure
    +
               | schema_function
    +
    + referenced by: + + SQL_invoked_routine + schema_element + + schema_procedure: + + + + + + + + CREATE + + + SQL_invoked_procedure + + + + +
             ::= 'CREATE' SQL_invoked_procedure
    +
    + referenced by: + + schema_routine + + schema_function: + + + + + + + + CREATE + + + SQL_invoked_function + + + + +
             ::= 'CREATE' SQL_invoked_function
    +
    + referenced by: + + schema_routine + + SQL_invoked_procedure: + + + + + + + + PROCEDURE + + + schema_qualified_routine_name + + + SQL_parameter_declaration_list + + + routine_characteristics + + + routine_body + + + + + + + referenced by: + + schema_procedure + + SQL_invoked_function: + + + + + + + + function_specification + + + method_specification_designator + + + routine_body + + + + + + + referenced by: + + schema_function + + SQL_parameter_declaration_list: + + + + + + + + ( + + + SQL_parameter_declaration + + , + + + ) + + + + + +
             ::= '(' ( SQL_parameter_declaration ( ',' SQL_parameter_declaration )* )? ')'
    +
    + referenced by: + + SQL_invoked_procedure + function_specification + method_specification_designator + partial_method_specification + + SQL_parameter_declaration: + + + + + + + + parameter_mode + + + SQL_parameter_name + + + parameter_type + + RESULT + + + + + +
             ::= parameter_mode? SQL_parameter_name? parameter_type 'RESULT'?
    +
    + referenced by: + + SQL_parameter_declaration_list + + parameter_mode: + + + + + + + + IN + + + OUT + + + INOUT + + + + + +
             ::= 'IN'
    +
               | 'OUT'
    +
               | 'INOUT'
    +
    + referenced by: + + SQL_parameter_declaration + + parameter_type: + + + + + + + + data_type + + + locator_indication + + + + +
             ::= data_type locator_indication?
    +
    + referenced by: + + SQL_parameter_declaration + + locator_indication: + + + + + + + + AS + + + LOCATOR* + + + + + +
             ::= 'AS' 'LOCATOR*'
    +
    + referenced by: + + host_parameter_data_type + parameter_type + result_cast_from_type + returns_data_type + + function_specification: + + + + + + + + FUNCTION + + + schema_qualified_routine_name + + + SQL_parameter_declaration_list + + + returns_clause + + + routine_characteristics + + + dispatch_clause + + + + + + + referenced by: + + SQL_invoked_function + + method_specification_designator: + + + + + + + + SPECIFIC + + + METHOD + + + specific_method_name + + INSTANCE* + + + STATIC + + + CONSTRUCTOR + + METHOD + + + method_name + + + SQL_parameter_declaration_list + + + returns_clause + + FOR + + + schema_resolved_user_defined_type_name + + + + +
             ::= 'SPECIFIC' 'METHOD' specific_method_name
    +
               | ( 'INSTANCE*' | 'STATIC' | CONSTRUCTOR )? 'METHOD' method_name SQL_parameter_declaration_list returns_clause? 'FOR' schema_resolved_user_defined_type_name
    +
    + referenced by: + + SQL_invoked_function + + routine_characteristics: + + + + + + + + routine_characteristic + + + + +
             ::= routine_characteristic?
    +
    + referenced by: + + SQL_invoked_procedure + function_specification + + routine_characteristic: + + + + + + + + language_clause + + + parameter_style_clause + + SPECIFIC + + + specific_name + + + deterministic_characteristic + + + SQL_data_access_indication + + + null_call_clause + + + dynamic_result_sets_characteristic + + + savepoint_level_indication + + + + +
             ::= language_clause
    +
               | parameter_style_clause
    +
               | 'SPECIFIC' specific_name
    +
               | deterministic_characteristic
    +
               | SQL_data_access_indication
    +
               | null_call_clause
    +
               | dynamic_result_sets_characteristic
    +
               | savepoint_level_indication
    +
    + referenced by: + + routine_characteristics + + savepoint_level_indication: + + + + + + + + NEW + + + OLD + + + SAVEPOINT + + + LEVEL* + + + + + +
             ::= ( 'NEW' | 'OLD' ) 'SAVEPOINT' 'LEVEL*'
    +
    + referenced by: + + routine_characteristic + + dynamic_result_sets_characteristic: + + + + + + + + DYNAMIC + + + RESULT + + + SETS* + + + maximum_dynamic_result_sets + + + + +
             ::= 'DYNAMIC' 'RESULT' 'SETS*' maximum_dynamic_result_sets
    +
    + referenced by: + + alter_routine_characteristic + routine_characteristic + + parameter_style_clause: + + + + + + + + PARAMETER + + + STYLE* + + + parameter_style + + + + +
             ::= 'PARAMETER' 'STYLE*' parameter_style
    +
    + referenced by: + + alter_routine_characteristic + external_body_reference + method_characteristic + routine_characteristic + + dispatch_clause: + + + + + + + + STATIC + + + DISPATCH* + + + + + +
             ::= 'STATIC' 'DISPATCH*'
    +
    + referenced by: + + function_specification + + returns_clause: + + + + + + + + RETURNS + + + returns_type + + + + +
             ::= 'RETURNS' returns_type
    +
    + referenced by: + + function_specification + method_specification_designator + partial_method_specification + + returns_type: + + + + + + + + returns_data_type + + + result_cast + + + returns_table_type + + + + +
             ::= returns_data_type result_cast?
    +
               | returns_table_type
    +
    + referenced by: + + returns_clause + + returns_table_type: + + + + + + + + TABLE + + + table_function_column_list + + + + +
             ::= 'TABLE' table_function_column_list
    +
    + referenced by: + + returns_type + + table_function_column_list: + + + + + + + + ( + + + table_function_column_list_element + + , + + + ) + + + + + + + + referenced by: + + returns_table_type + + table_function_column_list_element: + + + + + + + + column_name + + + data_type + + + + +
             ::= column_name data_type
    +
    + referenced by: + + table_function_column_list + + result_cast: + + + + + + + + CAST + + + FROM + + + result_cast_from_type + + + + +
             ::= 'CAST' 'FROM' result_cast_from_type
    +
    + referenced by: + + returns_type + + result_cast_from_type: + + + + + + + + data_type + + + locator_indication + + + + +
             ::= data_type locator_indication?
    +
    + referenced by: + + result_cast + + returns_data_type: + + + + + + + + data_type + + + locator_indication + + + + +
             ::= data_type locator_indication?
    +
    + referenced by: + + returns_type + + routine_body: + + + + + + + + SQL_routine_spec + + + external_body_reference + + + + +
             ::= SQL_routine_spec
    +
               | external_body_reference
    +
    + referenced by: + + SQL_invoked_function + SQL_invoked_procedure + + SQL_routine_spec: + + + + + + + + rights_clause + + + SQL_routine_body + + + + +
             ::= rights_clause? SQL_routine_body
    +
    + referenced by: + + routine_body + + rights_clause: + + + + + + + + SQL + + + SECURITY* + + + INVOKER* + + + DEFINER* + + + + + +
             ::= 'SQL' 'SECURITY*' ( 'INVOKER*' | 'DEFINER*' )
    +
    + referenced by: + + SQL_routine_spec + + SQL_routine_body: + + + + + + + + SQL_procedure_statement + + + + +
             ::= SQL_procedure_statement
    +
    + referenced by: + + SQL_routine_spec + + external_body_reference: + + + + + + + + EXTERNAL + + + NAME* + + + external_routine_name + + + parameter_style_clause + + + transform_group_specification + + + external_security_clause + + + + + + + referenced by: + + routine_body + + external_security_clause: + + + + + + + + EXTERNAL + + + SECURITY* + + + DEFINER* + + + INVOKER* + + + IMPLEMENTATION* + + + DEFINED* + + + + + +
             ::= 'EXTERNAL' 'SECURITY*' ( 'DEFINER*' | 'INVOKER*' | 'IMPLEMENTATION*' + 'DEFINED*' )
    +
    + referenced by: + + external_body_reference + + parameter_style: + + + + + + + + SQL + + + GENERAL* + + + + + +
             ::= 'SQL'
    +
               | 'GENERAL*'
    +
    + referenced by: + + parameter_style_clause + + deterministic_characteristic: + + + + + + + + NOT + + + DETERMINISTIC + + + + + +
             ::= 'NOT'? 'DETERMINISTIC'
    +
    + referenced by: + + method_characteristic + routine_characteristic + + SQL_data_access_indication: + + + + + + + + NO + + + CONTAINS* + + + SQL + + + READS + + + MODIFIES + + + SQL + + + DATA* + + + + + +
             ::= ( 'NO' | 'CONTAINS*' ) 'SQL'
    +
               | ( 'READS' | 'MODIFIES' ) 'SQL' 'DATA*'
    +
    + referenced by: + + alter_routine_characteristic + method_characteristic + routine_characteristic + + null_call_clause: + + + + + + + + RETURNS + + + NULL + + + CALLED + + + ON + + + NULL + + + INPUT + + + + + +
             ::= ( 'RETURNS' 'NULL' | 'CALLED' ) 'ON' 'NULL' 'INPUT'
    +
    + referenced by: + + alter_routine_characteristic + method_characteristic + routine_characteristic + + maximum_dynamic_result_sets: + + + + + + + + unsigned_integer + + + + +
             ::= unsigned_integer
    +
    + referenced by: + + dynamic_result_sets_characteristic + + transform_group_specification: + + + + + + + + TRANSFORM* + + + GROUP + + + single_group_specification + + + multiple_group_specification + + + + +
             ::= 'TRANSFORM*' 'GROUP' ( single_group_specification | multiple_group_specification )
    +
    + referenced by: + + embedded_transform_group_specification + external_body_reference + module_transform_group_specification + + single_group_specification: + + + + + + + + group_name + + + + +
             ::= group_name
    +
    + referenced by: + + transform_group_specification + + multiple_group_specification: + + + + + + + + group_specification + + , + + + + + +
             ::= group_specification ( ',' group_specification )*
    +
    + referenced by: + + transform_group_specification + + group_specification: + + + + + + + + group_name + + FOR + + + TYPE* + + + path_resolved_user_defined_type_name + + + + +
             ::= group_name 'FOR' 'TYPE*' path_resolved_user_defined_type_name
    +
    + referenced by: + + multiple_group_specification + + alter_routine_statement: + + + + + + + + ALTER + + + specific_routine_designator + + + alter_routine_characteristics + + + alter_routine_behavior + + + + + + + referenced by: + + SQL_schema_manipulation_statement + + alter_routine_characteristics: + + + + + + + + alter_routine_characteristic + + . + + + . + + + . + + + + + +
             ::= alter_routine_characteristic . . .
    +
    + referenced by: + + alter_routine_statement + + alter_routine_characteristic: + + + + + + + + language_clause + + + parameter_style_clause + + + SQL_data_access_indication + + + null_call_clause + + + dynamic_result_sets_characteristic + + NAME* + + + external_routine_name + + + + +
             ::= language_clause
    +
               | parameter_style_clause
    +
               | SQL_data_access_indication
    +
               | null_call_clause
    +
               | dynamic_result_sets_characteristic
    +
               | 'NAME*' external_routine_name
    +
    + referenced by: + + alter_routine_characteristics + + alter_routine_behavior: + + + + + + + + RESTRICT + + + + +
             ::= RESTRICT
    +
    + referenced by: + + alter_routine_statement + + drop_routine_statement: + + + + + + + + DROP + + + specific_routine_designator + + + drop_behavior + + + + +
             ::= 'DROP' specific_routine_designator drop_behavior
    +
    + referenced by: + + SQL_schema_manipulation_statement + + user_defined_cast_definition: + + + + + + + + CREATE + + + CAST + + + ( + + + source_data_type + + AS + + + target_data_type + + ) + + + WITH + + + cast_function + + AS + + + ASSIGNMENT* + + + + + +
             ::= 'CREATE' 'CAST' '(' source_data_type 'AS' target_data_type ')' 'WITH' cast_function ( 'AS' 'ASSIGNMENT*' )?
    +
    + referenced by: + + SQL_schema_definition_statement + schema_element + + cast_function: + + + + + + + + specific_routine_designator + + + + +
             ::= specific_routine_designator
    +
    + referenced by: + + user_defined_cast_definition + + source_data_type: + + + + + + + + data_type + + + + +
             ::= data_type
    +
    + referenced by: + + drop_user_defined_cast_statement + user_defined_cast_definition + + target_data_type: + + + + + + + + data_type + + + + +
             ::= data_type
    +
    + referenced by: + + drop_user_defined_cast_statement + user_defined_cast_definition + + drop_user_defined_cast_statement: + + + + + + + + DROP + + + CAST + + + ( + + + source_data_type + + AS + + + target_data_type + + ) + + + drop_behavior + + + + +
             ::= 'DROP' 'CAST' '(' source_data_type 'AS' target_data_type ')' drop_behavior
    +
    + referenced by: + + SQL_schema_manipulation_statement + + user_defined_ordering_definition: + + + + + + + + CREATE + + + ORDERING* + + + FOR + + + schema_resolved_user_defined_type_name + + + ordering_form + + + + +
             ::= 'CREATE' 'ORDERING*' 'FOR' schema_resolved_user_defined_type_name ordering_form
    +
    + referenced by: + + SQL_schema_definition_statement + schema_element + + ordering_form: + + + + + + + + equals_ordering_form + + + full_ordering_form + + + + +
             ::= equals_ordering_form
    +
               | full_ordering_form
    +
    + referenced by: + + user_defined_ordering_definition + + equals_ordering_form: + + + + + + + + EQUALS* + + + ONLY + + + BY + + + ordering_category + + + + +
             ::= 'EQUALS*' 'ONLY' 'BY' ordering_category
    +
    + referenced by: + + ordering_form + + full_ordering_form: + + + + + + + + ORDER + + + FULL + + + BY + + + ordering_category + + + + +
             ::= 'ORDER' 'FULL' 'BY' ordering_category
    +
    + referenced by: + + ordering_form + + ordering_category: + + + + + + + + relative_category + + + map_category + + + state_category + + + + +
             ::= relative_category
    +
               | map_category
    +
               | state_category
    +
    + referenced by: + + equals_ordering_form + full_ordering_form + + relative_category: + + + + + + + + RELATIVE* + + + WITH + + + relative_function_specification + + + + +
             ::= 'RELATIVE*' 'WITH' relative_function_specification
    +
    + referenced by: + + ordering_category + + map_category: + + + + + + + + MAP* + + + WITH + + + map_function_specification + + + + +
             ::= 'MAP*' 'WITH' map_function_specification
    +
    + referenced by: + + ordering_category + + state_category: + + + + + + + + STATE* + + + specific_name + + + + +
             ::= 'STATE*' specific_name?
    +
    + referenced by: + + ordering_category + + relative_function_specification: + + + + + + + + specific_routine_designator + + + + +
             ::= specific_routine_designator
    +
    + referenced by: + + relative_category + + map_function_specification: + + + + + + + + specific_routine_designator + + + + +
             ::= specific_routine_designator
    +
    + referenced by: + + map_category + + drop_user_defined_ordering_statement: + + + + + + + + DROP + + + ORDERING* + + + FOR + + + schema_resolved_user_defined_type_name + + + drop_behavior + + + + +
             ::= 'DROP' 'ORDERING*' 'FOR' schema_resolved_user_defined_type_name drop_behavior
    +
    + referenced by: + + SQL_schema_manipulation_statement + + transform_definition: + + + + + + + + CREATE + + + TRANSFORM* + + + TRANSFORMS* + + + FOR + + + schema_resolved_user_defined_type_name + + + transform_group + + . + + + . + + + . + + + + + +
             ::= 'CREATE' ( 'TRANSFORM*' | 'TRANSFORMS*' ) 'FOR' schema_resolved_user_defined_type_name transform_group . . .
    +
    + referenced by: + + SQL_schema_definition_statement + schema_element + + transform_group: + + + + + + + + group_name + + ( + + + transform_element_list + + ) + + + + + +
             ::= group_name '(' transform_element_list ')'
    +
    + referenced by: + + transform_definition + + group_name: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + alter_group + group_specification + single_group_specification + transform_group + transform_group_element + + transform_element_list: + + + + + + + + transform_element + + , + + + transform_element + + + + +
             ::= transform_element ( ',' transform_element )?
    +
    + referenced by: + + add_transform_element_list + transform_group + + transform_element: + + + + + + + + to_sql + + + from_sql + + + + +
             ::= to_sql
    +
               | from_sql
    +
    + referenced by: + + transform_element_list + + to_sql: + + + + + + + + TO + + + SQL + + + WITH + + + to_sql_function + + + +
    to_sql   ::= 'TO' 'SQL' 'WITH' to_sql_function
    +
    + referenced by: + + transform_element + + from_sql: + + + + + + + + FROM + + + SQL + + + WITH + + + from_sql_function + + + +
    from_sql ::= 'FROM' 'SQL' 'WITH' from_sql_function
    +
    + referenced by: + + transform_element + + to_sql_function: + + + + + + + + specific_routine_designator + + + + +
             ::= specific_routine_designator
    +
    + referenced by: + + to_sql + + from_sql_function: + + + + + + + + specific_routine_designator + + + + +
             ::= specific_routine_designator
    +
    + referenced by: + + from_sql + + alter_transform_statement: + + + + + + + + ALTER + + + TRANSFORM* + + + TRANSFORMS* + + + FOR + + + schema_resolved_user_defined_type_name + + + alter_group + + . + + + . + + + . + + + + + +
             ::= 'ALTER' ( 'TRANSFORM*' | 'TRANSFORMS*' ) 'FOR' schema_resolved_user_defined_type_name alter_group . . .
    +
    + referenced by: + + SQL_schema_manipulation_statement + + alter_group: + + + + + + + + group_name + + ( + + + alter_transform_action_list + + ) + + + + + +
             ::= group_name '(' alter_transform_action_list ')'
    +
    + referenced by: + + alter_transform_statement + + alter_transform_action_list: + + + + + + + + alter_transform_action + + , + + + + + +
             ::= alter_transform_action ( ',' alter_transform_action )*
    +
    + referenced by: + + alter_group + + alter_transform_action: + + + + + + + + add_transform_element_list + + + drop_transform_element_list + + + + +
             ::= add_transform_element_list
    +
               | drop_transform_element_list
    +
    + referenced by: + + alter_transform_action_list + + add_transform_element_list: + + + + + + + + ADD + + + ( + + + transform_element_list + + ) + + + + + +
             ::= 'ADD' '(' transform_element_list ')'
    +
    + referenced by: + + alter_transform_action + + drop_transform_element_list: + + + + + + + + DROP + + + ( + + + transform_kind + + , + + + transform_kind + + + drop_behavior + + ) + + + + + +
             ::= 'DROP' '(' transform_kind ( ',' transform_kind )? drop_behavior ')'
    +
    + referenced by: + + alter_transform_action + + transform_kind: + + + + + + + + TO + + + FROM + + + SQL + + + + + +
             ::= ( 'TO' | 'FROM' ) 'SQL'
    +
    + referenced by: + + drop_transform_element_list + + drop_transform_statement: + + + + + + + + DROP + + + TRANSFORM* + + + TRANSFORMS* + + + transforms_to_be_dropped + + FOR + + + schema_resolved_user_defined_type_name + + + drop_behavior + + + + +
             ::= 'DROP' ( 'TRANSFORM*' | 'TRANSFORMS*' ) transforms_to_be_dropped 'FOR' schema_resolved_user_defined_type_name drop_behavior
    +
    + referenced by: + + SQL_schema_manipulation_statement + + transforms_to_be_dropped: + + + + + + + + ALL + + + transform_group_element + + + + +
             ::= 'ALL'
    +
               | transform_group_element
    +
    + referenced by: + + drop_transform_statement + + transform_group_element: + + + + + + + + group_name + + + + +
             ::= group_name
    +
    + referenced by: + + transforms_to_be_dropped + + sequence_generator_definition: + + + + + + + + CREATE + + + SEQUENCE* + + + sequence_generator_name + + + sequence_generator_options + + + + +
             ::= 'CREATE' 'SEQUENCE*' sequence_generator_name sequence_generator_options?
    +
    + referenced by: + + SQL_schema_definition_statement + schema_element + + sequence_generator_options: + + + + + + + + sequence_generator_option + + . + + + . + + + . + + + + + +
             ::= sequence_generator_option . . .
    +
    + referenced by: + + sequence_generator_definition + + sequence_generator_option: + + + + + + + + sequence_generator_data_type_option + + + common_sequence_generator_options + + + + + +
               | common_sequence_generator_options
    +
    + referenced by: + + sequence_generator_options + + common_sequence_generator_options: + + + + + + + + common_sequence_generator_option + + . + + + . + + + . + + + + + +
             ::= common_sequence_generator_option . . .
    +
    + referenced by: + + identity_column_specification + sequence_generator_option + + common_sequence_generator_option: + + + + + + + + sequence_generator_start_with_option + + + basic_sequence_generator_option + + + + + +
               | basic_sequence_generator_option
    +
    + referenced by: + + common_sequence_generator_options + + basic_sequence_generator_option: + + + + + + + + sequence_generator_increment_by_option + + + sequence_generator_maxvalue_option + + + sequence_generator_minvalue_option + + + sequence_generator_cycle_option + + + + + +
               | sequence_generator_maxvalue_option
    +
               | sequence_generator_minvalue_option
    +
               | sequence_generator_cycle_option
    +
    + referenced by: + + alter_identity_column_option + alter_sequence_generator_option + common_sequence_generator_option + + sequence_generator_data_type_option: + + + + + + + + AS + + + data_type + + + + +
             ::= 'AS' data_type
    +
    + referenced by: + + sequence_generator_option + + sequence_generator_start_with_option: + + + + + + + + START + + + WITH + + + sequence_generator_start_value + + + + +
             ::= 'START' 'WITH' sequence_generator_start_value
    +
    + referenced by: + + common_sequence_generator_option + + sequence_generator_start_value: + + + + + + + + signed_numeric_literal + + + + +
             ::= signed_numeric_literal
    +
    + referenced by: + + sequence_generator_start_with_option + + sequence_generator_increment_by_option: + + + + + + + + INCREMENT* + + + BY + + + sequence_generator_increment + + + + +
             ::= 'INCREMENT*' 'BY' sequence_generator_increment
    +
    + referenced by: + + basic_sequence_generator_option + + sequence_generator_increment: + + + + + + + + signed_numeric_literal + + + + +
             ::= signed_numeric_literal
    +
    + referenced by: + + sequence_generator_increment_by_option + + sequence_generator_maxvalue_option: + + + + + + + + MAXVALUE* + + + sequence_generator_max_value + + NO + + + MAXVALUE* + + + + + +
             ::= 'MAXVALUE*' sequence_generator_max_value
    +
               | 'NO' 'MAXVALUE*'
    +
    + referenced by: + + basic_sequence_generator_option + + sequence_generator_max_value: + + + + + + + + signed_numeric_literal + + + + +
             ::= signed_numeric_literal
    +
    + referenced by: + + sequence_generator_maxvalue_option + + sequence_generator_minvalue_option: + + + + + + + + MINVALUE* + + + sequence_generator_min_value + + NO + + + MINVALUE* + + + + + +
             ::= 'MINVALUE*' sequence_generator_min_value
    +
               | 'NO' 'MINVALUE*'
    +
    + referenced by: + + basic_sequence_generator_option + + sequence_generator_min_value: + + + + + + + + signed_numeric_literal + + + + +
             ::= signed_numeric_literal
    +
    + referenced by: + + sequence_generator_minvalue_option + + sequence_generator_cycle_option: + + + + + + + + NO + + + CYCLE + + + + + +
             ::= 'NO'? 'CYCLE'
    +
    + referenced by: + + basic_sequence_generator_option + + alter_sequence_generator_statement: + + + + + + + + ALTER + + + SEQUENCE* + + + sequence_generator_name + + + alter_sequence_generator_options + + + + +
             ::= 'ALTER' 'SEQUENCE*' sequence_generator_name alter_sequence_generator_options
    +
    + referenced by: + + SQL_schema_manipulation_statement + + alter_sequence_generator_options: + + + + + + + + alter_sequence_generator_option + + . + + + . + + + . + + + + + +
             ::= alter_sequence_generator_option . . .
    +
    + referenced by: + + alter_sequence_generator_statement + + alter_sequence_generator_option: + + + + + + + + alter_sequence_generator_restart_option + + + basic_sequence_generator_option + + + + + +
               | basic_sequence_generator_option
    +
    + referenced by: + + alter_sequence_generator_options + + alter_sequence_generator_restart_option: + + + + + + + + RESTART* + + + WITH + + + sequence_generator_restart_value + + + + +
             ::= 'RESTART*' 'WITH' sequence_generator_restart_value
    +
    + referenced by: + + alter_identity_column_option + alter_sequence_generator_option + + sequence_generator_restart_value: + + + + + + + + signed_numeric_literal + + + + +
             ::= signed_numeric_literal
    +
    + referenced by: + + alter_sequence_generator_restart_option + + drop_sequence_generator_statement: + + + + + + + + DROP + + + SEQUENCE* + + + sequence_generator_name + + + drop_behavior + + + + +
             ::= 'DROP' 'SEQUENCE*' sequence_generator_name drop_behavior
    +
    + referenced by: + + SQL_schema_manipulation_statement + + grant_statement: + + + + + + + + grant_privilege_statement + + + grant_role_statement + + + + +
             ::= grant_privilege_statement
    +
               | grant_role_statement
    +
    + referenced by: + + SQL_schema_definition_statement + schema_element + + grant_privilege_statement: + + + + + + + + GRANT + + + privileges + + TO + + + grantee + + , + + + WITH + + + HIERARCHY* + + + OPTION* + + + WITH + + + GRANT + + + OPTION* + + + GRANTED* + + + BY + + + grantor + + + + +
             ::= 'GRANT' privileges 'TO' grantee ( ',' grantee )* ( 'WITH' 'HIERARCHY*' 'OPTION*' )? ( 'WITH' 'GRANT' 'OPTION*' )? ( 'GRANTED*' + 'BY' grantor )?
    +
    + referenced by: + + grant_statement + + privileges: + + + + + + + + object_privileges + + ON + + + object_name + + + + +
             ::= object_privileges 'ON' object_name
    +
    + referenced by: + + grant_privilege_statement + revoke_privilege_statement + + object_name: + + + + + + + + TABLE + + + table_name + + DOMAIN* + + + domain_name + + COLLATION* + + + collation_name + + CHARACTER + + + SET + + + character_set_name + + TRANSLATION + + + transliteration_name + + TYPE* + + + schema_resolved_user_defined_type_name + + SEQUENCE* + + + sequence_generator_name + + + specific_routine_designator + + + + +
             ::= 'TABLE'? table_name
    +
               | 'DOMAIN*' domain_name
    +
               | 'COLLATION*' collation_name
    +
               | 'CHARACTER' 'SET' character_set_name
    +
               | 'TRANSLATION' transliteration_name
    +
               | 'TYPE*' schema_resolved_user_defined_type_name
    +
               | 'SEQUENCE*' sequence_generator_name
    +
               | specific_routine_designator
    +
    + referenced by: + + privileges + + object_privileges: + + + + + + + + ALL + + + PRIVILEGES* + + + action + + , + + + + + +
             ::= 'ALL' 'PRIVILEGES*'
    +
               | action ( ',' action )*
    +
    + referenced by: + + privileges + + action: + + + + + + + + SELECT + + + ( + + + privilege_column_list + + + privilege_method_list + + ) + + + DELETE + + + INSERT + + + UPDATE + + + REFERENCES + + + ( + + + privilege_column_list + + ) + + + USAGE* + + + TRIGGER + + + UNDER* + + + EXECUTE + + + + +
    action   ::= 'SELECT' ( '(' ( privilege_column_list | privilege_method_list ) ')' )?
    +
               | 'DELETE'
    +
               | ( 'INSERT' | 'UPDATE' | 'REFERENCES' ) ( '(' privilege_column_list ')' )?
    +
               | 'USAGE*'
    +
               | 'TRIGGER'
    +
               | 'UNDER*'
    +
               | 'EXECUTE'
    +
    + referenced by: + + object_privileges + + privilege_method_list: + + + + + + + + specific_routine_designator + + , + + + + + + + + referenced by: + + action + + privilege_column_list: + + + + + + + + column_name_list + + + + +
             ::= column_name_list
    +
    + referenced by: + + action + + grantee: + + + + + + + + PUBLIC* + + + authorization_identifier + + + +
    grantee  ::= 'PUBLIC*'
    +
               | authorization_identifier
    +
    + referenced by: + + grant_privilege_statement + grant_role_statement + revoke_privilege_statement + revoke_role_statement + + grantor: + + + + + + + + CURRENT_USER + + + CURRENT_ROLE + + + + +
    grantor  ::= 'CURRENT_USER'
    +
               | 'CURRENT_ROLE'
    +
    + referenced by: + + grant_privilege_statement + grant_role_statement + revoke_privilege_statement + revoke_role_statement + role_definition + + role_definition: + + + + + + + + CREATE + + + ROLE* + + + role_name + + WITH + + + ADMIN* + + + grantor + + + + +
             ::= 'CREATE' 'ROLE*' role_name ( 'WITH' 'ADMIN*' grantor )?
    +
    + referenced by: + + SQL_schema_definition_statement + schema_element + + grant_role_statement: + + + + + + + + GRANT + + + role_granted + + , + + + TO + + + grantee + + , + + + WITH + + + ADMIN* + + + OPTION* + + + GRANTED* + + + BY + + + grantor + + + + +
             ::= 'GRANT' role_granted ( ',' role_granted )* 'TO' grantee ( ',' grantee )* ( 'WITH' 'ADMIN*' 'OPTION*' )? ( 'GRANTED*' 'BY' grantor )?
    +
    + referenced by: + + grant_statement + + role_granted: + + + + + + + + role_name + + + + +
             ::= role_name
    +
    + referenced by: + + grant_role_statement + + drop_role_statement: + + + + + + + + DROP + + + ROLE* + + + role_name + + + + +
             ::= 'DROP' 'ROLE*' role_name
    +
    + referenced by: + + SQL_schema_manipulation_statement + + revoke_statement: + + + + + + + + revoke_privilege_statement + + + revoke_role_statement + + + + +
             ::= revoke_privilege_statement
    +
               | revoke_role_statement
    +
    + referenced by: + + SQL_schema_manipulation_statement + + revoke_privilege_statement: + + + + + + + + REVOKE + + + revoke_option_extension + + + privileges + + FROM + + + grantee + + , + + + GRANTED* + + + BY + + + grantor + + + drop_behavior + + + + +
             ::= 'REVOKE' revoke_option_extension? privileges 'FROM' grantee ( ',' grantee )* ( 'GRANTED*' 'BY' grantor )? drop_behavior
    +
    + referenced by: + + revoke_statement + + revoke_option_extension: + + + + + + + + GRANT + + + HIERARCHY* + + + OPTION* + + + FOR + + + + + +
             ::= ( 'GRANT' | 'HIERARCHY*' ) 'OPTION*' 'FOR'
    +
    + referenced by: + + revoke_privilege_statement + + revoke_role_statement: + + + + + + + + REVOKE + + + ADMIN* + + + OPTION* + + + FOR + + + role_revoked + + , + + + FROM + + + grantee + + , + + + GRANTED* + + + BY + + + grantor + + + drop_behavior + + + + +
             ::= 'REVOKE' ( 'ADMIN*' 'OPTION*' 'FOR' )? role_revoked ( ',' role_revoked )* 'FROM' grantee ( ',' grantee )* ( 'GRANTED*' 'BY' grantor )? drop_behavior
    +
    + referenced by: + + revoke_statement + + role_revoked: + + + + + + + + role_name + + + + +
             ::= role_name
    +
    + referenced by: + + revoke_role_statement + + SQL_client_module_definition: + + + + + + + + module_name_clause + + + language_clause + + + module_authorization_clause + + + module_path_specification + + + module_transform_group_specification + + + module_collation + + + temporary_table_declaration + + + module_contents + + + + + + + no referencesmodule_authorization_clause: + + + + + + + + SCHEMA* + + + schema_name + + AUTHORIZATION + + + module_authorization_identifier + + FOR + + + STATIC + + + ONLY + + + AND + + + DYNAMIC + + + AUTHORIZATION + + + module_authorization_identifier + + FOR + + + STATIC + + + ONLY + + + AND + + + DYNAMIC + + + + + +
             ::= 'SCHEMA*' schema_name ( 'AUTHORIZATION' module_authorization_identifier ( 'FOR' 'STATIC' ( 'ONLY' | 'AND' 'DYNAMIC' ) )? )?
    +
               | 'AUTHORIZATION' module_authorization_identifier ( 'FOR' 'STATIC' ( 'ONLY' | 'AND' 'DYNAMIC' ) )?
    +
    + referenced by: + + SQL_client_module_definition + + module_authorization_identifier: + + + + + + + + authorization_identifier + + + + +
             ::= authorization_identifier
    +
    + referenced by: + + embedded_authorization_identifier + module_authorization_clause + + module_path_specification: + + + + + + + + path_specification + + + + +
             ::= path_specification
    +
    + referenced by: + + SQL_client_module_definition + + module_transform_group_specification: + + + + + + + + transform_group_specification + + + + +
             ::= transform_group_specification
    +
    + referenced by: + + SQL_client_module_definition + + module_collation: + + + + + + + + module_collation_specification + + . + + + . + + + . + + + + + +
             ::= module_collation_specification . . .
    +
    + referenced by: + + SQL_client_module_definition + embedded_collation_specification + + module_collation_specification: + + + + + + + + COLLATION* + + + collation_name + + FOR + + + character_set_specification_list + + + + +
             ::= 'COLLATION*' collation_name ( 'FOR' character_set_specification_list )?
    +
    + referenced by: + + module_collation + + character_set_specification_list: + + + + + + + + character_set_specification + + , + + + + + + + + referenced by: + + module_collation_specification + set_session_collation_statement + + module_contents: + + + + + + + + declare_cursor + + + dynamic_declare_cursor + + + externally_invoked_procedure + + + + +
             ::= declare_cursor
    +
               | dynamic_declare_cursor
    +
               | externally_invoked_procedure
    +
    + referenced by: + + SQL_client_module_definition + + module_name_clause: + + + + + + + + MODULE + + + SQL_client_module_name + + + module_character_set_specification + + + + + + + referenced by: + + SQL_client_module_definition + + module_character_set_specification: + + + + + + + + NAMES* + + + ARE + + + character_set_specification + + + + +
             ::= 'NAMES*' 'ARE' character_set_specification
    +
    + referenced by: + + module_name_clause + + externally_invoked_procedure: + + + + + + + + PROCEDURE + + + procedure_name + + + host_parameter_declaration_list + + ; + + + SQL_procedure_statement + + ; + + + + + + + + referenced by: + + module_contents + + host_parameter_declaration_list: + + + + + + + + ( + + + host_parameter_declaration + + , + + + ) + + + + + +
             ::= '(' host_parameter_declaration ( ',' host_parameter_declaration )* ')'
    +
    + referenced by: + + externally_invoked_procedure + + host_parameter_declaration: + + + + + + + + host_parameter_name + + + host_parameter_data_type + + SQLSTATE + + + + + + +
               | 'SQLSTATE'
    +
    + referenced by: + + host_parameter_declaration_list + + host_parameter_data_type: + + + + + + + + data_type + + + locator_indication + + + + +
             ::= data_type locator_indication?
    +
    + referenced by: + + host_parameter_declaration + + SQL_procedure_statement: + + + + + + + + SQL_executable_statement + + + + +
             ::= SQL_executable_statement
    +
    + referenced by: + + SQL_routine_body + externally_invoked_procedure + statement_or_declaration + triggered_SQL_statement + + SQL_executable_statement: + + + + + + + + SQL_schema_statement + + + SQL_data_statement + + + SQL_control_statement + + + SQL_transaction_statement + + + SQL_connection_statement + + + SQL_session_statement + + + SQL_diagnostics_statement + + + SQL_dynamic_statement + + + + +
             ::= SQL_schema_statement
    +
               | SQL_data_statement
    +
               | SQL_control_statement
    +
               | SQL_transaction_statement
    +
               | SQL_connection_statement
    +
               | SQL_session_statement
    +
               | SQL_diagnostics_statement
    +
               | SQL_dynamic_statement
    +
    + referenced by: + + SQL_procedure_statement + + SQL_schema_statement: + + + + + + + + SQL_schema_definition_statement + + + SQL_schema_manipulation_statement + + + + +
             ::= SQL_schema_definition_statement
    +
               | SQL_schema_manipulation_statement
    +
    + referenced by: + + SQL_executable_statement + directly_executable_statement + preparable_SQL_schema_statement + + SQL_schema_definition_statement: + + + + + + + + schema_definition + + + table_definition + + + view_definition + + + SQL_invoked_routine + + + grant_statement + + + role_definition + + + domain_definition + + + character_set_definition + + + collation_definition + + + transliteration_definition + + + assertion_definition + + + trigger_definition + + + user_defined_type_definition + + + user_defined_cast_definition + + + user_defined_ordering_definition + + + transform_definition + + + sequence_generator_definition + + + + +
             ::= schema_definition
    +
               | table_definition
    +
               | view_definition
    +
               | SQL_invoked_routine
    +
               | grant_statement
    +
               | role_definition
    +
               | domain_definition
    +
               | character_set_definition
    +
               | collation_definition
    +
               | transliteration_definition
    +
               | assertion_definition
    +
               | trigger_definition
    +
               | user_defined_type_definition
    +
               | user_defined_cast_definition
    +
               | user_defined_ordering_definition
    +
               | transform_definition
    +
               | sequence_generator_definition
    +
    + referenced by: + + SQL_schema_statement + + SQL_schema_manipulation_statement: + + + + + + + + drop_schema_statement + + + alter_table_statement + + + drop_table_statement + + + drop_view_statement + + + alter_routine_statement + + + drop_routine_statement + + + drop_user_defined_cast_statement + + + revoke_statement + + + drop_role_statement + + + alter_domain_statement + + + drop_domain_statement + + + drop_character_set_statement + + + drop_collation_statement + + + drop_transliteration_statement + + + drop_assertion_statement + + + drop_trigger_statement + + + alter_type_statement + + + drop_data_type_statement + + + drop_user_defined_ordering_statement + + + alter_transform_statement + + + drop_transform_statement + + + alter_sequence_generator_statement + + + drop_sequence_generator_statement + + + + +
             ::= drop_schema_statement
    +
               | alter_table_statement
    +
               | drop_table_statement
    +
               | drop_view_statement
    +
               | alter_routine_statement
    +
               | drop_routine_statement
    +
               | drop_user_defined_cast_statement
    +
               | revoke_statement
    +
               | drop_role_statement
    +
               | alter_domain_statement
    +
               | drop_domain_statement
    +
               | drop_character_set_statement
    +
               | drop_collation_statement
    +
               | drop_transliteration_statement
    +
               | drop_assertion_statement
    +
               | drop_trigger_statement
    +
               | alter_type_statement
    +
               | drop_data_type_statement
    +
               | drop_user_defined_ordering_statement
    +
               | alter_transform_statement
    +
               | drop_transform_statement
    +
               | alter_sequence_generator_statement
    +
               | drop_sequence_generator_statement
    +
    + referenced by: + + SQL_schema_statement + + SQL_data_statement: + + + + + + + + open_statement + + + fetch_statement + + + close_statement + + + select_statement__single_row + + + free_locator_statement + + + hold_locator_statement + + + SQL_data_change_statement + + + + +
             ::= open_statement
    +
               | fetch_statement
    +
               | close_statement
    +
               | select_statement__single_row
    +
               | free_locator_statement
    +
               | hold_locator_statement
    +
               | SQL_data_change_statement
    +
    + referenced by: + + SQL_executable_statement + + SQL_data_change_statement: + + + + + + + + delete_statement__positioned + + + delete_statement__searched + + + insert_statement + + + update_statement__positioned + + + update_statement__searched + + + merge_statement + + + + +
             ::= delete_statement__positioned
    +
               | delete_statement__searched
    +
               | insert_statement
    +
               | update_statement__positioned
    +
               | update_statement__searched
    +
               | merge_statement
    +
    + referenced by: + + SQL_data_statement + + SQL_control_statement: + + + + + + + + call_statement + + + return_statement + + + + +
             ::= call_statement
    +
               | return_statement
    +
    + referenced by: + + SQL_executable_statement + preparable_SQL_control_statement + + SQL_transaction_statement: + + + + + + + + start_transaction_statement + + + set_transaction_statement + + + set_constraints_mode_statement + + + savepoint_statement + + + release_savepoint_statement + + + commit_statement + + + rollback_statement + + + + +
             ::= start_transaction_statement
    +
               | set_transaction_statement
    +
               | set_constraints_mode_statement
    +
               | savepoint_statement
    +
               | release_savepoint_statement
    +
               | commit_statement
    +
               | rollback_statement
    +
    + referenced by: + + SQL_executable_statement + directly_executable_statement + preparable_SQL_transaction_statement + + SQL_connection_statement: + + + + + + + + connect_statement + + + set_connection_statement + + + disconnect_statement + + + + +
             ::= connect_statement
    +
               | set_connection_statement
    +
               | disconnect_statement
    +
    + referenced by: + + SQL_executable_statement + directly_executable_statement + + SQL_session_statement: + + + + + + + + set_session_user_identifier_statement + + + set_role_statement + + + set_local_time_zone_statement + + + set_session_characteristics_statement + + + set_catalog_statement + + + set_schema_statement + + + set_names_statement + + + set_path_statement + + + set_transform_group_statement + + + set_session_collation_statement + + + + + +
               | set_role_statement
    +
               | set_local_time_zone_statement
    + +
               | set_catalog_statement
    +
               | set_schema_statement
    +
               | set_names_statement
    +
               | set_path_statement
    +
               | set_transform_group_statement
    +
               | set_session_collation_statement
    +
    + referenced by: + + SQL_executable_statement + directly_executable_statement + preparable_SQL_session_statement + + SQL_diagnostics_statement: + + + + + + + + get_diagnostics_statement + + + + +
             ::= get_diagnostics_statement
    +
    + referenced by: + + SQL_executable_statement + + SQL_dynamic_statement: + + + + + + + + system_descriptor_statement + + + prepare_statement + + + deallocate_prepared_statement + + + describe_statement + + + execute_statement + + + execute_immediate_statement + + + SQL_dynamic_data_statement + + + + +
             ::= system_descriptor_statement
    +
               | prepare_statement
    +
               | deallocate_prepared_statement
    +
               | describe_statement
    +
               | execute_statement
    +
               | execute_immediate_statement
    +
               | SQL_dynamic_data_statement
    +
    + referenced by: + + SQL_executable_statement + + SQL_dynamic_data_statement: + + + + + + + + allocate_cursor_statement + + + dynamic_open_statement + + + dynamic_fetch_statement + + + dynamic_close_statement + + + dynamic_delete_statement__positioned + + + dynamic_update_statement__positioned + + + + +
             ::= allocate_cursor_statement
    +
               | dynamic_open_statement
    +
               | dynamic_fetch_statement
    +
               | dynamic_close_statement
    +
               | dynamic_delete_statement__positioned
    +
               | dynamic_update_statement__positioned
    +
    + referenced by: + + SQL_dynamic_statement + + system_descriptor_statement: + + + + + + + + allocate_descriptor_statement + + + deallocate_descriptor_statement + + + set_descriptor_statement + + + get_descriptor_statement + + + + +
             ::= allocate_descriptor_statement
    +
               | deallocate_descriptor_statement
    +
               | set_descriptor_statement
    +
               | get_descriptor_statement
    +
    + referenced by: + + SQL_dynamic_statement + + declare_cursor: + + + + + + + + DECLARE + + + cursor_name + + + cursor_sensitivity + + + cursor_scrollability + + CURSOR + + + cursor_holdability + + + cursor_returnability + + FOR + + + cursor_specification + + + + + + + referenced by: + + module_contents + statement_or_declaration + + cursor_sensitivity: + + + + + + + + SENSITIVE + + + INSENSITIVE + + + ASENSITIVE + + + + + +
             ::= 'SENSITIVE'
    +
               | 'INSENSITIVE'
    +
               | 'ASENSITIVE'
    +
    + referenced by: + + cursor_attribute + declare_cursor + dynamic_declare_cursor + statement_cursor + + cursor_scrollability: + + + + + + + + NO + + + SCROLL + + + + + +
             ::= 'NO'? 'SCROLL'
    +
    + referenced by: + + cursor_attribute + declare_cursor + dynamic_declare_cursor + statement_cursor + + cursor_holdability: + + + + + + + + WITH + + + WITHOUT + + + HOLD + + + + + +
             ::= ( 'WITH' | 'WITHOUT' ) 'HOLD'
    +
    + referenced by: + + cursor_attribute + declare_cursor + dynamic_declare_cursor + statement_cursor + + cursor_returnability: + + + + + + + + WITH + + + WITHOUT + + + RETURN + + + + + +
             ::= ( 'WITH' | 'WITHOUT' ) 'RETURN'
    +
    + referenced by: + + cursor_attribute + declare_cursor + dynamic_declare_cursor + statement_cursor + + cursor_specification: + + + + + + + + query_expression + + + order_by_clause + + + updatability_clause + + + + + + + referenced by: + + declare_cursor + direct_select_statement__multiple_rows + dynamic_select_statement + + updatability_clause: + + + + + + + + FOR + + + READ* + + + ONLY + + + UPDATE + + + OF + + + column_name_list + + + + +
             ::= 'FOR' ( 'READ*' 'ONLY' | 'UPDATE' ( 'OF' column_name_list )? )
    +
    + referenced by: + + cursor_specification + + order_by_clause: + + + + + + + + ORDER + + + BY + + + sort_specification_list + + + + +
             ::= 'ORDER' 'BY' sort_specification_list
    +
    + referenced by: + + array_value_constructor_by_query + cursor_specification + + open_statement: + + + + + + + + OPEN + + + cursor_name + + + + +
             ::= 'OPEN' cursor_name
    +
    + referenced by: + + SQL_data_statement + + fetch_statement: + + + + + + + + FETCH + + + fetch_orientation + + FROM + + + cursor_name + + INTO + + + fetch_target_list + + + + +
             ::= 'FETCH' ( fetch_orientation? 'FROM' )? cursor_name 'INTO' fetch_target_list
    +
    + referenced by: + + SQL_data_statement + + fetch_orientation: + + + + + + + + NEXT* + + + PRIOR* + + + FIRST* + + + LAST* + + + ABSOLUTE* + + + RELATIVE* + + + simple_value_specification + + + + +
             ::= 'NEXT*'
    +
               | 'PRIOR*'
    +
               | 'FIRST*'
    +
               | 'LAST*'
    +
               | ( 'ABSOLUTE*' | 'RELATIVE*' ) simple_value_specification
    +
    + referenced by: + + dynamic_fetch_statement + fetch_statement + + fetch_target_list: + + + + + + + + target_specification + + , + + + + + +
             ::= target_specification ( ',' target_specification )*
    +
    + referenced by: + + fetch_statement + + close_statement: + + + + + + + + CLOSE + + + cursor_name + + + + +
             ::= 'CLOSE' cursor_name
    +
    + referenced by: + + SQL_data_statement + + select_statement__single_row: + + + + + + + + SELECT + + + set_quantifier + + + select_list + + INTO + + + select_target_list + + + table_expression + + + + +
             ::= 'SELECT' set_quantifier? select_list 'INTO' select_target_list table_expression
    +
    + referenced by: + + SQL_data_statement + + select_target_list: + + + + + + + + target_specification + + , + + + + + +
             ::= target_specification ( ',' target_specification )*
    +
    + referenced by: + + select_statement__single_row + + delete_statement__positioned: + + + + + + + + DELETE + + + FROM + + + target_table + + WHERE + + + CURRENT + + + OF + + + cursor_name + + + + +
             ::= 'DELETE' 'FROM' target_table 'WHERE' 'CURRENT' 'OF' cursor_name
    +
    + referenced by: + + SQL_data_change_statement + + target_table: + + + + + + + + table_name + + ONLY + + + ( + + + table_name + + ) + + + + + +
             ::= table_name
    +
               | 'ONLY' '(' table_name ')'
    +
    + referenced by: + + delete_statement__positioned + delete_statement__searched + dynamic_delete_statement__positioned + dynamic_update_statement__positioned + merge_statement + preparable_dynamic_delete_statement__positioned + preparable_dynamic_update_statement__positioned + update_statement__positioned + update_statement__searched + + delete_statement__searched: + + + + + + + + DELETE + + + FROM + + + target_table + + WHERE + + + search_condition + + + + +
             ::= 'DELETE' 'FROM' target_table ( 'WHERE' search_condition )?
    +
    + referenced by: + + SQL_data_change_statement + direct_SQL_data_statement + preparable_SQL_data_statement + + insert_statement: + + + + + + + + INSERT + + + INTO + + + insertion_target + + + insert_columns_and_source + + + + +
             ::= 'INSERT' 'INTO' insertion_target insert_columns_and_source
    +
    + referenced by: + + SQL_data_change_statement + direct_SQL_data_statement + preparable_SQL_data_statement + + insertion_target: + + + + + + + + table_name + + + + +
             ::= table_name
    +
    + referenced by: + + insert_statement + + insert_columns_and_source: + + + + + + + + from_subquery + + + from_constructor + + + from_default + + + + +
             ::= from_subquery
    +
               | from_constructor
    +
               | from_default
    +
    + referenced by: + + insert_statement + + from_subquery: + + + + + + + + ( + + + insert_column_list + + ) + + + override_clause + + + query_expression + + + + +
             ::= ( '(' insert_column_list ')' )? override_clause query_expression
    +
    + referenced by: + + insert_columns_and_source + + from_constructor: + + + + + + + + ( + + + insert_column_list + + ) + + + override_clause + + + contextually_typed_table_value_constructor + + + + + + + referenced by: + + insert_columns_and_source + + override_clause: + + + + + + + + OVERRIDING* + + + USER + + + SYSTEM + + + VALUE + + + + + +
             ::= 'OVERRIDING*' ( 'USER' | 'SYSTEM' ) 'VALUE'
    +
    + referenced by: + + from_constructor + from_subquery + merge_insert_specification + + from_default: + + + + + + + + DEFAULT + + + VALUES + + + + + +
             ::= 'DEFAULT' 'VALUES'
    +
    + referenced by: + + insert_columns_and_source + + insert_column_list: + + + + + + + + column_name_list + + + + +
             ::= column_name_list
    +
    + referenced by: + + from_constructor + from_subquery + merge_insert_specification + + merge_statement: + + + + + + + + MERGE + + + INTO + + + target_table + + AS + + + merge_correlation_name + + USING + + + table_reference + + ON + + + search_condition + + + merge_operation_specification + + + + +
             ::= 'MERGE' 'INTO' target_table ( 'AS'? merge_correlation_name )? 'USING' table_reference 'ON' search_condition merge_operation_specification
    +
    + referenced by: + + SQL_data_change_statement + direct_SQL_data_statement + preparable_SQL_data_statement + + merge_correlation_name: + + + + + + + + correlation_name + + + + +
             ::= correlation_name
    +
    + referenced by: + + merge_statement + + merge_operation_specification: + + + + + + + + merge_when_clause + + . + + + . + + + . + + + + + +
             ::= merge_when_clause . . .
    +
    + referenced by: + + merge_statement + + merge_when_clause: + + + + + + + + merge_when_matched_clause + + + merge_when_not_matched_clause + + + + +
             ::= merge_when_matched_clause
    +
               | merge_when_not_matched_clause
    +
    + referenced by: + + merge_operation_specification + + merge_when_matched_clause: + + + + + + + + WHEN + + + MATCHED* + + + THEN + + + merge_update_specification + + + + +
             ::= 'WHEN' 'MATCHED*' 'THEN' merge_update_specification
    +
    + referenced by: + + merge_when_clause + + merge_when_not_matched_clause: + + + + + + + + WHEN + + + NOT + + + MATCHED* + + + THEN + + + merge_insert_specification + + + + +
             ::= 'WHEN' 'NOT' 'MATCHED*' 'THEN' merge_insert_specification
    +
    + referenced by: + + merge_when_clause + + merge_update_specification: + + + + + + + + UPDATE + + + SET + + + set_clause_list + + + + +
             ::= 'UPDATE' 'SET' set_clause_list
    +
    + referenced by: + + merge_when_matched_clause + + merge_insert_specification: + + + + + + + + INSERT + + + ( + + + insert_column_list + + ) + + + override_clause + + VALUES + + + merge_insert_value_list + + + + +
             ::= 'INSERT' ( '(' insert_column_list ')' )? override_clause? 'VALUES' merge_insert_value_list
    +
    + referenced by: + + merge_when_not_matched_clause + + merge_insert_value_list: + + + + + + + + ( + + + merge_insert_value_element + + , + + + ) + + + + + +
             ::= '(' merge_insert_value_element ( ',' merge_insert_value_element )* ')'
    +
    + referenced by: + + merge_insert_specification + + merge_insert_value_element: + + + + + + + + value_expression + + + contextually_typed_value_specification + + + + +
             ::= value_expression
    +
    +
    + referenced by: + + merge_insert_value_list + + update_statement__positioned: + + + + + + + + UPDATE + + + target_table + + SET + + + set_clause_list + + WHERE + + + CURRENT + + + OF + + + cursor_name + + + + +
             ::= 'UPDATE' target_table 'SET' set_clause_list 'WHERE' 'CURRENT' 'OF' cursor_name
    +
    + referenced by: + + SQL_data_change_statement + + update_statement__searched: + + + + + + + + UPDATE + + + target_table + + SET + + + set_clause_list + + WHERE + + + search_condition + + + + +
             ::= 'UPDATE' target_table 'SET' set_clause_list ( 'WHERE' search_condition )?
    +
    + referenced by: + + SQL_data_change_statement + direct_SQL_data_statement + preparable_SQL_data_statement + + set_clause_list: + + + + + + + + set_clause + + , + + + + + +
             ::= set_clause ( ',' set_clause )*
    +
    + referenced by: + + dynamic_update_statement__positioned + merge_update_specification + preparable_dynamic_update_statement__positioned + update_statement__positioned + update_statement__searched + + set_clause: + + + + + + + + multiple_column_assignment + + + set_target + + = + + + update_source + + + + +
             ::= multiple_column_assignment
    +
               | set_target '=' update_source
    +
    + referenced by: + + set_clause_list + + set_target: + + + + + + + + update_target + + + mutated_set_clause + + + + +
             ::= update_target
    +
               | mutated_set_clause
    +
    + referenced by: + + set_clause + set_target_list + + multiple_column_assignment: + + + + + + + + set_target_list + + = + + + assigned_row + + + + +
             ::= set_target_list '=' assigned_row
    +
    + referenced by: + + set_clause + + set_target_list: + + + + + + + + ( + + + set_target + + , + + + ) + + + + + +
             ::= '(' set_target ( ',' set_target )* ')'
    +
    + referenced by: + + multiple_column_assignment + + assigned_row: + + + + + + + + contextually_typed_row_value_expression + + + + + + + referenced by: + + multiple_column_assignment + + update_target: + + + + + + + + object_column + + + left_bracket_or_trigraph + + + simple_value_specification + + + right_bracket_or_trigraph + + + + + + + referenced by: + + set_target + + object_column: + + + + + + + + column_name + + + + +
             ::= column_name
    +
    + referenced by: + + mutated_target + update_target + + mutated_set_clause: + + + + + + + + mutated_target + + . + + + method_name + + + + +
             ::= mutated_target '.' method_name
    +
    + referenced by: + + mutated_target + set_target + + mutated_target: + + + + + + + + object_column + + + mutated_set_clause + + + + +
             ::= object_column
    +
               | mutated_set_clause
    +
    + referenced by: + + mutated_set_clause + + update_source: + + + + + + + + value_expression + + + contextually_typed_value_specification + + + + +
             ::= value_expression
    +
    +
    + referenced by: + + set_clause + + temporary_table_declaration: + + + + + + + + DECLARE + + + LOCAL + + + TEMPORARY* + + + TABLE + + + table_name + + + table_element_list + + ON + + + COMMIT + + + table_commit_action + + ROWS + + + + + +
             ::= 'DECLARE' 'LOCAL' 'TEMPORARY*' 'TABLE' table_name table_element_list ( 'ON' 'COMMIT' table_commit_action 'ROWS' )?
    +
    + referenced by: + + SQL_client_module_definition + direct_SQL_data_statement + statement_or_declaration + + free_locator_statement: + + + + + + + + FREE + + + LOCATOR* + + + locator_reference + + , + + + + + +
             ::= 'FREE' 'LOCATOR*' locator_reference ( ',' locator_reference )*
    +
    + referenced by: + + SQL_data_statement + + locator_reference: + + + + + + + + host_parameter_name + + + embedded_variable_name + + + + +
             ::= host_parameter_name
    +
               | embedded_variable_name
    +
    + referenced by: + + free_locator_statement + hold_locator_statement + + hold_locator_statement: + + + + + + + + HOLD + + + LOCATOR* + + + locator_reference + + , + + + + + +
             ::= 'HOLD' 'LOCATOR*' locator_reference ( ',' locator_reference )*
    +
    + referenced by: + + SQL_data_statement + + call_statement: + + + + + + + + CALL + + + routine_invocation + + + + +
             ::= 'CALL' routine_invocation
    +
    + referenced by: + + SQL_control_statement + + return_statement: + + + + + + + + RETURN + + + return_value + + + + +
             ::= 'RETURN' return_value
    +
    + referenced by: + + SQL_control_statement + + return_value: + + + + + + + + value_expression + + NULL + + + + + +
             ::= value_expression
    +
               | 'NULL'
    +
    + referenced by: + + return_statement + + start_transaction_statement: + + + + + + + + START + + + TRANSACTION* + + + transaction_mode + + , + + + + + +
             ::= 'START' 'TRANSACTION*' ( transaction_mode ( ',' transaction_mode )* )?
    +
    + referenced by: + + SQL_transaction_statement + + transaction_mode: + + + + + + + + isolation_level + + + transaction_access_mode + + + diagnostics_size + + + + +
             ::= isolation_level
    +
               | transaction_access_mode
    +
               | diagnostics_size
    +
    + referenced by: + + start_transaction_statement + transaction_characteristics + + transaction_access_mode: + + + + + + + + READ* + + + ONLY + + + WRITE* + + + + + +
             ::= 'READ*' ( 'ONLY' | 'WRITE*' )
    +
    + referenced by: + + transaction_mode + + isolation_level: + + + + + + + + ISOLATION + + LEVEL* + + + level_of_isolation + + + + +
             ::= ISOLATION 'LEVEL*' level_of_isolation
    +
    + referenced by: + + transaction_mode + + level_of_isolation: + + + + + + + + READ* + + + UNCOMMITTED* + + + COMMITTED* + + + REPEATABLE* + + + READ* + + + SERIALIZABLE* + + + + + +
             ::= 'READ*' ( 'UNCOMMITTED*' | 'COMMITTED*' )
    +
               | 'REPEATABLE*' 'READ*'
    +
               | 'SERIALIZABLE*'
    +
    + referenced by: + + isolation_level + + diagnostics_size: + + + + + + + + DIAGNOSTICS* + + + SIZE* + + + number_of_conditions + + + + +
             ::= 'DIAGNOSTICS*' 'SIZE*' number_of_conditions
    +
    + referenced by: + + transaction_mode + + number_of_conditions: + + + + + + + + simple_value_specification + + + + +
             ::= simple_value_specification
    +
    + referenced by: + + diagnostics_size + + set_transaction_statement: + + + + + + + + SET + + + LOCAL + + + transaction_characteristics + + + + +
             ::= 'SET' 'LOCAL'? transaction_characteristics
    +
    + referenced by: + + SQL_transaction_statement + + transaction_characteristics: + + + + + + + + TRANSACTION* + + + transaction_mode + + , + + + + + +
             ::= 'TRANSACTION*' transaction_mode ( ',' transaction_mode )*
    +
    + referenced by: + + session_characteristic + set_transaction_statement + + set_constraints_mode_statement: + + + + + + + + SET + + + CONSTRAINTS* + + + constraint_name_list + + DEFERRED* + + + IMMEDIATE + + + + + +
             ::= 'SET' 'CONSTRAINTS*' constraint_name_list ( 'DEFERRED*' | 'IMMEDIATE' )
    +
    + referenced by: + + SQL_transaction_statement + + constraint_name_list: + + + + + + + + ALL + + + constraint_name + + , + + + + + +
             ::= 'ALL'
    +
               | constraint_name ( ',' constraint_name )*
    +
    + referenced by: + + set_constraints_mode_statement + + savepoint_statement: + + + + + + + + SAVEPOINT + + + savepoint_specifier + + + + +
             ::= 'SAVEPOINT' savepoint_specifier
    +
    + referenced by: + + SQL_transaction_statement + + savepoint_specifier: + + + + + + + + savepoint_name + + + + +
             ::= savepoint_name
    +
    + referenced by: + + release_savepoint_statement + savepoint_clause + savepoint_statement + + release_savepoint_statement: + + + + + + + + RELEASE + + + SAVEPOINT + + + savepoint_specifier + + + + +
             ::= 'RELEASE' 'SAVEPOINT' savepoint_specifier
    +
    + referenced by: + + SQL_transaction_statement + + commit_statement: + + + + + + + + COMMIT + + + WORK* + + + AND + + + NO + + + CHAIN* + + + + + +
             ::= 'COMMIT' 'WORK*'? ( 'AND' 'NO'? 'CHAIN*' )?
    +
    + referenced by: + + SQL_transaction_statement + + rollback_statement: + + + + + + + + ROLLBACK + + + WORK* + + + AND + + + NO + + + CHAIN* + + + savepoint_clause + + + + +
             ::= 'ROLLBACK' 'WORK*'? ( 'AND' 'NO'? 'CHAIN*' )? savepoint_clause?
    +
    + referenced by: + + SQL_transaction_statement + + savepoint_clause: + + + + + + + + TO + + + SAVEPOINT + + + savepoint_specifier + + + + +
             ::= 'TO' 'SAVEPOINT' savepoint_specifier
    +
    + referenced by: + + rollback_statement + + connect_statement: + + + + + + + + CONNECT + + + TO + + + connection_target + + + + +
             ::= 'CONNECT' 'TO' connection_target
    +
    + referenced by: + + SQL_connection_statement + + connection_target: + + + + + + + + SQL_server_name + + AS + + + connection_name + + USER + + + connection_user_name + + DEFAULT + + + + + +
             ::= SQL_server_name ( 'AS' connection_name )? ( 'USER' connection_user_name )?
    +
               | 'DEFAULT'
    +
    + referenced by: + + connect_statement + + set_connection_statement: + + + + + + + + SET + + + CONNECTION + + + connection_object + + + + +
             ::= 'SET' CONNECTION connection_object
    +
    + referenced by: + + SQL_connection_statement + + connection_object: + + + + + + + + DEFAULT + + + connection_name + + + + +
             ::= 'DEFAULT'
    +
               | connection_name
    +
    + referenced by: + + disconnect_object + set_connection_statement + + disconnect_statement: + + + + + + + + DISCONNECT + + + disconnect_object + + + + +
             ::= 'DISCONNECT' disconnect_object
    +
    + referenced by: + + SQL_connection_statement + + disconnect_object: + + + + + + + + connection_object + + ALL + + + CURRENT + + + + + +
             ::= connection_object
    +
               | 'ALL'
    +
               | 'CURRENT'
    +
    + referenced by: + + disconnect_statement + + set_session_characteristics_statement: + + + + + + + + SET + + + SESSION* + + + CHARACTERISTICS* + + + AS + + + session_characteristic_list + + + + +
             ::= 'SET' 'SESSION*' 'CHARACTERISTICS*' 'AS' session_characteristic_list
    +
    + referenced by: + + SQL_session_statement + + session_characteristic_list: + + + + + + + + session_characteristic + + , + + + + + +
             ::= session_characteristic ( ',' session_characteristic )*
    +
    + referenced by: + + set_session_characteristics_statement + + session_characteristic: + + + + + + + + transaction_characteristics + + + + +
             ::= transaction_characteristics
    +
    + referenced by: + + session_characteristic_list + + set_session_user_identifier_statement: + + + + + + + + SET + + + SESSION* + + + AUTHORIZATION + + + value_specification + + + + +
             ::= 'SET' 'SESSION*' 'AUTHORIZATION' value_specification
    +
    + referenced by: + + SQL_session_statement + + set_role_statement: + + + + + + + + SET + + + ROLE* + + + role_specification + + + + +
             ::= 'SET' 'ROLE*' role_specification
    +
    + referenced by: + + SQL_session_statement + + role_specification: + + + + + + + + value_specification + + NONE + + + + + +
             ::= value_specification
    +
               | 'NONE'
    +
    + referenced by: + + set_role_statement + + set_local_time_zone_statement: + + + + + + + + SET + + + TIME + + + ZONE* + + + set_time_zone_value + + + + +
             ::= 'SET' 'TIME' 'ZONE*' set_time_zone_value
    +
    + referenced by: + + SQL_session_statement + + set_time_zone_value: + + + + + + + + interval_value_expression + + LOCAL + + + + + +
             ::= interval_value_expression
    +
               | 'LOCAL'
    +
    + referenced by: + + set_local_time_zone_statement + + set_catalog_statement: + + + + + + + + SET + + + catalog_name_characteristic + + + + +
             ::= 'SET' catalog_name_characteristic
    +
    + referenced by: + + SQL_session_statement + + catalog_name_characteristic: + + + + + + + + CATALOG* + + + value_specification + + + + +
             ::= 'CATALOG*' value_specification
    +
    + referenced by: + + set_catalog_statement + + set_schema_statement: + + + + + + + + SET + + + schema_name_characteristic + + + + +
             ::= 'SET' schema_name_characteristic
    +
    + referenced by: + + SQL_session_statement + + schema_name_characteristic: + + + + + + + + SCHEMA* + + + value_specification + + + + +
             ::= 'SCHEMA*' value_specification
    +
    + referenced by: + + set_schema_statement + + set_names_statement: + + + + + + + + SET + + + character_set_name_characteristic + + + + +
             ::= 'SET' character_set_name_characteristic
    +
    + referenced by: + + SQL_session_statement + + character_set_name_characteristic: + + + + + + + + NAMES* + + + value_specification + + + + +
             ::= 'NAMES*' value_specification
    +
    + referenced by: + + set_names_statement + + set_path_statement: + + + + + + + + SET + + + SQL_path_characteristic + + + + +
             ::= 'SET' SQL_path_characteristic
    +
    + referenced by: + + SQL_session_statement + + SQL_path_characteristic: + + + + + + + + PATH* + + + value_specification + + + + +
             ::= 'PATH*' value_specification
    +
    + referenced by: + + set_path_statement + + set_transform_group_statement: + + + + + + + + SET + + + transform_group_characteristic + + + + +
             ::= 'SET' transform_group_characteristic
    +
    + referenced by: + + SQL_session_statement + + transform_group_characteristic: + + + + + + + + DEFAULT + + + TRANSFORM* + + + GROUP + + + TRANSFORM* + + + GROUP + + + FOR + + + TYPE* + + + path_resolved_user_defined_type_name + + + value_specification + + + + +
             ::= ( 'DEFAULT' 'TRANSFORM*' 'GROUP' | 'TRANSFORM*' 'GROUP' 'FOR' 'TYPE*' + path_resolved_user_defined_type_name ) value_specification
    +
    + referenced by: + + set_transform_group_statement + + set_session_collation_statement: + + + + + + + + SET + + + COLLATION* + + + collation_specification + + NO + + + COLLATION* + + + FOR + + + character_set_specification_list + + + + +
             ::= 'SET' ( 'COLLATION*' collation_specification | 'NO' 'COLLATION*' ) ( 'FOR' character_set_specification_list )?
    +
    + referenced by: + + SQL_session_statement + + collation_specification: + + + + + + + + value_specification + + + + +
             ::= value_specification
    +
    + referenced by: + + set_session_collation_statement + + allocate_descriptor_statement: + + + + + + + + ALLOCATE + + + SQL + + + DESCRIPTOR* + + + descriptor_name + + WITH + + + MAX* + + + occurrences + + + + +
             ::= 'ALLOCATE' 'SQL'? 'DESCRIPTOR*' descriptor_name ( 'WITH' 'MAX*' occurrences )?
    +
    + referenced by: + + system_descriptor_statement + + occurrences: + + + + + + + + simple_value_specification + + + + +
             ::= simple_value_specification
    +
    + referenced by: + + allocate_descriptor_statement + + deallocate_descriptor_statement: + + + + + + + + DEALLOCATE + + + SQL + + + DESCRIPTOR* + + + descriptor_name + + + + +
             ::= 'DEALLOCATE' 'SQL'? 'DESCRIPTOR*' descriptor_name
    +
    + referenced by: + + system_descriptor_statement + + get_descriptor_statement: + + + + + + + + GET + + + SQL + + + DESCRIPTOR* + + + descriptor_name + + + get_descriptor_information + + + + +
             ::= 'GET' 'SQL'? 'DESCRIPTOR*' descriptor_name get_descriptor_information
    +
    + referenced by: + + system_descriptor_statement + + get_descriptor_information: + + + + + + + + get_header_information + + , + + + VALUE + + + item_number + + + get_item_information + + , + + + + + +
             ::= get_header_information ( ',' get_header_information )*
    +
               | 'VALUE' item_number get_item_information ( ',' get_item_information )*
    +
    + referenced by: + + get_descriptor_statement + + get_header_information: + + + + + + + + simple_target_specification_1 + + = + + + header_item_name + + + + + + + referenced by: + + get_descriptor_information + + header_item_name: + + + + + + + + COUNT* + + + KEY_TYPE* + + + DYNAMIC_FUNCTION* + + + DYNAMIC_FUNCTION_CODE* + + + TOP_LEVEL_COUNT* + + + + + +
             ::= 'COUNT*'
    +
               | 'KEY_TYPE*'
    +
               | 'DYNAMIC_FUNCTION*'
    +
               | 'DYNAMIC_FUNCTION_CODE*'
    +
               | 'TOP_LEVEL_COUNT*'
    +
    + referenced by: + + get_header_information + set_header_information + + get_item_information: + + + + + + + + simple_target_specification_2 + + = + + + descriptor_item_name + + + + + + + referenced by: + + get_descriptor_information + + item_number: + + + + + + + + simple_value_specification + + + + +
             ::= simple_value_specification
    +
    + referenced by: + + get_descriptor_information + set_descriptor_information + + simple_target_specification_1: + + + + + + + + simple_target_specification + + + + +
             ::= simple_target_specification
    +
    + referenced by: + + get_header_information + + simple_target_specification_2: + + + + + + + + simple_target_specification + + + + +
             ::= simple_target_specification
    +
    + referenced by: + + get_item_information + + descriptor_item_name: + + + + + + + + CARDINALITY* + + + CHARACTER_SET_CATALOG* + + + CHARACTER_SET_NAME* + + + CHARACTER_SET_SCHEMA* + + + COLLATION_CATALOG* + + + COLLATION_NAME* + + + COLLATION_SCHEMA* + + + DATA* + + + DATETIME_INTERVAL_CODE* + + + DATETIME_INTERVAL_PRECISION* + + + DEGREE* + + + INDICATOR + + + KEY_MEMBER* + + + LENGTH* + + + LEVEL* + + + NAME* + + + NULLABLE* + + + OCTET_LENGTH* + + + PARAMETER_MODE* + + + PARAMETER_ORDINAL_POSITION* + + + PARAMETER_SPECIFIC_CATALOG* + + + PARAMETER_SPECIFIC_NAME* + + + PARAMETER_SPECIFIC_SCHEMA* + + + PRECISION + + + RETURNED_CARDINALITY* + + + RETURNED_LENGTH* + + + RETURNED_OCTET_LENGTH* + + + SCALE* + + + SCOPE_CATALOG* + + + SCOPE_NAME* + + + SCOPE_SCHEMA* + + + TYPE* + + + UNNAMED* + + + USER_DEFINED_TYPE_CATALOG* + + + USER_DEFINED_TYPE_NAME* + + + USER_DEFINED_TYPE_SCHEMA* + + + USER_DEFINED_TYPE_CODE* + + + + + +
             ::= 'CARDINALITY*'
    +
               | 'CHARACTER_SET_CATALOG*'
    +
               | 'CHARACTER_SET_NAME*'
    +
               | 'CHARACTER_SET_SCHEMA*'
    +
               | 'COLLATION_CATALOG*'
    +
               | 'COLLATION_NAME*'
    +
               | 'COLLATION_SCHEMA*'
    +
               | 'DATA*'
    +
               | 'DATETIME_INTERVAL_CODE*'
    +
               | 'DATETIME_INTERVAL_PRECISION*'
    +
               | 'DEGREE*'
    +
               | 'INDICATOR'
    +
               | 'KEY_MEMBER*'
    +
               | 'LENGTH*'
    +
               | 'LEVEL*'
    +
               | 'NAME*'
    +
               | 'NULLABLE*'
    +
               | 'OCTET_LENGTH*'
    +
               | 'PARAMETER_MODE*'
    +
               | 'PARAMETER_ORDINAL_POSITION*'
    +
               | 'PARAMETER_SPECIFIC_CATALOG*'
    +
               | 'PARAMETER_SPECIFIC_NAME*'
    +
               | 'PARAMETER_SPECIFIC_SCHEMA*'
    +
               | 'PRECISION'
    +
               | 'RETURNED_CARDINALITY*'
    +
               | 'RETURNED_LENGTH*'
    +
               | 'RETURNED_OCTET_LENGTH*'
    +
               | 'SCALE*'
    +
               | 'SCOPE_CATALOG*'
    +
               | 'SCOPE_NAME*'
    +
               | 'SCOPE_SCHEMA*'
    +
               | 'TYPE*'
    +
               | 'UNNAMED*'
    +
               | 'USER_DEFINED_TYPE_CATALOG*'
    +
               | 'USER_DEFINED_TYPE_NAME*'
    +
               | 'USER_DEFINED_TYPE_SCHEMA*'
    +
               | 'USER_DEFINED_TYPE_CODE*'
    +
    + referenced by: + + get_item_information + set_item_information + + set_descriptor_statement: + + + + + + + + SET + + + SQL + + + DESCRIPTOR* + + + descriptor_name + + + set_descriptor_information + + + + +
             ::= 'SET' 'SQL'? 'DESCRIPTOR*' descriptor_name set_descriptor_information
    +
    + referenced by: + + system_descriptor_statement + + set_descriptor_information: + + + + + + + + set_header_information + + , + + + VALUE + + + item_number + + + set_item_information + + , + + + + + +
             ::= set_header_information ( ',' set_header_information )*
    +
               | 'VALUE' item_number set_item_information ( ',' set_item_information )*
    +
    + referenced by: + + set_descriptor_statement + + set_header_information: + + + + + + + + header_item_name + + = + + + simple_value_specification_1 + + + + + + + referenced by: + + set_descriptor_information + + set_item_information: + + + + + + + + descriptor_item_name + + = + + + simple_value_specification_2 + + + + + + + referenced by: + + set_descriptor_information + + simple_value_specification_1: + + + + + + + + simple_value_specification + + + + +
             ::= simple_value_specification
    +
    + referenced by: + + set_header_information + + simple_value_specification_2: + + + + + + + + simple_value_specification + + + + +
             ::= simple_value_specification
    +
    + referenced by: + + set_item_information + + prepare_statement: + + + + + + + + PREPARE + + + SQL_statement_name + + + attributes_specification + + FROM + + + SQL_statement_variable + + + + + + + referenced by: + + SQL_dynamic_statement + + attributes_specification: + + + + + + + + ATTRIBUTES* + + + attributes_variable + + + + +
             ::= 'ATTRIBUTES*' attributes_variable
    +
    + referenced by: + + prepare_statement + + attributes_variable: + + + + + + + + simple_value_specification + + + + +
             ::= simple_value_specification
    +
    + referenced by: + + attributes_specification + + SQL_statement_variable: + + + + + + + + simple_value_specification + + + + +
             ::= simple_value_specification
    +
    + referenced by: + + execute_immediate_statement + prepare_statement + + preparable_statement: + + + + + + + + preparable_SQL_data_statement + + + preparable_SQL_schema_statement + + + preparable_SQL_transaction_statement + + + preparable_SQL_control_statement + + + preparable_SQL_session_statement + + + preparable_implementation_defined_statement + + + + +
             ::= preparable_SQL_data_statement
    +
               | preparable_SQL_schema_statement
    +
               | preparable_SQL_transaction_statement
    +
               | preparable_SQL_control_statement
    +
               | preparable_SQL_session_statement
    +
    +
    + no referencespreparable_SQL_data_statement: + + + + + + + + delete_statement__searched + + + dynamic_single_row_select_statement + + + insert_statement + + + dynamic_select_statement + + + update_statement__searched + + + merge_statement + + + preparable_dynamic_delete_statement__positioned + + + preparable_dynamic_update_statement__positioned + + + + +
             ::= delete_statement__searched
    +
               | dynamic_single_row_select_statement
    +
               | insert_statement
    +
               | dynamic_select_statement
    +
               | update_statement__searched
    +
               | merge_statement
    + +
    +
    + referenced by: + + preparable_statement + + preparable_SQL_schema_statement: + + + + + + + + SQL_schema_statement + + + + +
             ::= SQL_schema_statement
    +
    + referenced by: + + preparable_statement + + preparable_SQL_transaction_statement: + + + + + + + + SQL_transaction_statement + + + + +
             ::= SQL_transaction_statement
    +
    + referenced by: + + preparable_statement + + preparable_SQL_control_statement: + + + + + + + + SQL_control_statement + + + + +
             ::= SQL_control_statement
    +
    + referenced by: + + preparable_statement + + preparable_SQL_session_statement: + + + + + + + + SQL_session_statement + + + + +
             ::= SQL_session_statement
    +
    + referenced by: + + preparable_statement + + dynamic_select_statement: + + + + + + + + cursor_specification + + + + +
             ::= cursor_specification
    +
    + referenced by: + + preparable_SQL_data_statement + + preparable_implementation_defined_statement: + + + + + + + + + + +
             ::=
    +
    + referenced by: + + preparable_statement + + cursor_attributes: + + + + + + + + cursor_attribute + + . + + + . + + + . + + + + + +
             ::= cursor_attribute . . .
    +
    + no referencescursor_attribute: + + + + + + + + cursor_sensitivity + + + cursor_scrollability + + + cursor_holdability + + + cursor_returnability + + + + +
             ::= cursor_sensitivity
    +
               | cursor_scrollability
    +
               | cursor_holdability
    +
               | cursor_returnability
    +
    + referenced by: + + cursor_attributes + + deallocate_prepared_statement: + + + + + + + + DEALLOCATE + + + PREPARE + + + SQL_statement_name + + + + +
             ::= 'DEALLOCATE' 'PREPARE' SQL_statement_name
    +
    + referenced by: + + SQL_dynamic_statement + + describe_statement: + + + + + + + + describe_input_statement + + + describe_output_statement + + + + +
             ::= describe_input_statement
    +
               | describe_output_statement
    +
    + referenced by: + + SQL_dynamic_statement + + describe_input_statement: + + + + + + + + DESCRIBE + + + INPUT + + + SQL_statement_name + + + using_descriptor + + + nesting_option + + + + +
             ::= 'DESCRIBE' 'INPUT' SQL_statement_name using_descriptor nesting_option?
    +
    + referenced by: + + describe_statement + + describe_output_statement: + + + + + + + + DESCRIBE + + + OUTPUT + + + described_object + + + using_descriptor + + + nesting_option + + + + +
             ::= 'DESCRIBE' 'OUTPUT'? described_object using_descriptor nesting_option?
    +
    + referenced by: + + describe_statement + + nesting_option: + + + + + + + + WITH + + + WITHOUT + + + NESTING* + + + + + +
             ::= ( 'WITH' | 'WITHOUT' ) 'NESTING*'
    +
    + referenced by: + + describe_input_statement + describe_output_statement + + using_descriptor: + + + + + + + + USING + + + SQL + + + DESCRIPTOR* + + + descriptor_name + + + + +
             ::= 'USING' 'SQL'? 'DESCRIPTOR*' descriptor_name
    +
    + referenced by: + + describe_input_statement + describe_output_statement + using_input_descriptor + + described_object: + + + + + + + + SQL_statement_name + + CURSOR + + + extended_cursor_name + + STRUCTURE* + + + + + +
             ::= SQL_statement_name
    +
               | 'CURSOR' extended_cursor_name 'STRUCTURE*'
    +
    + referenced by: + + describe_output_statement + + input_using_clause: + + + + + + + + using_arguments + + + using_input_descriptor + + + + +
             ::= using_arguments
    +
               | using_input_descriptor
    +
    + referenced by: + + dynamic_open_statement + parameter_using_clause + + using_arguments: + + + + + + + + USING + + + using_argument + + , + + + + + +
             ::= 'USING' using_argument ( ',' using_argument )*
    +
    + referenced by: + + input_using_clause + + using_argument: + + + + + + + + general_value_specification + + + + +
             ::= general_value_specification
    +
    + referenced by: + + using_arguments + + using_input_descriptor: + + + + + + + + using_descriptor + + + + +
             ::= using_descriptor
    +
    + referenced by: + + input_using_clause + + output_using_clause: + + + + + + + + into_arguments + + + into_descriptor + + + + +
             ::= into_arguments
    +
               | into_descriptor
    +
    + referenced by: + + dynamic_fetch_statement + result_using_clause + + into_arguments: + + + + + + + + INTO + + + into_argument + + , + + + + + +
             ::= 'INTO' into_argument ( ',' into_argument )*
    +
    + referenced by: + + output_using_clause + + into_argument: + + + + + + + + target_specification + + + + +
             ::= target_specification
    +
    + referenced by: + + into_arguments + + into_descriptor: + + + + + + + + INTO + + + SQL + + + DESCRIPTOR* + + + descriptor_name + + + + +
             ::= 'INTO' 'SQL'? 'DESCRIPTOR*' descriptor_name
    +
    + referenced by: + + output_using_clause + + execute_statement: + + + + + + + + EXECUTE + + + SQL_statement_name + + + result_using_clause + + + parameter_using_clause + + + + + + + referenced by: + + SQL_dynamic_statement + + result_using_clause: + + + + + + + + output_using_clause + + + + +
             ::= output_using_clause
    +
    + referenced by: + + execute_statement + + parameter_using_clause: + + + + + + + + input_using_clause + + + + +
             ::= input_using_clause
    +
    + referenced by: + + execute_statement + + execute_immediate_statement: + + + + + + + + EXECUTE + + + IMMEDIATE + + + SQL_statement_variable + + + + +
             ::= 'EXECUTE' 'IMMEDIATE' SQL_statement_variable
    +
    + referenced by: + + SQL_dynamic_statement + + dynamic_declare_cursor: + + + + + + + + DECLARE + + + cursor_name + + + cursor_sensitivity + + + cursor_scrollability + + CURSOR + + + cursor_holdability + + + cursor_returnability + + FOR + + + statement_name + + + + + + + referenced by: + + module_contents + statement_or_declaration + + allocate_cursor_statement: + + + + + + + + ALLOCATE + + + extended_cursor_name + + + cursor_intent + + + + +
             ::= 'ALLOCATE' extended_cursor_name cursor_intent
    +
    + referenced by: + + SQL_dynamic_data_statement + + cursor_intent: + + + + + + + + statement_cursor + + + result_set_cursor + + + + +
             ::= statement_cursor
    +
               | result_set_cursor
    +
    + referenced by: + + allocate_cursor_statement + + statement_cursor: + + + + + + + + cursor_sensitivity + + + cursor_scrollability + + CURSOR + + + cursor_holdability + + + cursor_returnability + + FOR + + + extended_statement_name + + + + + + + referenced by: + + cursor_intent + + result_set_cursor: + + + + + + + + FOR + + + PROCEDURE + + + specific_routine_designator + + + + +
             ::= 'FOR' 'PROCEDURE' specific_routine_designator
    +
    + referenced by: + + cursor_intent + + dynamic_open_statement: + + + + + + + + OPEN + + + dynamic_cursor_name + + + input_using_clause + + + + +
             ::= 'OPEN' dynamic_cursor_name input_using_clause?
    +
    + referenced by: + + SQL_dynamic_data_statement + + dynamic_fetch_statement: + + + + + + + + FETCH + + + fetch_orientation + + FROM + + + dynamic_cursor_name + + + output_using_clause + + + + +
             ::= 'FETCH' ( fetch_orientation? 'FROM' )? dynamic_cursor_name output_using_clause
    +
    + referenced by: + + SQL_dynamic_data_statement + + dynamic_single_row_select_statement: + + + + + + + + query_specification + + + + +
             ::= query_specification
    +
    + referenced by: + + preparable_SQL_data_statement + + dynamic_close_statement: + + + + + + + + CLOSE + + + dynamic_cursor_name + + + + +
             ::= 'CLOSE' dynamic_cursor_name
    +
    + referenced by: + + SQL_dynamic_data_statement + + dynamic_delete_statement__positioned: + + + + + + + + DELETE + + + FROM + + + target_table + + WHERE + + + CURRENT + + + OF + + + dynamic_cursor_name + + + + +
             ::= 'DELETE' 'FROM' target_table 'WHERE' 'CURRENT' 'OF' dynamic_cursor_name
    +
    + referenced by: + + SQL_dynamic_data_statement + + dynamic_update_statement__positioned: + + + + + + + + UPDATE + + + target_table + + SET + + + set_clause_list + + WHERE + + + CURRENT + + + OF + + + dynamic_cursor_name + + + + +
             ::= 'UPDATE' target_table 'SET' set_clause_list 'WHERE' 'CURRENT' 'OF' dynamic_cursor_name
    +
    + referenced by: + + SQL_dynamic_data_statement + + preparable_dynamic_delete_statement__positioned: + + + + + + + + DELETE + + + FROM + + + target_table + + WHERE + + + CURRENT + + + OF + + + scope_option + + + cursor_name + + + + +
             ::= 'DELETE' ( 'FROM' target_table )? 'WHERE' 'CURRENT' 'OF' scope_option? cursor_name
    +
    + referenced by: + + preparable_SQL_data_statement + + preparable_dynamic_update_statement__positioned: + + + + + + + + UPDATE + + + target_table + + SET + + + set_clause_list + + WHERE + + + CURRENT + + + OF + + + scope_option + + + cursor_name + + + + +
             ::= 'UPDATE' target_table? 'SET' set_clause_list 'WHERE' 'CURRENT' 'OF' scope_option? cursor_name
    +
    + referenced by: + + preparable_SQL_data_statement + + embedded_SQL_host_program: + + + + + + + + embedded_SQL_Ada_program + + + embedded_SQL_C_program + + + embedded_SQL_COBOL_program + + + embedded_SQL_Fortran_program + + + embedded_SQL_MUMPS_program + + + embedded_SQL_Pascal_program + + + embedded_SQL_PL_I_program + + + + +
             ::= embedded_SQL_Ada_program
    +
               | embedded_SQL_C_program
    +
               | embedded_SQL_COBOL_program
    +
               | embedded_SQL_Fortran_program
    +
               | embedded_SQL_MUMPS_program
    +
               | embedded_SQL_Pascal_program
    +
               | embedded_SQL_PL_I_program
    +
    + no referencesembedded_SQL_statement: + + + + + + + + SQL_prefix + + + statement_or_declaration + + + SQL_terminator + + + + + + + no referencesstatement_or_declaration: + + + + + + + + declare_cursor + + + dynamic_declare_cursor + + + temporary_table_declaration + + + embedded_authorization_declaration + + + embedded_path_specification + + + embedded_transform_group_specification + + + embedded_collation_specification + + + embedded_exception_declaration + + + handler_declaration + + + SQL_procedure_statement + + + + +
             ::= declare_cursor
    +
               | dynamic_declare_cursor
    +
               | temporary_table_declaration
    +
               | embedded_authorization_declaration
    +
               | embedded_path_specification
    + +
               | embedded_collation_specification
    +
               | embedded_exception_declaration
    +
               | handler_declaration
    +
               | SQL_procedure_statement
    +
    + referenced by: + + embedded_SQL_statement + + SQL_prefix: + + + + + + + + EXEC + + + SQL + + + & + + + SQL + + + ( + + + + + +
             ::= 'EXEC' 'SQL'
    +
               | '&' 'SQL' '('
    +
    + referenced by: + + embedded_SQL_MUMPS_declare + embedded_SQL_begin_declare + embedded_SQL_end_declare + embedded_SQL_statement + + SQL_terminator: + + + + + + + + END-EXEC + + + ; + + + ) + + + + + +
             ::= 'END-EXEC'
    +
               | ';'
    +
               | ')'
    +
    + referenced by: + + embedded_SQL_MUMPS_declare + embedded_SQL_begin_declare + embedded_SQL_end_declare + embedded_SQL_statement + + embedded_authorization_declaration: + + + + + + + + DECLARE + + + embedded_authorization_clause + + + + +
             ::= 'DECLARE' embedded_authorization_clause
    +
    + referenced by: + + statement_or_declaration + + embedded_authorization_clause: + + + + + + + + SCHEMA* + + + schema_name + + AUTHORIZATION + + + embedded_authorization_identifier + + FOR + + + STATIC + + + ONLY + + + AND + + + DYNAMIC + + + AUTHORIZATION + + + embedded_authorization_identifier + + FOR + + + STATIC + + + ONLY + + + AND + + + DYNAMIC + + + + + +
             ::= 'SCHEMA*' schema_name ( 'AUTHORIZATION' embedded_authorization_identifier ( 'FOR' 'STATIC' ( 'ONLY' | 'AND' 'DYNAMIC' ) )? )?
    +
               | 'AUTHORIZATION' embedded_authorization_identifier ( 'FOR' 'STATIC' ( 'ONLY' | 'AND' 'DYNAMIC' ) )?
    +
    + referenced by: + + embedded_authorization_declaration + + embedded_authorization_identifier: + + + + + + + + module_authorization_identifier + + + + +
             ::= module_authorization_identifier
    +
    + referenced by: + + embedded_authorization_clause + + embedded_path_specification: + + + + + + + + path_specification + + + + +
             ::= path_specification
    +
    + referenced by: + + statement_or_declaration + + embedded_transform_group_specification: + + + + + + + + transform_group_specification + + + + +
             ::= transform_group_specification
    +
    + referenced by: + + statement_or_declaration + + embedded_collation_specification: + + + + + + + + module_collation + + + + +
             ::= module_collation
    +
    + referenced by: + + statement_or_declaration + + embedded_SQL_declare_section: + + + + + + + + embedded_SQL_begin_declare + + + embedded_character_set_declaration + + + host_variable_definition + + + embedded_SQL_end_declare + + + embedded_SQL_MUMPS_declare + + + + + +
               | embedded_SQL_MUMPS_declare
    +
    + no referencesembedded_character_set_declaration: + + + + + + + + SQL + + + NAMES* + + + ARE + + + character_set_specification + + + + +
             ::= 'SQL' 'NAMES*' 'ARE' character_set_specification
    +
    + referenced by: + + embedded_SQL_MUMPS_declare + embedded_SQL_declare_section + + embedded_SQL_begin_declare: + + + + + + + + SQL_prefix + + BEGIN + + + DECLARE + + + SECTION* + + + SQL_terminator + + + + +
             ::= SQL_prefix 'BEGIN' 'DECLARE' 'SECTION*' SQL_terminator?
    +
    + referenced by: + + embedded_SQL_declare_section + + embedded_SQL_end_declare: + + + + + + + + SQL_prefix + + END + + + DECLARE + + + SECTION* + + + SQL_terminator + + + + +
             ::= SQL_prefix 'END' 'DECLARE' 'SECTION*' SQL_terminator?
    +
    + referenced by: + + embedded_SQL_declare_section + + embedded_SQL_MUMPS_declare: + + + + + + + + SQL_prefix + + BEGIN + + + DECLARE + + + SECTION* + + + embedded_character_set_declaration + + + host_variable_definition + + END + + + DECLARE + + + SECTION* + + + SQL_terminator + + + + +
             ::= SQL_prefix 'BEGIN' 'DECLARE' 'SECTION*' embedded_character_set_declaration? host_variable_definition? 'END' 'DECLARE' 'SECTION*' SQL_terminator
    +
    + referenced by: + + embedded_SQL_declare_section + + host_variable_definition: + + + + + + + + Ada_variable_definition + + + C_variable_definition + + + COBOL_variable_definition + + + Fortran_variable_definition + + + MUMPS_variable_definition + + + Pascal_variable_definition + + + PL_I_variable_definition + + + + +
             ::= Ada_variable_definition
    +
               | C_variable_definition
    +
               | COBOL_variable_definition
    +
               | Fortran_variable_definition
    +
               | MUMPS_variable_definition
    +
               | Pascal_variable_definition
    +
               | PL_I_variable_definition
    +
    + referenced by: + + embedded_SQL_MUMPS_declare + embedded_SQL_declare_section + + embedded_variable_name: + + + + + + + + : + + + host_identifier + + + + +
             ::= ':' host_identifier
    +
    + referenced by: + + embedded_variable_specification + indicator_variable + locator_reference + simple_target_specification + simple_value_specification + + host_identifier: + + + + + + + + Ada_host_identifier + + + C_host_identifier + + + COBOL_host_identifier + + + Fortran_host_identifier + + + MUMPS_host_identifier + + + Pascal_host_identifier + + + PL_I_host_identifier + + + + +
             ::= Ada_host_identifier
    +
               | C_host_identifier
    +
               | COBOL_host_identifier
    +
               | Fortran_host_identifier
    +
               | MUMPS_host_identifier
    +
               | Pascal_host_identifier
    +
               | PL_I_host_identifier
    +
    + referenced by: + + embedded_variable_name + + embedded_exception_declaration: + + + + + + + + WHENEVER + + + condition + + + condition_action + + + + +
             ::= 'WHENEVER' condition condition_action
    +
    + referenced by: + + statement_or_declaration + + condition: + + + + + + + + SQL_condition + + + + +
             ::= SQL_condition
    +
    + referenced by: + + embedded_exception_declaration + + SQL_condition: + + + + + + + + major_category + + SQLSTATE + + + SQLSTATE_class_value + + , + + + SQLSTATE_subclass_value + + CONSTRAINT + + + constraint_name + + + + +
             ::= major_category
    +
               | 'SQLSTATE' SQLSTATE_class_value ( ',' SQLSTATE_subclass_value )?
    +
               | 'CONSTRAINT' constraint_name
    +
    + referenced by: + + condition + + major_category: + + + + + + + + SQLEXCEPTION + + + SQLWARNING + + + NOT + + + FOUND* + + + + + +
             ::= 'SQLEXCEPTION'
    +
               | 'SQLWARNING'
    +
               | 'NOT' 'FOUND*'
    +
    + referenced by: + + SQL_condition + + SQLSTATE_class_value: + + + + + + + + SQLSTATE_char + + + SQLSTATE_char + + + + +
             ::= SQLSTATE_char SQLSTATE_char
    +
    + referenced by: + + SQL_condition + + SQLSTATE_subclass_value: + + + + + + + + SQLSTATE_char + + + SQLSTATE_char + + + SQLSTATE_char + + + + + + + referenced by: + + SQL_condition + + SQLSTATE_char: + + + + + + + + simple_Latin_upper_case_letter + + + digit + + + + +
             ::= simple_Latin_upper_case_letter
    +
               | digit
    +
    + referenced by: + + SQLSTATE_class_value + SQLSTATE_subclass_value + + condition_action: + + + + + + + + CONTINUE + + + go_to + + + + +
             ::= 'CONTINUE'
    +
               | go_to
    +
    + referenced by: + + embedded_exception_declaration + + go_to: + + + + + + + + GOTO* + + + GO* + + + TO + + + goto_target + + + +
    go_to    ::= ( 'GOTO*' | 'GO*' 'TO' ) goto_target
    +
    + referenced by: + + condition_action + + goto_target: + + + + + + + + host_label_identifier + + + unsigned_integer + + + host_PL_I_label_variable + + + + +
             ::= host_label_identifier
    +
               | unsigned_integer
    +
               | host_PL_I_label_variable
    +
    + referenced by: + + go_to + + host_label_identifier: + + + + + + + + + + +
             ::=
    +
    + referenced by: + + goto_target + + host_PL_I_label_variable: + + + + + + + + + + +
             ::=
    +
    + referenced by: + + goto_target + + embedded_SQL_Ada_program: + + + + + + + + + + +
             ::=
    +
    + referenced by: + + embedded_SQL_host_program + + Ada_variable_definition: + + + + + + + + Ada_host_identifier + + , + + + : + + + Ada_type_specification + + + Ada_initial_value + + + + + + + referenced by: + + host_variable_definition + + Ada_initial_value: + + + + + + + + Ada_assignment_operator + + + character_representation + + . + + + . + + + . + + + + + + + + referenced by: + + Ada_variable_definition + + Ada_assignment_operator: + + + + + + + + : + + + = + + + + + +
             ::= ':' '='
    +
    + referenced by: + + Ada_initial_value + + Ada_host_identifier: + + + + + + + + + + +
             ::=
    +
    + referenced by: + + Ada_variable_definition + host_identifier + + Ada_type_specification: + + + + + + + + Ada_qualified_type_specification + + + Ada_unqualified_type_specification + + + Ada_derived_type_specification + + + + +
             ::= Ada_qualified_type_specification
    +
               | Ada_unqualified_type_specification
    +
               | Ada_derived_type_specification
    +
    + referenced by: + + Ada_variable_definition + + Ada_qualified_type_specification: + + + + + + + + Interfaces.SQL + + . + + + CHAR + + + CHARACTER + + + SET + + + IS + + + character_set_specification + + ( + + + .. + + + length + + ) + + + SMALLINT + + + INT + + + BIGINT + + + REAL + + + DOUBLE_PRECISION + + BOOLEAN + + + SQLSTATE_TYPE + + + INDICATOR_TYPE + + + + +
             ::= Interfaces.SQL '.' ( 'CHAR' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )? '(' '..' length ')' | 'SMALLINT' | 'INT' | 'BIGINT' | 'REAL' | DOUBLE_PRECISION | 'BOOLEAN' | SQLSTATE_TYPE | INDICATOR_TYPE )
    +
    + referenced by: + + Ada_type_specification + + Ada_unqualified_type_specification: + + + + + + + + CHAR + + + ( + + + .. + + + length + + ) + + + SMALLINT + + + INT + + + BIGINT + + + REAL + + + DOUBLE_PRECISION + + BOOLEAN + + + SQLSTATE_TYPE + + + INDICATOR_TYPE + + + + +
             ::= 'CHAR' '(' '..' length ')'
    +
               | 'SMALLINT'
    +
               | 'INT'
    +
               | 'BIGINT'
    +
               | 'REAL'
    +
               | DOUBLE_PRECISION
    +
               | 'BOOLEAN'
    +
               | SQLSTATE_TYPE
    +
               | INDICATOR_TYPE
    +
    + referenced by: + + Ada_type_specification + + Ada_derived_type_specification: + + + + + + + + Ada_CLOB_variable + + + Ada_CLOB_locator_variable + + + Ada_BLOB_variable + + + Ada_BLOB_locator_variable + + + Ada_user_defined_type_variable + + + Ada_user_defined_type_locator_variable + + + Ada_REF_variable + + + Ada_array_locator_variable + + + Ada_multiset_locator_variable + + + + +
             ::= Ada_CLOB_variable
    +
               | Ada_CLOB_locator_variable
    +
               | Ada_BLOB_variable
    +
               | Ada_BLOB_locator_variable
    +
               | Ada_user_defined_type_variable
    + +
               | Ada_REF_variable
    +
               | Ada_array_locator_variable
    +
               | Ada_multiset_locator_variable
    +
    + referenced by: + + Ada_type_specification + + Ada_CLOB_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + CLOB + + + ( + + + large_object_length + + ) + + + CHARACTER + + + SET + + + IS + + + character_set_specification + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' '(' large_object_length ')' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )?
    +
    + referenced by: + + Ada_derived_type_specification + + Ada_CLOB_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + CLOB + + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' 'AS' 'LOCATOR*'
    +
    + referenced by: + + Ada_derived_type_specification + + Ada_BLOB_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + BLOB + + + ( + + + large_object_length + + ) + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' '(' large_object_length ')'
    +
    + referenced by: + + Ada_derived_type_specification + + Ada_BLOB_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + BLOB + + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' 'AS' 'LOCATOR*'
    +
    + referenced by: + + Ada_derived_type_specification + + Ada_user_defined_type_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + path_resolved_user_defined_type_name + + AS + + + predefined_type + + + + +
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' predefined_type
    +
    + referenced by: + + Ada_derived_type_specification + + Ada_user_defined_type_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + path_resolved_user_defined_type_name + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' 'LOCATOR*'
    +
    + referenced by: + + Ada_derived_type_specification + + Ada_REF_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + reference_type + + + + +
             ::= 'SQL' 'TYPE*' 'IS' reference_type
    +
    + referenced by: + + Ada_derived_type_specification + + Ada_array_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + array_type + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' array_type 'AS' 'LOCATOR*'
    +
    + referenced by: + + Ada_derived_type_specification + + Ada_multiset_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + multiset_type + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' multiset_type 'AS' 'LOCATOR*'
    +
    + referenced by: + + Ada_derived_type_specification + + embedded_SQL_C_program: + + + + + + + + + + +
             ::=
    +
    + referenced by: + + embedded_SQL_host_program + + C_variable_definition: + + + + + + + + C_storage_class + + + C_class_modifier + + + C_variable_specification + + ; + + + + + + + + referenced by: + + host_variable_definition + + C_variable_specification: + + + + + + + + C_numeric_variable + + + C_character_variable + + + C_derived_variable + + + + +
             ::= C_numeric_variable
    +
               | C_character_variable
    +
               | C_derived_variable
    +
    + referenced by: + + C_variable_definition + + C_storage_class: + + + + + + + + auto + + + extern + + + static + + + + +
             ::= auto
    +
               | extern
    +
               | static
    +
    + referenced by: + + C_variable_definition + + C_class_modifier: + + + + + + + + const + + + volatile + + + + +
             ::= const
    +
               | volatile
    +
    + referenced by: + + C_variable_definition + + C_numeric_variable: + + + + + + + + long + + + long + + + short + + + float + + + double + + + C_host_identifier + + + C_initial_value + + , + + + + + + + + referenced by: + + C_variable_specification + + C_character_variable: + + + + + + + + C_character_type + + CHARACTER + + + SET + + + IS + + + character_set_specification + + + C_host_identifier + + + C_array_specification + + + C_initial_value + + , + + + + + + + + referenced by: + + C_variable_specification + + C_character_type: + + + + + + + + char + + + unsigned + + + char + + + short + + + + +
             ::= char
    +
               | unsigned ( char | short )
    +
    + referenced by: + + C_character_variable + + C_array_specification: + + + + + + + + [ + + + length + + ] + + + + + +
             ::= '[' length ']'
    +
    + referenced by: + + C_NCHAR_VARYING_variable + C_NCHAR_variable + C_VARCHAR_variable + C_character_variable + + C_host_identifier: + + + + + + + + + + +
             ::=
    +
    + referenced by: + + C_BLOB_locator_variable + C_BLOB_variable + C_CLOB_locator_variable + C_CLOB_variable + C_NCHAR_VARYING_variable + C_NCHAR_variable + C_NCLOB_variable + C_VARCHAR_variable + C_array_locator_variable + C_character_variable + C_multiset_locator_variable + C_numeric_variable + C_user_defined_type_locator_variable + C_user_defined_type_variable + host_identifier + + C_derived_variable: + + + + + + + + C_VARCHAR_variable + + + C_NCHAR_variable + + + C_NCHAR_VARYING_variable + + + C_CLOB_variable + + + C_NCLOB_variable + + + C_BLOB_variable + + + C_user_defined_type_variable + + + C_CLOB_locator_variable + + + C_BLOB_locator_variable + + + C_array_locator_variable + + + C_multiset_locator_variable + + + C_user_defined_type_locator_variable + + + C_REF_variable + + + + +
             ::= C_VARCHAR_variable
    +
               | C_NCHAR_variable
    +
               | C_NCHAR_VARYING_variable
    +
               | C_CLOB_variable
    +
               | C_NCLOB_variable
    +
               | C_BLOB_variable
    +
               | C_user_defined_type_variable
    +
               | C_CLOB_locator_variable
    +
               | C_BLOB_locator_variable
    +
               | C_array_locator_variable
    +
               | C_multiset_locator_variable
    +
               | C_user_defined_type_locator_variable
    +
               | C_REF_variable
    +
    + referenced by: + + C_variable_specification + + C_VARCHAR_variable: + + + + + + + + VARCHAR + + + CHARACTER + + + SET + + + IS + + + character_set_specification + + + C_host_identifier + + + C_array_specification + + + C_initial_value + + , + + + + + + + + referenced by: + + C_derived_variable + + C_NCHAR_variable: + + + + + + + + NCHAR + + + CHARACTER + + + SET + + + IS + + + character_set_specification + + + C_host_identifier + + + C_array_specification + + + C_initial_value + + , + + + + + + + + referenced by: + + C_derived_variable + + C_NCHAR_VARYING_variable: + + + + + + + + NCHAR + + + VARYING + + + CHARACTER + + + SET + + + IS + + + character_set_specification + + + C_host_identifier + + + C_array_specification + + + C_initial_value + + , + + + + + + + + referenced by: + + C_derived_variable + + C_CLOB_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + CLOB + + + ( + + + large_object_length + + ) + + + CHARACTER + + + SET + + + IS + + + character_set_specification + + + C_host_identifier + + + C_initial_value + + , + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' '(' large_object_length ')' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )? C_host_identifier C_initial_value? ( ',' C_host_identifier C_initial_value? )*
    +
    + referenced by: + + C_derived_variable + + C_NCLOB_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + NCLOB + + + ( + + + large_object_length + + ) + + + CHARACTER + + + SET + + + IS + + + character_set_specification + + + C_host_identifier + + + C_initial_value + + , + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'NCLOB' '(' large_object_length ')' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )? C_host_identifier C_initial_value? ( ',' C_host_identifier C_initial_value? )*
    +
    + referenced by: + + C_derived_variable + + C_user_defined_type_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + path_resolved_user_defined_type_name + + AS + + + predefined_type + + + C_host_identifier + + + C_initial_value + + , + + + + + + + + referenced by: + + C_derived_variable + + C_BLOB_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + BLOB + + + ( + + + large_object_length + + ) + + + C_host_identifier + + + C_initial_value + + , + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' '(' large_object_length ')' C_host_identifier C_initial_value? ( ',' C_host_identifier C_initial_value? )*
    +
    + referenced by: + + C_derived_variable + + C_CLOB_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + CLOB + + + AS + + + LOCATOR* + + + C_host_identifier + + + C_initial_value + + , + + + C_host_identifier + + + C_initial_value + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' 'AS' 'LOCATOR*' C_host_identifier C_initial_value? ( ',' C_host_identifier C_initial_value? )?
    +
    + referenced by: + + C_derived_variable + + C_BLOB_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + BLOB + + + AS + + + LOCATOR* + + + C_host_identifier + + + C_initial_value + + , + + + C_host_identifier + + + C_initial_value + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' 'AS' 'LOCATOR*' C_host_identifier C_initial_value? ( ',' C_host_identifier C_initial_value? )?
    +
    + referenced by: + + C_derived_variable + + C_array_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + array_type + + AS + + + LOCATOR* + + + C_host_identifier + + + C_initial_value + + , + + + C_host_identifier + + + C_initial_value + + + + +
             ::= 'SQL' 'TYPE*' 'IS' array_type 'AS' 'LOCATOR*' C_host_identifier C_initial_value? ( ',' C_host_identifier C_initial_value? )?
    +
    + referenced by: + + C_derived_variable + + C_multiset_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + multiset_type + + AS + + + LOCATOR* + + + C_host_identifier + + + C_initial_value + + , + + + C_host_identifier + + + C_initial_value + + + + +
             ::= 'SQL' 'TYPE*' 'IS' multiset_type 'AS' 'LOCATOR*' C_host_identifier C_initial_value? ( ',' C_host_identifier C_initial_value? )?
    +
    + referenced by: + + C_derived_variable + + C_user_defined_type_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + path_resolved_user_defined_type_name + + AS + + + LOCATOR* + + + C_host_identifier + + + C_initial_value + + , + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' 'LOCATOR*' C_host_identifier C_initial_value? ( ',' C_host_identifier C_initial_value? )*
    +
    + referenced by: + + C_derived_variable + + C_REF_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + reference_type + + + + +
             ::= 'SQL' 'TYPE*' 'IS' reference_type
    +
    + referenced by: + + C_derived_variable + + C_initial_value: + + + + + + + + = + + + character_representation + + . + + + . + + + . + + + + + +
             ::= '=' character_representation . . .
    +
    + referenced by: + + C_BLOB_locator_variable + C_BLOB_variable + C_CLOB_locator_variable + C_CLOB_variable + C_NCHAR_VARYING_variable + C_NCHAR_variable + C_NCLOB_variable + C_VARCHAR_variable + C_array_locator_variable + C_character_variable + C_multiset_locator_variable + C_numeric_variable + C_user_defined_type_locator_variable + C_user_defined_type_variable + + embedded_SQL_COBOL_program: + + + + + + + + + + +
             ::=
    +
    + referenced by: + + embedded_SQL_host_program + + COBOL_variable_definition: + + + + + + + + COBOL_host_identifier + + + COBOL_type_specification + + + character_representation + + . + + + + + + + + referenced by: + + host_variable_definition + + COBOL_host_identifier: + + + + + + + + + + +
             ::=
    +
    + referenced by: + + COBOL_variable_definition + host_identifier + + COBOL_type_specification: + + + + + + + + COBOL_character_type + + + COBOL_national_character_type + + + COBOL_numeric_type + + + COBOL_integer_type + + + COBOL_derived_type_specification + + + + +
             ::= COBOL_character_type
    +
               | COBOL_national_character_type
    +
               | COBOL_numeric_type
    +
               | COBOL_integer_type
    +
               | COBOL_derived_type_specification
    +
    + referenced by: + + COBOL_variable_definition + + COBOL_derived_type_specification: + + + + + + + + COBOL_CLOB_variable + + + COBOL_NCLOB_variable + + + COBOL_BLOB_variable + + + COBOL_user_defined_type_variable + + + COBOL_CLOB_locator_variable + + + COBOL_BLOB_locator_variable + + + COBOL_array_locator_variable + + + COBOL_multiset_locator_variable + + + COBOL_user_defined_type_locator_variable + + + COBOL_REF_variable + + + + +
             ::= COBOL_CLOB_variable
    +
               | COBOL_NCLOB_variable
    +
               | COBOL_BLOB_variable
    +
               | COBOL_user_defined_type_variable
    +
               | COBOL_CLOB_locator_variable
    +
               | COBOL_BLOB_locator_variable
    +
               | COBOL_array_locator_variable
    +
               | COBOL_multiset_locator_variable
    + +
               | COBOL_REF_variable
    +
    + referenced by: + + COBOL_type_specification + + COBOL_character_type: + + + + + + + + CHARACTER + + + SET + + + IS + + + character_set_specification + + + PIC + + + PICTURE + + IS + + + X + + ( + + + length + + ) + + + + + +
             ::= ( 'CHARACTER' 'SET' 'IS'? character_set_specification )? ( PIC | PICTURE ) 'IS'? ( X ( '(' length ')' )? )*
    +
    + referenced by: + + COBOL_type_specification + + COBOL_national_character_type: + + + + + + + + CHARACTER + + + SET + + + IS + + + character_set_specification + + + PIC + + + PICTURE + + IS + + + N + + ( + + + length + + ) + + + + + +
             ::= ( 'CHARACTER' 'SET' 'IS'? character_set_specification )? ( PIC | PICTURE ) 'IS'? ( N ( '(' length ')' )? )*
    +
    + referenced by: + + COBOL_type_specification + + COBOL_CLOB_variable: + + + + + + + + USAGE* + + + IS + + + SQL + + + TYPE* + + + IS + + + CLOB + + + ( + + + large_object_length + + ) + + + CHARACTER + + + SET + + + IS + + + character_set_specification + + + + +
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' 'CLOB' '(' large_object_length ')' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )?
    +
    + referenced by: + + COBOL_derived_type_specification + + COBOL_NCLOB_variable: + + + + + + + + USAGE* + + + IS + + + SQL + + + TYPE* + + + IS + + + NCLOB + + + ( + + + large_object_length + + ) + + + CHARACTER + + + SET + + + IS + + + character_set_specification + + + + +
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' 'NCLOB' '(' large_object_length ')' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )?
    +
    + referenced by: + + COBOL_derived_type_specification + + COBOL_BLOB_variable: + + + + + + + + USAGE* + + + IS + + + SQL + + + TYPE* + + + IS + + + BLOB + + + ( + + + large_object_length + + ) + + + + + +
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' 'BLOB' '(' large_object_length ')'
    +
    + referenced by: + + COBOL_derived_type_specification + + COBOL_user_defined_type_variable: + + + + + + + + USAGE* + + + IS + + + SQL + + + TYPE* + + + IS + + + path_resolved_user_defined_type_name + + AS + + + predefined_type + + + + +
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' predefined_type
    +
    + referenced by: + + COBOL_derived_type_specification + + COBOL_CLOB_locator_variable: + + + + + + + + USAGE* + + + IS + + + SQL + + + TYPE* + + + IS + + + CLOB + + + AS + + + LOCATOR* + + + + + +
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' 'CLOB' 'AS' 'LOCATOR*'
    +
    + referenced by: + + COBOL_derived_type_specification + + COBOL_BLOB_locator_variable: + + + + + + + + USAGE* + + + IS + + + SQL + + + TYPE* + + + IS + + + BLOB + + + AS + + + LOCATOR* + + + + + +
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' 'BLOB' 'AS' 'LOCATOR*'
    +
    + referenced by: + + COBOL_derived_type_specification + + COBOL_array_locator_variable: + + + + + + + + USAGE* + + + IS + + + SQL + + + TYPE* + + + IS + + + array_type + + AS + + + LOCATOR* + + + + + +
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' array_type 'AS' 'LOCATOR*'
    +
    + referenced by: + + COBOL_derived_type_specification + + COBOL_multiset_locator_variable: + + + + + + + + USAGE* + + + IS + + + SQL + + + TYPE* + + + IS + + + multiset_type + + AS + + + LOCATOR* + + + + + +
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' multiset_type 'AS' 'LOCATOR*'
    +
    + referenced by: + + COBOL_derived_type_specification + + COBOL_user_defined_type_locator_variable: + + + + + + + + USAGE* + + + IS + + + SQL + + + TYPE* + + + IS + + + path_resolved_user_defined_type_name + + AS + + + LOCATOR* + + + + + +
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' 'LOCATOR*'
    +
    + referenced by: + + COBOL_derived_type_specification + + COBOL_REF_variable: + + + + + + + + USAGE* + + + IS + + + SQL + + + TYPE* + + + IS + + + reference_type + + + + +
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' reference_type
    +
    + referenced by: + + COBOL_derived_type_specification + + COBOL_numeric_type: + + + + + + + + PIC + + + PICTURE + + IS + + + S + + + COBOL_nines_specification + + USAGE* + + + IS + + + DISPLAY + + + SIGN + + LEADING + + + SEPARATE + + + + +
             ::= ( PIC | PICTURE ) 'IS'? S COBOL_nines_specification ( 'USAGE*' 'IS'? )? DISPLAY SIGN 'LEADING' SEPARATE
    +
    + referenced by: + + COBOL_type_specification + + COBOL_nines_specification: + + + + + + + + COBOL_nines + + + V + + + COBOL_nines + + + V + + + COBOL_nines + + + + +
             ::= COBOL_nines ( V COBOL_nines? )?
    +
               | V COBOL_nines
    +
    + referenced by: + + COBOL_numeric_type + + COBOL_integer_type: + + + + + + + + COBOL_binary_integer + + + + +
             ::= COBOL_binary_integer
    +
    + referenced by: + + COBOL_type_specification + + COBOL_binary_integer: + + + + + + + + PIC + + + PICTURE + + IS + + + S + + + COBOL_nines + + USAGE* + + + IS + + + BINARY + + + + + +
             ::= ( PIC | PICTURE ) 'IS'? S COBOL_nines ( 'USAGE*' 'IS'? )? 'BINARY'
    +
    + referenced by: + + COBOL_integer_type + + COBOL_nines: + + + + + + + + ( + + + length + + ) + + + + + +
             ::= ( '(' length ')' )*
    +
    + referenced by: + + COBOL_binary_integer + COBOL_nines_specification + + embedded_SQL_Fortran_program: + + + + + + + + + + +
             ::=
    +
    + referenced by: + + embedded_SQL_host_program + + Fortran_variable_definition: + + + + + + + + Fortran_type_specification + + + Fortran_host_identifier + + , + + + + + + + + referenced by: + + host_variable_definition + + Fortran_host_identifier: + + + + + + + + + + +
             ::=
    +
    + referenced by: + + Fortran_variable_definition + host_identifier + + Fortran_type_specification: + + + + + + + + CHARACTER + + + KIND + + = + + + n + + * + + + length + + CHARACTER + + + SET + + + IS + + + character_set_specification + + INTEGER + + + REAL + + + DOUBLE + + + PRECISION + + + LOGICAL + + + Fortran_derived_type_specification + + + + +
             ::= 'CHARACTER' ( KIND '=' n )? '*' length? ( 'CHARACTER' 'SET' 'IS'? character_set_specification )?
    +
               | 'INTEGER'
    +
               | 'REAL'
    +
               | 'DOUBLE' 'PRECISION'
    +
               | LOGICAL
    +
               | Fortran_derived_type_specification
    +
    + referenced by: + + Fortran_variable_definition + + Fortran_derived_type_specification: + + + + + + + + Fortran_CLOB_variable + + + Fortran_BLOB_variable + + + Fortran_user_defined_type_variable + + + Fortran_CLOB_locator_variable + + + Fortran_BLOB_locator_variable + + + Fortran_user_defined_type_locator_variable + + + Fortran_array_locator_variable + + + Fortran_multiset_locator_variable + + + Fortran_REF_variable + + + + +
             ::= Fortran_CLOB_variable
    +
               | Fortran_BLOB_variable
    +
               | Fortran_user_defined_type_variable
    +
               | Fortran_CLOB_locator_variable
    +
               | Fortran_BLOB_locator_variable
    + +
               | Fortran_array_locator_variable
    +
               | Fortran_multiset_locator_variable
    +
               | Fortran_REF_variable
    +
    + referenced by: + + Fortran_type_specification + + Fortran_CLOB_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + CLOB + + + ( + + + large_object_length + + ) + + + CHARACTER + + + SET + + + IS + + + character_set_specification + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' '(' large_object_length ')' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )?
    +
    + referenced by: + + Fortran_derived_type_specification + + Fortran_BLOB_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + BLOB + + + ( + + + large_object_length + + ) + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' '(' large_object_length ')'
    +
    + referenced by: + + Fortran_derived_type_specification + + Fortran_user_defined_type_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + path_resolved_user_defined_type_name + + AS + + + predefined_type + + + + +
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' predefined_type
    +
    + referenced by: + + Fortran_derived_type_specification + + Fortran_CLOB_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + CLOB + + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' 'AS' 'LOCATOR*'
    +
    + referenced by: + + Fortran_derived_type_specification + + Fortran_BLOB_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + BLOB + + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' 'AS' 'LOCATOR*'
    +
    + referenced by: + + Fortran_derived_type_specification + + Fortran_user_defined_type_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + path_resolved_user_defined_type_name + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' 'LOCATOR*'
    +
    + referenced by: + + Fortran_derived_type_specification + + Fortran_array_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + array_type + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' array_type 'AS' 'LOCATOR*'
    +
    + referenced by: + + Fortran_derived_type_specification + + Fortran_multiset_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + multiset_type + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' multiset_type 'AS' 'LOCATOR*'
    +
    + referenced by: + + Fortran_derived_type_specification + + Fortran_REF_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + reference_type + + + + +
             ::= 'SQL' 'TYPE*' 'IS' reference_type
    +
    + referenced by: + + Fortran_derived_type_specification + + embedded_SQL_MUMPS_program: + + + + + + + + + + +
             ::=
    +
    + referenced by: + + embedded_SQL_host_program + + MUMPS_variable_definition: + + + + + + + + MUMPS_numeric_variable + + + MUMPS_character_variable + + + MUMPS_derived_type_specification + + ; + + + + + + + + referenced by: + + host_variable_definition + + MUMPS_character_variable: + + + + + + + + VARCHAR + + + MUMPS_host_identifier + + + MUMPS_length_specification + + , + + + + + + + + referenced by: + + MUMPS_variable_definition + + MUMPS_host_identifier: + + + + + + + + + + +
             ::=
    +
    + referenced by: + + MUMPS_character_variable + MUMPS_numeric_variable + host_identifier + + MUMPS_length_specification: + + + + + + + + ( + + + length + + ) + + + + + +
             ::= '(' length ')'
    +
    + referenced by: + + MUMPS_character_variable + + MUMPS_numeric_variable: + + + + + + + + MUMPS_type_specification + + + MUMPS_host_identifier + + , + + + + + + + + referenced by: + + MUMPS_variable_definition + + MUMPS_type_specification: + + + + + + + + INT + + + DEC + + + ( + + + precision + + , + + + scale + + ) + + + REAL + + + + + +
             ::= 'INT'
    +
               | 'DEC' ( '(' precision ( ',' scale )? ')' )?
    +
               | 'REAL'
    +
    + referenced by: + + MUMPS_numeric_variable + + MUMPS_derived_type_specification: + + + + + + + + MUMPS_CLOB_variable + + + MUMPS_BLOB_variable + + + MUMPS_user_defined_type_variable + + + MUMPS_CLOB_locator_variable + + + MUMPS_BLOB_locator_variable + + + MUMPS_user_defined_type_locator_variable + + + MUMPS_array_locator_variable + + + MUMPS_multiset_locator_variable + + + MUMPS_REF_variable + + + + +
             ::= MUMPS_CLOB_variable
    +
               | MUMPS_BLOB_variable
    +
               | MUMPS_user_defined_type_variable
    +
               | MUMPS_CLOB_locator_variable
    +
               | MUMPS_BLOB_locator_variable
    + +
               | MUMPS_array_locator_variable
    +
               | MUMPS_multiset_locator_variable
    +
               | MUMPS_REF_variable
    +
    + referenced by: + + MUMPS_variable_definition + + MUMPS_CLOB_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + CLOB + + + ( + + + large_object_length + + ) + + + CHARACTER + + + SET + + + IS + + + character_set_specification + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' '(' large_object_length ')' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )?
    +
    + referenced by: + + MUMPS_derived_type_specification + + MUMPS_BLOB_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + BLOB + + + ( + + + large_object_length + + ) + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' '(' large_object_length ')'
    +
    + referenced by: + + MUMPS_derived_type_specification + + MUMPS_user_defined_type_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + path_resolved_user_defined_type_name + + AS + + + predefined_type + + + + +
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' predefined_type
    +
    + referenced by: + + MUMPS_derived_type_specification + + MUMPS_CLOB_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + CLOB + + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' 'AS' 'LOCATOR*'
    +
    + referenced by: + + MUMPS_derived_type_specification + + MUMPS_BLOB_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + BLOB + + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' 'AS' 'LOCATOR*'
    +
    + referenced by: + + MUMPS_derived_type_specification + + MUMPS_user_defined_type_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + path_resolved_user_defined_type_name + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' 'LOCATOR*'
    +
    + referenced by: + + MUMPS_derived_type_specification + + MUMPS_array_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + array_type + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' array_type 'AS' 'LOCATOR*'
    +
    + referenced by: + + MUMPS_derived_type_specification + + MUMPS_multiset_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + multiset_type + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' multiset_type 'AS' 'LOCATOR*'
    +
    + referenced by: + + MUMPS_derived_type_specification + + MUMPS_REF_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + reference_type + + + + +
             ::= 'SQL' 'TYPE*' 'IS' reference_type
    +
    + referenced by: + + MUMPS_derived_type_specification + + embedded_SQL_Pascal_program: + + + + + + + + + + +
             ::=
    +
    + referenced by: + + embedded_SQL_host_program + + Pascal_variable_definition: + + + + + + + + Pascal_host_identifier + + , + + + : + + + Pascal_type_specification + + ; + + + + + + + + referenced by: + + host_variable_definition + + Pascal_host_identifier: + + + + + + + + + + +
             ::=
    +
    + referenced by: + + Pascal_variable_definition + host_identifier + + Pascal_type_specification: + + + + + + + + PACKED + + ARRAY + + + [ + + + .. + + + length + + ] + + + OF + + + CHAR + + + CHARACTER + + + SET + + + IS + + + character_set_specification + + INTEGER + + + REAL + + + BOOLEAN + + + Pascal_derived_type_specification + + + + +
             ::= ( PACKED 'ARRAY' '[' '..' length ']' 'OF' )? 'CHAR' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )?
    +
               | 'INTEGER'
    +
               | 'REAL'
    +
               | 'BOOLEAN'
    +
               | Pascal_derived_type_specification
    +
    + referenced by: + + Pascal_variable_definition + + Pascal_derived_type_specification: + + + + + + + + Pascal_CLOB_variable + + + Pascal_BLOB_variable + + + Pascal_user_defined_type_variable + + + Pascal_CLOB_locator_variable + + + Pascal_BLOB_locator_variable + + + Pascal_user_defined_type_locator_variable + + + Pascal_array_locator_variable + + + Pascal_multiset_locator_variable + + + Pascal_REF_variable + + + + +
             ::= Pascal_CLOB_variable
    +
               | Pascal_BLOB_variable
    +
               | Pascal_user_defined_type_variable
    +
               | Pascal_CLOB_locator_variable
    +
               | Pascal_BLOB_locator_variable
    + +
               | Pascal_array_locator_variable
    +
               | Pascal_multiset_locator_variable
    +
               | Pascal_REF_variable
    +
    + referenced by: + + Pascal_type_specification + + Pascal_CLOB_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + CLOB + + + ( + + + large_object_length + + ) + + + CHARACTER + + + SET + + + IS + + + character_set_specification + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' '(' large_object_length ')' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )?
    +
    + referenced by: + + Pascal_derived_type_specification + + Pascal_BLOB_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + BLOB + + + ( + + + large_object_length + + ) + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' '(' large_object_length ')'
    +
    + referenced by: + + Pascal_derived_type_specification + + Pascal_CLOB_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + CLOB + + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' 'AS' 'LOCATOR*'
    +
    + referenced by: + + Pascal_derived_type_specification + + Pascal_user_defined_type_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + path_resolved_user_defined_type_name + + AS + + + predefined_type + + + + +
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' predefined_type
    +
    + referenced by: + + Pascal_derived_type_specification + + Pascal_BLOB_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + BLOB + + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' 'AS' 'LOCATOR*'
    +
    + referenced by: + + Pascal_derived_type_specification + + Pascal_user_defined_type_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + path_resolved_user_defined_type_name + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' 'LOCATOR*'
    +
    + referenced by: + + Pascal_derived_type_specification + + Pascal_array_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + array_type + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' array_type 'AS' 'LOCATOR*'
    +
    + referenced by: + + Pascal_derived_type_specification + + Pascal_multiset_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + multiset_type + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' multiset_type 'AS' 'LOCATOR*'
    +
    + referenced by: + + Pascal_derived_type_specification + + Pascal_REF_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + reference_type + + + + +
             ::= 'SQL' 'TYPE*' 'IS' reference_type
    +
    + referenced by: + + Pascal_derived_type_specification + + embedded_SQL_PL_I_program: + + + + + + + + + + +
             ::=
    +
    + referenced by: + + embedded_SQL_host_program + + PL_I_variable_definition: + + + + + + + + DCL + + DECLARE + + + PL_I_host_identifier + + ( + + + PL_I_host_identifier + + , + + + ) + + + PL_I_type_specification + + + character_representation + + ; + + + + + + + + referenced by: + + host_variable_definition + + PL_I_host_identifier: + + + + + + + + + + +
             ::=
    +
    + referenced by: + + PL_I_variable_definition + host_identifier + + PL_I_type_specification: + + + + + + + + CHAR + + + CHARACTER + + + VARYING + + + ( + + + length + + ) + + + CHARACTER + + + SET + + + IS + + + character_set_specification + + + PL_I_type_fixed_decimal + + ( + + + precision + + , + + + scale + + + PL_I_type_float_binary + + ( + + + precision + + ) + + + PL_I_type_fixed_binary + + ( + + + precision + + ) + + + PL_I_derived_type_specification + + + + +
             ::= ( 'CHAR' | 'CHARACTER' ) 'VARYING'? '(' length ')' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )?
    +
               | ( PL_I_type_fixed_decimal '(' precision ',' scale? | PL_I_type_float_binary '(' precision ) ')'
    +
               | PL_I_type_fixed_binary ( '(' precision ')' )?
    +
               | PL_I_derived_type_specification
    +
    + referenced by: + + PL_I_variable_definition + + PL_I_derived_type_specification: + + + + + + + + PL_I_CLOB_variable + + + PL_I_BLOB_variable + + + PL_I_user_defined_type_variable + + + PL_I_CLOB_locator_variable + + + PL_I_BLOB_locator_variable + + + PL_I_user_defined_type_locator_variable + + + PL_I_array_locator_variable + + + PL_I_multiset_locator_variable + + + PL_I_REF_variable + + + + +
             ::= PL_I_CLOB_variable
    +
               | PL_I_BLOB_variable
    +
               | PL_I_user_defined_type_variable
    +
               | PL_I_CLOB_locator_variable
    +
               | PL_I_BLOB_locator_variable
    + +
               | PL_I_array_locator_variable
    +
               | PL_I_multiset_locator_variable
    +
               | PL_I_REF_variable
    +
    + referenced by: + + PL_I_type_specification + + PL_I_CLOB_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + CLOB + + + ( + + + large_object_length + + ) + + + CHARACTER + + + SET + + + IS + + + character_set_specification + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' '(' large_object_length ')' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )?
    +
    + referenced by: + + PL_I_derived_type_specification + + PL_I_BLOB_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + BLOB + + + ( + + + large_object_length + + ) + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' '(' large_object_length ')'
    +
    + referenced by: + + PL_I_derived_type_specification + + PL_I_user_defined_type_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + path_resolved_user_defined_type_name + + AS + + + predefined_type + + + + +
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' predefined_type
    +
    + referenced by: + + PL_I_derived_type_specification + + PL_I_CLOB_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + CLOB + + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' 'AS' 'LOCATOR*'
    +
    + referenced by: + + PL_I_derived_type_specification + + PL_I_BLOB_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + BLOB + + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' 'AS' 'LOCATOR*'
    +
    + referenced by: + + PL_I_derived_type_specification + + PL_I_user_defined_type_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + path_resolved_user_defined_type_name + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' 'LOCATOR*'
    +
    + referenced by: + + PL_I_derived_type_specification + + PL_I_array_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + array_type + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' array_type 'AS' 'LOCATOR*'
    +
    + referenced by: + + PL_I_derived_type_specification + + PL_I_multiset_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + multiset_type + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' multiset_type 'AS' 'LOCATOR*'
    +
    + referenced by: + + PL_I_derived_type_specification + + PL_I_REF_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + reference_type + + + + +
             ::= 'SQL' 'TYPE*' 'IS' reference_type
    +
    + referenced by: + + PL_I_derived_type_specification + + PL_I_type_fixed_decimal: + + + + + + + + DEC + + + DECIMAL + + + FIXED + + + FIXED + + DEC + + + DECIMAL + + + + + +
             ::= ( 'DEC' | 'DECIMAL' ) FIXED
    +
               | FIXED ( 'DEC' | 'DECIMAL' )
    +
    + referenced by: + + PL_I_type_specification + + PL_I_type_fixed_binary: + + + + + + + + BIN + + BINARY + + + FIXED + + + FIXED + + + BIN + + BINARY + + + + + +
             ::= ( BIN | 'BINARY' ) FIXED
    +
               | FIXED ( BIN | 'BINARY' )
    +
    + referenced by: + + PL_I_type_specification + + PL_I_type_float_binary: + + + + + + + + BIN + + BINARY + + + FLOAT + + + FLOAT + + + BIN + + BINARY + + + + + +
             ::= ( BIN | 'BINARY' ) 'FLOAT'
    +
               | 'FLOAT' ( BIN | 'BINARY' )
    +
    + referenced by: + + PL_I_type_specification + + direct_implementation_defined_statement: + + + + + + + + + + +
             ::=
    +
    + referenced by: + + directly_executable_statement + + direct_select_statement__multiple_rows: + + + + + + + + cursor_specification + + + + +
             ::= cursor_specification
    +
    + referenced by: + + direct_SQL_data_statement + + get_diagnostics_statement: + + + + + + + + GET + + + DIAGNOSTICS* + + + SQL_diagnostics_information + + + + +
             ::= 'GET' 'DIAGNOSTICS*' SQL_diagnostics_information
    +
    + referenced by: + + SQL_diagnostics_statement + + SQL_diagnostics_information: + + + + + + + + statement_information + + + condition_information + + + + +
             ::= statement_information
    +
               | condition_information
    +
    + referenced by: + + get_diagnostics_statement + + statement_information: + + + + + + + + statement_information_item + + , + + + + + + + + referenced by: + + SQL_diagnostics_information + + statement_information_item: + + + + + + + + simple_target_specification + + = + + + statement_information_item_name + + + + + + + referenced by: + + statement_information + + statement_information_item_name: + + + + + + + + NUMBER* + + + MORE* + + + COMMAND_FUNCTION* + + + COMMAND_FUNCTION_CODE* + + + DYNAMIC_FUNCTION* + + + DYNAMIC_FUNCTION_CODE* + + + ROW_COUNT* + + + TRANSACTIONS_COMMITTED* + + + TRANSACTIONS_ROLLED_BACK* + + + TRANSACTION_ACTIVE* + + + + + +
             ::= 'NUMBER*'
    +
               | 'MORE*'
    +
               | 'COMMAND_FUNCTION*'
    +
               | 'COMMAND_FUNCTION_CODE*'
    +
               | 'DYNAMIC_FUNCTION*'
    +
               | 'DYNAMIC_FUNCTION_CODE*'
    +
               | 'ROW_COUNT*'
    +
               | 'TRANSACTIONS_COMMITTED*'
    +
               | 'TRANSACTIONS_ROLLED_BACK*'
    +
               | 'TRANSACTION_ACTIVE*'
    +
    + referenced by: + + statement_information_item + + condition_information: + + + + + + + + EXCEPTION* + + + CONDITION* + + + condition_number + + + condition_information_item + + , + + + + + +
             ::= ( 'EXCEPTION*' | 'CONDITION*' ) condition_number condition_information_item ( ',' condition_information_item )*
    +
    + referenced by: + + SQL_diagnostics_information + + condition_information_item: + + + + + + + + simple_target_specification + + = + + + condition_information_item_name + + + + + + + referenced by: + + condition_information + + condition_information_item_name: + + + + + + + + CATALOG_NAME* + + + CLASS_ORIGIN* + + + COLUMN_NAME* + + + CONDITION_NUMBER* + + + CONNECTION_NAME* + + + CONSTRAINT_CATALOG* + + + CONSTRAINT_NAME* + + + CONSTRAINT_SCHEMA* + + + CURSOR_NAME* + + + MESSAGE_LENGTH* + + + MESSAGE_OCTET_LENGTH* + + + MESSAGE_TEXT* + + + PARAMETER_MODE* + + + PARAMETER_NAME* + + + PARAMETER_ORDINAL_POSITION* + + + RETURNED_SQLSTATE* + + + ROUTINE_CATALOG* + + + ROUTINE_NAME* + + + ROUTINE_SCHEMA* + + + SCHEMA_NAME* + + + SERVER_NAME* + + + SPECIFIC_NAME* + + + SUBCLASS_ORIGIN* + + + TABLE_NAME* + + + TRIGGER_CATALOG* + + + TRIGGER_NAME* + + + TRIGGER_SCHEMA* + + + + + +
             ::= 'CATALOG_NAME*'
    +
               | 'CLASS_ORIGIN*'
    +
               | 'COLUMN_NAME*'
    +
               | 'CONDITION_NUMBER*'
    +
               | 'CONNECTION_NAME*'
    +
               | 'CONSTRAINT_CATALOG*'
    +
               | 'CONSTRAINT_NAME*'
    +
               | 'CONSTRAINT_SCHEMA*'
    +
               | 'CURSOR_NAME*'
    +
               | 'MESSAGE_LENGTH*'
    +
               | 'MESSAGE_OCTET_LENGTH*'
    +
               | 'MESSAGE_TEXT*'
    +
               | 'PARAMETER_MODE*'
    +
               | 'PARAMETER_NAME*'
    +
               | 'PARAMETER_ORDINAL_POSITION*'
    +
               | 'RETURNED_SQLSTATE*'
    +
               | 'ROUTINE_CATALOG*'
    +
               | 'ROUTINE_NAME*'
    +
               | 'ROUTINE_SCHEMA*'
    +
               | 'SCHEMA_NAME*'
    +
               | 'SERVER_NAME*'
    +
               | 'SPECIFIC_NAME*'
    +
               | 'SUBCLASS_ORIGIN*'
    +
               | 'TABLE_NAME*'
    +
               | 'TRIGGER_CATALOG*'
    +
               | 'TRIGGER_NAME*'
    +
               | 'TRIGGER_SCHEMA*'
    +
    + referenced by: + + condition_information_item + + condition_number: + + + + + + + + simple_value_specification + + + + +
             ::= simple_value_specification
    +
    + referenced by: + + condition_information + + ISOLATION: + + + + + + + + ISOLATION + + + ISOLATION* + + + + + +
             ::= 'ISOLATION'
    +
               | 'ISOLATION*'
    +
    + referenced by: + + isolation_level + non_reserved_word + reserved_word + + + + + +   + + ... generated by RR - Railroad Diagram Generator + + + + + + + + R + R + + + + + + \ No newline at end of file diff --git a/sql-2016-railway-diagrams.xhtml b/sql-2016-railway-diagrams.xhtml new file mode 100644 index 0000000..77d0689 --- /dev/null +++ b/sql-2016-railway-diagrams.xhtml @@ -0,0 +1,91823 @@ + + + + + + + + + + + direct_SQL_statement: + + + + + + + + directly_executable_statement + + ; + + + + + +
             ::= directly_executable_statement ';'
    +
    + no referencesdirectly_executable_statement: + + + + + + + + direct_SQL_data_statement + + + SQL_schema_statement + + + SQL_transaction_statement + + + SQL_connection_statement + + + SQL_session_statement + + !! See the Syntax Rules. + + + + + +
             ::= direct_SQL_data_statement
    +
               | SQL_schema_statement
    +
               | SQL_transaction_statement
    +
               | SQL_connection_statement
    +
               | SQL_session_statement
    +
               | '!! See the Syntax Rules.'
    +
    + referenced by: + + direct_SQL_statement + + direct_SQL_data_statement: + + + + + + + + delete_statement__searched + + + direct_select_statement__multiple_rows + + + insert_statement + + + update_statement__searched + + + truncate_table_statement + + + merge_statement + + + temporary_table_declaration + + + + +
             ::= delete_statement__searched
    + +
               | insert_statement
    +
               | update_statement__searched
    +
               | truncate_table_statement
    +
               | merge_statement
    +
               | temporary_table_declaration
    +
    + referenced by: + + directly_executable_statement + + SQL_terminal_character: + + + + + + + + SQL_language_character + + + + +
             ::= SQL_language_character
    +
    + no referencesSQL_language_character: + + + + + + + + simple_Latin_letter + + + digit + + + SQL_special_character + + + + +
             ::= simple_Latin_letter
    +
               | digit
    +
               | SQL_special_character
    +
    + referenced by: + + SQL_terminal_character + + simple_Latin_letter: + + + + + + + + simple_Latin_upper_case_letter + + + simple_Latin_lower_case_letter + + + + +
             ::= simple_Latin_upper_case_letter
    +
               | simple_Latin_lower_case_letter
    +
    + referenced by: + + SQL_language_character + SQL_language_identifier_part + SQL_language_identifier_start + + simple_Latin_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 + + + W + + + X + + + Y + + + Z + + + + + +
             ::= 'A'
    +
               | 'B'
    +
               | 'C'
    +
               | 'D'
    +
               | 'E'
    +
               | 'F'
    +
               | 'G'
    +
               | 'H'
    +
               | 'I'
    +
               | 'J'
    +
               | 'K'
    +
               | 'L'
    +
               | 'M'
    +
               | 'N'
    +
               | 'O'
    +
               | 'P'
    +
               | 'Q'
    +
               | 'R'
    +
               | 'S'
    +
               | 'T'
    +
               | 'U'
    +
               | 'V'
    +
               | 'W'
    +
               | 'X'
    +
               | 'Y'
    +
               | 'Z'
    +
    + referenced by: + + SQLSTATE_char + simple_Latin_letter + + simple_Latin_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 + + + y + + + z + + + + + +
             ::= 'a'
    +
               | 'b'
    +
               | 'c'
    +
               | 'd'
    +
               | 'e'
    +
               | 'f'
    +
               | 'g'
    +
               | 'h'
    +
               | 'i'
    +
               | 'j'
    +
               | 'k'
    +
               | 'l'
    +
               | 'm'
    +
               | 'n'
    +
               | 'o'
    +
               | 'p'
    +
               | 'q'
    +
               | 'r'
    +
               | 's'
    +
               | 't'
    +
               | 'u'
    +
               | 'v'
    +
               | 'w'
    +
               | 'x'
    +
               | 'y'
    +
               | 'z'
    +
    + referenced by: + + simple_Latin_letter + + digit: + + + + + + + + 0 + + + 1 + + + 2 + + + 3 + + + 4 + + + 5 + + + 6 + + + 7 + + + 8 + + + 9 + + + + +
    digit    ::= '0'
    +
               | '1'
    +
               | '2'
    +
               | '3'
    +
               | '4'
    +
               | '5'
    +
               | '6'
    +
               | '7'
    +
               | '8'
    +
               | '9'
    +
    + referenced by: + + SQLSTATE_char + SQL_language_character + SQL_language_identifier_part + hexit + large_object_length_token + unsigned_integer + + SQL_special_character: + + + + + + + + !! See the Syntax Rules. + + + " + + + % + + + & + + + ' + + + ( + + + ) + + + * + + + + + + + , + + + - + + + . + + + / + + + : + + + ; + + + < + + + = + + + > + + + ? + + + [ + + + ] + + + ^ + + + _ + + + | + + + { + + + } + + + $ + + + + + +
             ::= '!! See the Syntax Rules.'
    +
               | '"'
    +
               | '%'
    +
               | '&'
    +
               | "'"
    +
               | '('
    +
               | ')'
    +
               | '*'
    +
               | '+'
    +
               | ','
    +
               | '-'
    +
               | '.'
    +
               | '/'
    +
               | ':'
    +
               | ';'
    +
               | '<'
    +
               | '='
    +
               | '>'
    +
               | '?'
    +
               | '['
    +
               | ']'
    +
               | '^'
    +
               | '_'
    +
               | '|'
    +
               | '{'
    +
               | '}'
    +
               | '$'
    +
    + referenced by: + + SQL_language_character + delimiter_token + + left_bracket_or_trigraph: + + + + + + + + [ + + + ??( + + + + + +
             ::= '['
    +
               | '??('
    +
    + referenced by: + + array_element_reference + array_type + array_value_constructor_by_enumeration + empty_specification + multiset_value_constructor_by_enumeration + target_array_element_specification + update_target + + right_bracket_or_trigraph: + + + + + + + + ] + + + ??) + + + + + +
             ::= ']'
    +
               | '??)'
    +
    + referenced by: + + array_element_reference + array_type + array_value_constructor_by_enumeration + empty_specification + multiset_value_constructor_by_enumeration + target_array_element_specification + update_target + + token: + + + + + + + + nondelimiter_token + + + delimiter_token + + + + +
               | delimiter_token
    +
    + no referencesnondelimiter_token: + + + + + + + + regular_identifier + + + key_word + + + unsigned_numeric_literal + + + national_character_string_literal + + + binary_string_literal + + + large_object_length_token + + + Unicode_delimited_identifier + + + Unicode_character_string_literal + + + SQL_language_identifier + + + + +
             ::= regular_identifier
    +
               | key_word
    +
               | unsigned_numeric_literal
    +
               | national_character_string_literal
    +
               | binary_string_literal
    +
               | large_object_length_token
    +
               | Unicode_delimited_identifier
    +
               | Unicode_character_string_literal
    +
               | SQL_language_identifier
    +
    + referenced by: + + token + + regular_identifier: + + + + + + + + identifier_body + + + + +
             ::= identifier_body
    +
    + referenced by: + + actual_identifier + nondelimiter_token + + identifier_body: + + + + + + + + identifier_start + + + identifier_part + + + + +
             ::= identifier_start identifier_part*
    +
    + referenced by: + + regular_identifier + + identifier_part: + + + + + + + + identifier_start + + + identifier_extend + + + + +
             ::= identifier_start
    +
               | identifier_extend
    +
    + referenced by: + + identifier_body + + large_object_length_token: + + + + + + + + digit + + + multiplier + + + + +
             ::= digit+ multiplier
    +
    + referenced by: + + large_object_length + nondelimiter_token + + multiplier: + + + + + + + + K + + + M + + + G + + + T + + + P + + + + + +
             ::= 'K'
    +
               | 'M'
    +
               | 'G'
    +
               | 'T'
    +
               | 'P'
    +
    + referenced by: + + large_object_length + large_object_length_token + + delimited_identifier: + + + + + + + + " + + + delimited_identifier_body + + " + + + + + +
             ::= '"' delimited_identifier_body '"'
    +
    + referenced by: + + actual_identifier + delimiter_token + + delimited_identifier_body: + + + + + + + + delimited_identifier_part + + + + +
             ::= delimited_identifier_part+
    +
    + referenced by: + + delimited_identifier + + delimited_identifier_part: + + + + + + + + !! See the Syntax Rules. + + + "" + + + + + +
             ::= '!! See the Syntax Rules.'
    +
               | '""'
    +
    + referenced by: + + Unicode_identifier_part + delimited_identifier_body + + Unicode_delimited_identifier: + + + + + + + + U + + & + + + " + + + Unicode_delimiter_body + + " + + + Unicode_escape_specifier + + + + +
             ::= U '&' '"' Unicode_delimiter_body '"' Unicode_escape_specifier
    +
    + referenced by: + + actual_identifier + nondelimiter_token + + Unicode_escape_specifier: + + + + + + + + UESCAPE + + + ' + + + !! See the Syntax Rules. + + + ' + + + + + +
             ::= ( 'UESCAPE' "'" '!! See the Syntax Rules.' "'" )?
    +
    + referenced by: + + Unicode_character_string_literal + Unicode_delimited_identifier + + Unicode_delimiter_body: + + + + + + + + Unicode_identifier_part + + + + +
             ::= Unicode_identifier_part+
    +
    + referenced by: + + Unicode_delimited_identifier + + Unicode_identifier_part: + + + + + + + + delimited_identifier_part + + + Unicode_escape_value + + + + +
             ::= delimited_identifier_part
    +
               | Unicode_escape_value
    +
    + referenced by: + + Unicode_delimiter_body + + Unicode_escape_value: + + + + + + + + Unicode_4_digit_escape_value + + + Unicode_6_digit_escape_value + + + Unicode_character_escape_value + + + + +
             ::= Unicode_4_digit_escape_value
    +
               | Unicode_6_digit_escape_value
    +
               | Unicode_character_escape_value
    +
    + referenced by: + + Unicode_identifier_part + Unicode_representation + + Unicode_4_digit_escape_value: + + + + + + + + !! See the Syntax Rules. + + + hexit + + + hexit + + + hexit + + + hexit + + + + +
             ::= '!! See the Syntax Rules.' hexit hexit hexit hexit
    +
    + referenced by: + + Unicode_escape_value + + Unicode_6_digit_escape_value: + + + + + + + + !! See the Syntax Rules. + + + + + + + hexit + + + hexit + + + hexit + + + hexit + + + hexit + + + hexit + + + + +
             ::= '!! See the Syntax Rules.' '+' hexit hexit hexit hexit hexit hexit
    +
    + referenced by: + + Unicode_escape_value + + Unicode_character_escape_value: + + + + + + + + !! See the Syntax Rules. + + + !! See the Syntax Rules. + + + + + +
             ::= '!! See the Syntax Rules.' '!! See the Syntax Rules.'
    +
    + referenced by: + + Unicode_escape_value + + delimiter_token: + + + + + + + + character_string_literal + + + date_string + + + time_string + + + timestamp_string + + + interval_string + + + delimited_identifier + + + SQL_special_character + + <> + + + >= + + + <= + + + || + + + -> + + + ??( + + + ??) + + + :: + + + .. + + + => + + + {- + + + -} + + + + + +
             ::= character_string_literal
    +
               | date_string
    +
               | time_string
    +
               | timestamp_string
    +
               | interval_string
    +
               | delimited_identifier
    +
               | SQL_special_character
    +
               | '<>'
    +
               | '>='
    +
               | '<='
    +
               | '||'
    +
               | '->'
    +
               | '??('
    +
               | '??)'
    +
               | '::'
    +
               | '..'
    +
               | '=>'
    +
               | '{-'
    +
               | '-}'
    +
    + referenced by: + + token + + separator: + + + + + + + + comment + + + white_space + + + + +
             ::= ( comment | white_space )+
    +
    + referenced by: + + Unicode_character_string_literal + binary_string_literal + bracketed_comment_contents + character_string_literal + national_character_string_literal + + comment: + + + + + + + + simple_comment + + + bracketed_comment + + + + +
               | bracketed_comment
    +
    + referenced by: + + separator + + simple_comment: + + + + + + + + simple_comment_introducer + + + comment_character + + + newline + + + + + + + referenced by: + + comment + + simple_comment_introducer: + + + + + + + + - + + + - + + + + + +
             ::= '-' '-'
    +
    + referenced by: + + simple_comment + + bracketed_comment: + + + + + + + + bracketed_comment_introducer + + + bracketed_comment_contents + + + bracketed_comment_terminator + + + + + + + referenced by: + + comment + + bracketed_comment_introducer: + + + + + + + + + + +
             ::=
    +
    + referenced by: + + bracketed_comment + + bracketed_comment_contents: + + + + + + + + comment_character + + + separator + + !! See the Syntax Rules. + + + + + +
             ::= ( comment_character | separator )+ '!! See the Syntax Rules.'
    +
    + referenced by: + + bracketed_comment + + comment_character: + + + + + + + + nonquote_character + + ' + + + + + +
             ::= nonquote_character
    +
               | "'"
    +
    + referenced by: + + bracketed_comment_contents + simple_comment + + key_word: + + + + + + + + reserved_word + + + non_reserved_word + + + + +
               | non_reserved_word
    +
    + referenced by: + + nondelimiter_token + + non_reserved_word: + + + + + + + + A* + + + ABSOLUTE* + + + ACTION* + + + ADA* + + + ADD* + + + ADMIN* + + + AFTER* + + + ALWAYS* + + + ASC* + + + ASSERTION* + + + ASSIGNMENT* + + + ATTRIBUTE* + + + ATTRIBUTES* + + + BEFORE* + + + BERNOULLI* + + + BREADTH* + + + C* + + + CASCADE* + + + CATALOG* + + + CATALOG_NAME* + + + CHAIN* + + + CHAINING* + + + CHARACTER_SET_CATALOG* + + + CHARACTER_SET_NAME* + + + CHARACTER_SET_SCHEMA* + + + CHARACTERISTICS* + + + CHARACTERS* + + + CLASS_ORIGIN* + + + COBOL* + + + COLLATION* + + + COLLATION_CATALOG* + + + COLLATION_NAME* + + + COLLATION_SCHEMA* + + + COLUMNS* + + + COLUMN_NAME* + + + COMMAND_FUNCTION* + + + COMMAND_FUNCTION_CODE* + + + COMMITTED* + + + CONDITIONAL* + + + CONDITION_NUMBER* + + + CONNECTION* + + + CONNECTION_NAME* + + + CONSTRAINT_CATALOG* + + + CONSTRAINT_NAME* + + + CONSTRAINT_SCHEMA* + + + CONSTRAINTS* + + + CONSTRUCTOR* + + + CONTINUE* + + + CURSOR_NAME* + + + DATA* + + + DATETIME_INTERVAL_CODE* + + + DATETIME_INTERVAL_PRECISION* + + + DEFAULTS* + + + DEFERRABLE* + + + DEFERRED* + + + DEFINED* + + + DEFINER* + + + DEGREE* + + + DEPTH* + + + DERIVED* + + + DESC* + + + DESCRIBE_CATALOG* + + + DESCRIBE_NAME* + + + DESCRIBE_PROCEDURE_SPECIFIC_CATALOG* + + + DESCRIBE_PROCEDURE_SPECIFIC_NAME* + + + DESCRIBE_PROCEDURE_SPECIFIC_SCHEMA* + + + DESCRIBE_SCHEMA* + + + DESCRIPTOR* + + + DIAGNOSTICS* + + + DISPATCH* + + + DOMAIN* + + + DYNAMIC_FUNCTION* + + + DYNAMIC_FUNCTION_CODE* + + + ENCODING* + + + ENFORCED* + + + ERROR* + + + EXCLUDE* + + + EXCLUDING* + + + EXPRESSION* + + + FINAL* + + + FINISH* + + + FINISH_CATALOG* + + + FINISH_NAME* + + + FINISH_PROCEDURE_SPECIFIC_CATALOG* + + + FINISH_PROCEDURE_SPECIFIC_NAME* + + + FINISH_PROCEDURE_SPECIFIC_SCHEMA* + + + FINISH_SCHEMA* + + + FIRST* + + + FLAG* + + + FOLLOWING* + + + FORMAT* + + + FORTRAN* + + + FOUND* + + + FULFILL* + + + FULFILL_CATALOG* + + + FULFILL_NAME* + + + FULFILL_PROCEDURE_SPECIFIC_CATALOG* + + + FULFILL_PROCEDURE_SPECIFIC_NAME* + + + FULFILL_PROCEDURE_SPECIFIC_SCHEMA* + + + FULFILL_SCHEMA* + + + G* + + + GENERAL* + + + GENERATED* + + + GO* + + + GOTO* + + + GRANTED* + + + HAS_PASS_THROUGH_COLUMNS* + + + HAS_PASS_THRU_COLS* + + + HIERARCHY* + + + IGNORE* + + + IMMEDIATE* + + + IMMEDIATELY* + + + IMPLEMENTATION* + + + INCLUDING* + + + INCREMENT* + + + INITIALLY* + + + INPUT* + + + INSTANCE* + + + INSTANTIABLE* + + + INSTEAD* + + + INVOKER* + + + ISOLATION* + + + IS_PRUNABLE* + + + JSON* + + + K* + + + KEEP* + + + KEY* + + + KEYS* + + + KEY_MEMBER* + + + KEY_TYPE* + + + LAST* + + + LENGTH* + + + LEVEL* + + + LOCATOR* + + + M* + + + MAP* + + + MATCHED* + + + MAXVALUE* + + + MESSAGE_LENGTH* + + + MESSAGE_OCTET_LENGTH* + + + MESSAGE_TEXT* + + + MINVALUE* + + + MORE* + + + MUMPS* + + + NAME* + + + NAMES* + + + NESTED* + + + NESTING* + + + NEXT* + + + NFC* + + + NFD* + + + NFKC* + + + NFKD* + + + NORMALIZED* + + + NULLABLE* + + + NULLS* + + + NUMBER* + + + OBJECT* + + + OCTETS* + + + OPTION* + + + OPTIONS* + + + ORDERING* + + + ORDINALITY* + + + OTHERS* + + + OUTPUT* + + + OVERFLOW* + + + OVERRIDING* + + + P* + + + PAD* + + + PARAMETER_MODE* + + + PARAMETER_NAME* + + + PARAMETER_ORDINAL_POSITION* + + + PARAMETER_SPECIFIC_CATALOG* + + + PARAMETER_SPECIFIC_NAME* + + + PARAMETER_SPECIFIC_SCHEMA* + + + PARTIAL* + + + PASCAL* + + + PASS* + + + PASSING* + + + PAST* + + + PATH* + + + PLACING* + + + PLAN* + + + PLI* + + + PRECEDING* + + + PRESERVE* + + + PRIOR* + + + PRIVATE* + + + PRIVATE_PARAMETERS* + + + PRIVATE_PARAMS_S* + + + PRIVILEGES* + + + PRUNE* + + + PUBLIC* + + + QUOTES* + + + READ* + + + RELATIVE* + + + REPEATABLE* + + + RESPECT* + + + RESTART* + + + RESTRICT* + + + RETURNED_CARDINALITY* + + + RETURNED_LENGTH* + + + RETURNED_OCTET_LENGTH* + + + RETURNED_SQLSTATE* + + + RETURNING* + + + RETURNS_ONLY_PASS_THROUGH* + + + RET_ONLY_PASS_THRU* + + + ROLE* + + + ROUTINE* + + + ROUTINE_CATALOG* + + + ROUTINE_NAME* + + + ROUTINE_SCHEMA* + + + ROW_COUNT* + + + SCALAR* + + + SCALE* + + + SCHEMA* + + + SCHEMA_NAME* + + + SCOPE_CATALOG* + + + SCOPE_NAME* + + + SCOPE_SCHEMA* + + + SECTION* + + + SECURITY* + + + SELF* + + + SEQUENCE* + + + SERIALIZABLE* + + + SERVER_NAME* + + + SESSION* + + + SETS* + + + SIMPLE* + + + SIZE* + + + SOURCE* + + + SPACE* + + + SPECIFIC_NAME* + + + START_CATALOG* + + + START_NAME* + + + START_PROCEDURE_SPECIFIC_CATALOG* + + + START_PROCEDURE_SPECIFIC_NAME* + + + START_PROCEDURE_SPECIFIC_SCHEMA* + + + START_SCHEMA* + + + STATE* + + + STATEMENT* + + + STRING* + + + STRUCTURE* + + + STYLE* + + + SUBCLASS_ORIGIN* + + + T* + + + TABLE_NAME* + + + TABLE_SEMANTICS* + + + TEMPORARY* + + + THROUGH* + + + TIES* + + + TOP_LEVEL_COUNT* + + + TRANSACTION* + + + TRANSACTION_ACTIVE* + + + TRANSACTIONS_COMMITTED* + + + TRANSACTIONS_ROLLED_BACK* + + + TRANSFORM* + + + TRANSFORMS* + + + TRIGGER_CATALOG* + + + TRIGGER_NAME* + + + TRIGGER_SCHEMA* + + + TYPE* + + + UNBOUNDED* + + + UNCOMMITTED* + + + UNCONDITIONAL* + + + UNDER* + + + UNNAMED* + + + USAGE* + + + USER_DEFINED_TYPE_CATALOG* + + + USER_DEFINED_TYPE_CODE* + + + USER_DEFINED_TYPE_NAME* + + + USER_DEFINED_TYPE_SCHEMA* + + + UTF16* + + + UTF32* + + + UTF8* + + + VIEW* + + + WORK* + + + WRAPPER* + + + WRITE* + + + ZONE* + + + + + +
             ::= 'A*'
    +
               | 'ABSOLUTE*'
    +
               | 'ACTION*'
    +
               | 'ADA*'
    +
               | 'ADD*'
    +
               | 'ADMIN*'
    +
               | 'AFTER*'
    +
               | 'ALWAYS*'
    +
               | 'ASC*'
    +
               | 'ASSERTION*'
    +
               | 'ASSIGNMENT*'
    +
               | 'ATTRIBUTE*'
    +
               | 'ATTRIBUTES*'
    +
               | 'BEFORE*'
    +
               | 'BERNOULLI*'
    +
               | 'BREADTH*'
    +
               | 'C*'
    +
               | 'CASCADE*'
    +
               | 'CATALOG*'
    +
               | 'CATALOG_NAME*'
    +
               | 'CHAIN*'
    +
               | 'CHAINING*'
    +
               | 'CHARACTER_SET_CATALOG*'
    +
               | 'CHARACTER_SET_NAME*'
    +
               | 'CHARACTER_SET_SCHEMA*'
    +
               | 'CHARACTERISTICS*'
    +
               | 'CHARACTERS*'
    +
               | 'CLASS_ORIGIN*'
    +
               | 'COBOL*'
    +
               | 'COLLATION*'
    +
               | 'COLLATION_CATALOG*'
    +
               | 'COLLATION_NAME*'
    +
               | 'COLLATION_SCHEMA*'
    +
               | 'COLUMNS*'
    +
               | 'COLUMN_NAME*'
    +
               | 'COMMAND_FUNCTION*'
    +
               | 'COMMAND_FUNCTION_CODE*'
    +
               | 'COMMITTED*'
    +
               | 'CONDITIONAL*'
    +
               | 'CONDITION_NUMBER*'
    +
               | 'CONNECTION*'
    +
               | 'CONNECTION_NAME*'
    +
               | 'CONSTRAINT_CATALOG*'
    +
               | 'CONSTRAINT_NAME*'
    +
               | 'CONSTRAINT_SCHEMA*'
    +
               | 'CONSTRAINTS*'
    +
               | 'CONSTRUCTOR*'
    +
               | 'CONTINUE*'
    +
               | 'CURSOR_NAME*'
    +
               | 'DATA*'
    +
               | 'DATETIME_INTERVAL_CODE*'
    +
               | 'DATETIME_INTERVAL_PRECISION*'
    +
               | 'DEFAULTS*'
    +
               | 'DEFERRABLE*'
    +
               | 'DEFERRED*'
    +
               | 'DEFINED*'
    +
               | 'DEFINER*'
    +
               | 'DEGREE*'
    +
               | 'DEPTH*'
    +
               | 'DERIVED*'
    +
               | 'DESC*'
    +
               | 'DESCRIBE_CATALOG*'
    +
               | 'DESCRIBE_NAME*'
    +
               | 'DESCRIBE_PROCEDURE_SPECIFIC_CATALOG*'
    +
               | 'DESCRIBE_PROCEDURE_SPECIFIC_NAME*'
    +
               | 'DESCRIBE_PROCEDURE_SPECIFIC_SCHEMA*'
    +
               | 'DESCRIBE_SCHEMA*'
    +
               | 'DESCRIPTOR*'
    +
               | 'DIAGNOSTICS*'
    +
               | 'DISPATCH*'
    +
               | 'DOMAIN*'
    +
               | 'DYNAMIC_FUNCTION*'
    +
               | 'DYNAMIC_FUNCTION_CODE*'
    +
               | 'ENCODING*'
    +
               | 'ENFORCED*'
    +
               | 'ERROR*'
    +
               | 'EXCLUDE*'
    +
               | 'EXCLUDING*'
    +
               | 'EXPRESSION*'
    +
               | 'FINAL*'
    +
               | 'FINISH*'
    +
               | 'FINISH_CATALOG*'
    +
               | 'FINISH_NAME*'
    +
               | 'FINISH_PROCEDURE_SPECIFIC_CATALOG*'
    +
               | 'FINISH_PROCEDURE_SPECIFIC_NAME*'
    +
               | 'FINISH_PROCEDURE_SPECIFIC_SCHEMA*'
    +
               | 'FINISH_SCHEMA*'
    +
               | 'FIRST*'
    +
               | 'FLAG*'
    +
               | 'FOLLOWING*'
    +
               | 'FORMAT*'
    +
               | 'FORTRAN*'
    +
               | 'FOUND*'
    +
               | 'FULFILL*'
    +
               | 'FULFILL_CATALOG*'
    +
               | 'FULFILL_NAME*'
    +
               | 'FULFILL_PROCEDURE_SPECIFIC_CATALOG*'
    +
               | 'FULFILL_PROCEDURE_SPECIFIC_NAME*'
    +
               | 'FULFILL_PROCEDURE_SPECIFIC_SCHEMA*'
    +
               | 'FULFILL_SCHEMA*'
    +
               | 'G*'
    +
               | 'GENERAL*'
    +
               | 'GENERATED*'
    +
               | 'GO*'
    +
               | 'GOTO*'
    +
               | 'GRANTED*'
    +
               | 'HAS_PASS_THROUGH_COLUMNS*'
    +
               | 'HAS_PASS_THRU_COLS*'
    +
               | 'HIERARCHY*'
    +
               | 'IGNORE*'
    +
               | 'IMMEDIATE*'
    +
               | 'IMMEDIATELY*'
    +
               | 'IMPLEMENTATION*'
    +
               | 'INCLUDING*'
    +
               | 'INCREMENT*'
    +
               | 'INITIALLY*'
    +
               | 'INPUT*'
    +
               | 'INSTANCE*'
    +
               | 'INSTANTIABLE*'
    +
               | 'INSTEAD*'
    +
               | 'INVOKER*'
    +
               | 'ISOLATION*'
    +
               | 'IS_PRUNABLE*'
    +
               | 'JSON*'
    +
               | 'K*'
    +
               | 'KEEP*'
    +
               | 'KEY*'
    +
               | 'KEYS*'
    +
               | 'KEY_MEMBER*'
    +
               | 'KEY_TYPE*'
    +
               | 'LAST*'
    +
               | 'LENGTH*'
    +
               | 'LEVEL*'
    +
               | 'LOCATOR*'
    +
               | 'M*'
    +
               | 'MAP*'
    +
               | 'MATCHED*'
    +
               | 'MAXVALUE*'
    +
               | 'MESSAGE_LENGTH*'
    +
               | 'MESSAGE_OCTET_LENGTH*'
    +
               | 'MESSAGE_TEXT*'
    +
               | 'MINVALUE*'
    +
               | 'MORE*'
    +
               | 'MUMPS*'
    +
               | 'NAME*'
    +
               | 'NAMES*'
    +
               | 'NESTED*'
    +
               | 'NESTING*'
    +
               | 'NEXT*'
    +
               | 'NFC*'
    +
               | 'NFD*'
    +
               | 'NFKC*'
    +
               | 'NFKD*'
    +
               | 'NORMALIZED*'
    +
               | 'NULLABLE*'
    +
               | 'NULLS*'
    +
               | 'NUMBER*'
    +
               | 'OBJECT*'
    +
               | 'OCTETS*'
    +
               | 'OPTION*'
    +
               | 'OPTIONS*'
    +
               | 'ORDERING*'
    +
               | 'ORDINALITY*'
    +
               | 'OTHERS*'
    +
               | 'OUTPUT*'
    +
               | 'OVERFLOW*'
    +
               | 'OVERRIDING*'
    +
               | 'P*'
    +
               | 'PAD*'
    +
               | 'PARAMETER_MODE*'
    +
               | 'PARAMETER_NAME*'
    +
               | 'PARAMETER_ORDINAL_POSITION*'
    +
               | 'PARAMETER_SPECIFIC_CATALOG*'
    +
               | 'PARAMETER_SPECIFIC_NAME*'
    +
               | 'PARAMETER_SPECIFIC_SCHEMA*'
    +
               | 'PARTIAL*'
    +
               | 'PASCAL*'
    +
               | 'PASS*'
    +
               | 'PASSING*'
    +
               | 'PAST*'
    +
               | 'PATH*'
    +
               | 'PLACING*'
    +
               | 'PLAN*'
    +
               | 'PLI*'
    +
               | 'PRECEDING*'
    +
               | 'PRESERVE*'
    +
               | 'PRIOR*'
    +
               | 'PRIVATE*'
    +
               | 'PRIVATE_PARAMETERS*'
    +
               | 'PRIVATE_PARAMS_S*'
    +
               | 'PRIVILEGES*'
    +
               | 'PRUNE*'
    +
               | 'PUBLIC*'
    +
               | 'QUOTES*'
    +
               | 'READ*'
    +
               | 'RELATIVE*'
    +
               | 'REPEATABLE*'
    +
               | 'RESPECT*'
    +
               | 'RESTART*'
    +
               | 'RESTRICT*'
    +
               | 'RETURNED_CARDINALITY*'
    +
               | 'RETURNED_LENGTH*'
    +
               | 'RETURNED_OCTET_LENGTH*'
    +
               | 'RETURNED_SQLSTATE*'
    +
               | 'RETURNING*'
    +
               | 'RETURNS_ONLY_PASS_THROUGH*'
    +
               | 'RET_ONLY_PASS_THRU*'
    +
               | 'ROLE*'
    +
               | 'ROUTINE*'
    +
               | 'ROUTINE_CATALOG*'
    +
               | 'ROUTINE_NAME*'
    +
               | 'ROUTINE_SCHEMA*'
    +
               | 'ROW_COUNT*'
    +
               | 'SCALAR*'
    +
               | 'SCALE*'
    +
               | 'SCHEMA*'
    +
               | 'SCHEMA_NAME*'
    +
               | 'SCOPE_CATALOG*'
    +
               | 'SCOPE_NAME*'
    +
               | 'SCOPE_SCHEMA*'
    +
               | 'SECTION*'
    +
               | 'SECURITY*'
    +
               | 'SELF*'
    +
               | 'SEQUENCE*'
    +
               | 'SERIALIZABLE*'
    +
               | 'SERVER_NAME*'
    +
               | 'SESSION*'
    +
               | 'SETS*'
    +
               | 'SIMPLE*'
    +
               | 'SIZE*'
    +
               | 'SOURCE*'
    +
               | 'SPACE*'
    +
               | 'SPECIFIC_NAME*'
    +
               | 'START_CATALOG*'
    +
               | 'START_NAME*'
    +
               | 'START_PROCEDURE_SPECIFIC_CATALOG*'
    +
               | 'START_PROCEDURE_SPECIFIC_NAME*'
    +
               | 'START_PROCEDURE_SPECIFIC_SCHEMA*'
    +
               | 'START_SCHEMA*'
    +
               | 'STATE*'
    +
               | 'STATEMENT*'
    +
               | 'STRING*'
    +
               | 'STRUCTURE*'
    +
               | 'STYLE*'
    +
               | 'SUBCLASS_ORIGIN*'
    +
               | 'T*'
    +
               | 'TABLE_NAME*'
    +
               | 'TABLE_SEMANTICS*'
    +
               | 'TEMPORARY*'
    +
               | 'THROUGH*'
    +
               | 'TIES*'
    +
               | 'TOP_LEVEL_COUNT*'
    +
               | 'TRANSACTION*'
    +
               | 'TRANSACTION_ACTIVE*'
    +
               | 'TRANSACTIONS_COMMITTED*'
    +
               | 'TRANSACTIONS_ROLLED_BACK*'
    +
               | 'TRANSFORM*'
    +
               | 'TRANSFORMS*'
    +
               | 'TRIGGER_CATALOG*'
    +
               | 'TRIGGER_NAME*'
    +
               | 'TRIGGER_SCHEMA*'
    +
               | 'TYPE*'
    +
               | 'UNBOUNDED*'
    +
               | 'UNCOMMITTED*'
    +
               | 'UNCONDITIONAL*'
    +
               | 'UNDER*'
    +
               | 'UNNAMED*'
    +
               | 'USAGE*'
    +
               | 'USER_DEFINED_TYPE_CATALOG*'
    +
               | 'USER_DEFINED_TYPE_CODE*'
    +
               | 'USER_DEFINED_TYPE_NAME*'
    +
               | 'USER_DEFINED_TYPE_SCHEMA*'
    +
               | 'UTF16*'
    +
               | 'UTF32*'
    +
               | 'UTF8*'
    +
               | 'VIEW*'
    +
               | 'WORK*'
    +
               | 'WRAPPER*'
    +
               | 'WRITE*'
    +
               | 'ZONE*'
    +
    + referenced by: + + key_word + + reserved_word: + + + + + + + + ABS + + + ACOS + + + ALL + + + ALLOCATE + + + ALTER + + + AND + + + ANY + + + ARE + + + ARRAY + + + ARRAY_AGG + + + ARRAY_MAX_CARDINALITY + + + AS + + + ASENSITIVE + + + ASIN + + + ASYMMETRIC + + + AT + + + ATAN + + + ATOMIC + + + AUTHORIZATION + + + AVG + + + BEGIN + + + BEGIN_FRAME + + + BEGIN_PARTITION + + + BETWEEN + + + BIGINT + + + BINARY + + + BLOB + + + BOOLEAN + + + BOTH + + + BY + + + CALL + + + CALLED + + + CARDINALITY + + + CASCADED + + + CASE + + + CAST + + + CEIL + + + CEILING + + + CHAR + + + CHAR_LENGTH + + + CHARACTER + + + CHARACTER_LENGTH + + + CHECK + + + CLASSIFIER + + + CLOB + + + CLOSE + + + COALESCE + + + COLLATE + + + COLLECT + + + COLUMN + + + COMMIT + + + CONDITION + + + CONNECT + + + CONSTRAINT + + + CONTAINS + + + CONVERT + + + COPY + + + CORR + + + CORRESPONDING + + + COS + + + COSH + + + COUNT + + + COVAR_POP + + + COVAR_SAMP + + + CREATE + + + CROSS + + + CUBE + + + CUME_DIST + + + CURRENT + + + CURRENT_CATALOG + + + CURRENT_DATE + + + CURRENT_DEFAULT_TRANSFORM_GROUP + + + CURRENT_PATH + + + CURRENT_ROLE + + CURRENT_ROW + + + CURRENT_SCHEMA + + + CURRENT_TIME + + + CURRENT_TIMESTAMP + + + CURRENT_PATH + + + CURRENT_ROLE + + CURRENT_TRANSFORM_GROUP_FOR_TYPE + + + CURRENT_USER + + + CURSOR + + + CYCLE + + + DATE + + + DAY + + + DEALLOCATE + + + DEC + + + DECIMAL + + + DECFLOAT + + + DECLARE + + + DEFAULT + + + DEFINE + + + DELETE + + + DENSE_RANK + + + DEREF + + + DESCRIBE + + + DETERMINISTIC + + + DISCONNECT + + + DISTINCT + + + DOUBLE + + + DROP + + + DYNAMIC + + + EACH + + + ELEMENT + + + ELSE + + + EMPTY + + + END + + + END_FRAME + + + END_PARTITION + + + END-EXEC + + + EQUALS + + + ESCAPE + + + EVERY + + + EXCEPT + + + EXEC + + + EXECUTE + + + EXISTS + + + EXP + + + EXTERNAL + + + EXTRACT + + + FALSE + + + FETCH + + + FILTER + + + FIRST_VALUE + + + FLOAT + + + FLOOR + + + FOR + + + FOREIGN + + + FRAME_ROW + + + FREE + + + FROM + + + FULL + + + FUNCTION + + + FUSION + + + GET + + + GLOBAL + + + GRANT + + + GROUP + + + GROUPING + + + GROUPS + + + HAVING + + + HOLD + + + HOUR + + + IDENTITY + + + IN + + + INDICATOR + + + INITIAL + + + INNER + + + INOUT + + + INSENSITIVE + + + INSERT + + + INT + + + INTEGER + + + INTERSECT + + + INTERSECTION + + + INTERVAL + + + INTO + + + IS + + + JOIN + + + JSON_ARRAY + + + JSON_ARRAYAGG + + + JSON_EXISTS + + + JSON_OBJECT + + + JSON_OBJECTAGG + + + JSON_QUERY + + + JSON_TABLE + + + JSON_TABLE_PRIMITIVE + + + JSON_VALUE + + + LAG + + + LANGUAGE + + + LARGE + + + LAST_VALUE + + + LATERAL + + + LEAD + + + LEADING + + + LEFT + + + LIKE + + + LIKE_REGEX + + + LISTAGG + + + LN + + + LOCAL + + + LOCALTIME + + + LOCALTIMESTAMP + + + LOG + + + LOG10 + + + LOWER + + + MATCH + + + MATCH_NUMBER + + + MATCH_RECOGNIZE + + + MATCHES + + + MAX + + + MEMBER + + + MERGE + + + METHOD + + + MIN + + + MINUTE + + + MOD + + + MODIFIES + + + MODULE + + + MONTH + + + MULTISET + + + NATIONAL + + + NATURAL + + + NCHAR + + + NCLOB + + + NEW + + + NO + + + NONE + + + NORMALIZE + + + NOT + + + NTH_VALUE + + + NTILE + + + NULL + + + NULLIF + + + NUMERIC + + + OCTET_LENGTH + + + OCCURRENCES_REGEX + + + OF + + + OFFSET + + + OLD + + + OMIT + + + ON + + + ONE + + + ONLY + + + OPEN + + + OR + + + ORDER + + + OUT + + + OUTER + + + OVER + + + OVERLAPS + + + OVERLAY + + + PARAMETER + + + PARTITION + + + PATTERN + + + PER + + + PERCENT + + + PERCENT_RANK + + + PERCENTILE_CONT + + + PERCENTILE_DISC + + + PERIOD + + + PORTION + + + POSITION + + + POSITION_REGEX + + + POWER + + + PRECEDES + + + PRECISION + + + PREPARE + + + PRIMARY + + + PROCEDURE + + + PTF + + + RANGE + + + RANK + + + READS + + + REAL + + + RECURSIVE + + + REF + + + REFERENCES + + + REFERENCING + + + REGR_AVGX + + + REGR_AVGY + + + REGR_COUNT + + + REGR_INTERCEPT + + + REGR_R2 + + + REGR_SLOPE + + + REGR_SXX + + + REGR_SXY + + + REGR_SYY + + + RELEASE + + + RESULT + + + RETURN + + + RETURNS + + + REVOKE + + + RIGHT + + + ROLLBACK + + + ROLLUP + + + ROW + + + ROW_NUMBER + + + ROWS + + + RUNNING + + + SAVEPOINT + + + SCOPE + + + SCROLL + + + SEARCH + + + SECOND + + + SEEK + + + SELECT + + + SENSITIVE + + + SESSION_USER + + + SET + + + SHOW + + + SIMILAR + + + SIN + + + SINH + + + SKIP + + + SMALLINT + + + SOME + + + SPECIFIC + + + SPECIFICTYPE + + + SQL + + + SQLEXCEPTION + + + SQLSTATE + + + SQLWARNING + + + SQRT + + + START + + + STATIC + + + STDDEV_POP + + + STDDEV_SAMP + + + SUBMULTISET + + + SUBSET + + + SUBSTRING + + + SUBSTRING_REGEX + + + SUCCEEDS + + + SUM + + + SYMMETRIC + + + SYSTEM + + + SYSTEM_TIME + + + SYSTEM_USER + + + TABLE + + + TABLESAMPLE + + + TAN + + + TANH + + + THEN + + + TIME + + + TIMESTAMP + + + TIMEZONE_HOUR + + + TIMEZONE_MINUTE + + + TO + + + TRAILING + + + TRANSLATE + + + TRANSLATE_REGEX + + + TRANSLATION + + + TREAT + + + TRIGGER + + + TRIM + + + TRIM_ARRAY + + + TRUE + + + TRUNCATE + + + UESCAPE + + + UNION + + + UNIQUE + + + UNKNOWN + + + UNNEST + + + UPDATE + + + UPPER + + + USER + + + USING + + + VALUE + + + VALUES + + + VALUE_OF + + + VAR_POP + + + VAR_SAMP + + + VARBINARY + + + VARCHAR + + + VARYING + + + VERSIONING + + + WHEN + + + WHENEVER + + + WHERE + + + WIDTH_BUCKET + + + WINDOW + + + WITH + + + WITHIN + + + WITHOUT + + + YEAR + + + + + +
             ::= 'ABS'
    +
               | 'ACOS'
    +
               | 'ALL'
    +
               | 'ALLOCATE'
    +
               | 'ALTER'
    +
               | 'AND'
    +
               | 'ANY'
    +
               | 'ARE'
    +
               | 'ARRAY'
    +
               | 'ARRAY_AGG'
    +
               | 'ARRAY_MAX_CARDINALITY'
    +
               | 'AS'
    +
               | 'ASENSITIVE'
    +
               | 'ASIN'
    +
               | 'ASYMMETRIC'
    +
               | 'AT'
    +
               | 'ATAN'
    +
               | 'ATOMIC'
    +
               | 'AUTHORIZATION'
    +
               | 'AVG'
    +
               | 'BEGIN'
    +
               | 'BEGIN_FRAME'
    +
               | 'BEGIN_PARTITION'
    +
               | 'BETWEEN'
    +
               | 'BIGINT'
    +
               | 'BINARY'
    +
               | 'BLOB'
    +
               | 'BOOLEAN'
    +
               | 'BOTH'
    +
               | 'BY'
    +
               | 'CALL'
    +
               | 'CALLED'
    +
               | 'CARDINALITY'
    +
               | 'CASCADED'
    +
               | 'CASE'
    +
               | 'CAST'
    +
               | 'CEIL'
    +
               | 'CEILING'
    +
               | 'CHAR'
    +
               | 'CHAR_LENGTH'
    +
               | 'CHARACTER'
    +
               | 'CHARACTER_LENGTH'
    +
               | 'CHECK'
    +
               | 'CLASSIFIER'
    +
               | 'CLOB'
    +
               | 'CLOSE'
    +
               | 'COALESCE'
    +
               | 'COLLATE'
    +
               | 'COLLECT'
    +
               | 'COLUMN'
    +
               | 'COMMIT'
    +
               | 'CONDITION'
    +
               | 'CONNECT'
    +
               | 'CONSTRAINT'
    +
               | 'CONTAINS'
    +
               | 'CONVERT'
    +
               | 'COPY'
    +
               | 'CORR'
    +
               | 'CORRESPONDING'
    +
               | 'COS'
    +
               | 'COSH'
    +
               | 'COUNT'
    +
               | 'COVAR_POP'
    +
               | 'COVAR_SAMP'
    +
               | 'CREATE'
    +
               | 'CROSS'
    +
               | 'CUBE'
    +
               | 'CUME_DIST'
    +
               | 'CURRENT'
    +
               | 'CURRENT_CATALOG'
    +
               | 'CURRENT_DATE'
    +
               | 'CURRENT_DEFAULT_TRANSFORM_GROUP'
    +
               | CURRENT_PATH
    +
               | CURRENT_ROLE
    +
               | 'CURRENT_ROW'
    +
               | 'CURRENT_SCHEMA'
    +
               | 'CURRENT_TIME'
    +
               | 'CURRENT_TIMESTAMP'
    +
               | CURRENT_PATH
    +
               | CURRENT_ROLE
    +
               | 'CURRENT_TRANSFORM_GROUP_FOR_TYPE'
    +
               | 'CURRENT_USER'
    +
               | 'CURSOR'
    +
               | 'CYCLE'
    +
               | 'DATE'
    +
               | 'DAY'
    +
               | 'DEALLOCATE'
    +
               | 'DEC'
    +
               | 'DECIMAL'
    +
               | 'DECFLOAT'
    +
               | 'DECLARE'
    +
               | 'DEFAULT'
    +
               | 'DEFINE'
    +
               | 'DELETE'
    +
               | 'DENSE_RANK'
    +
               | 'DEREF'
    +
               | 'DESCRIBE'
    +
               | 'DETERMINISTIC'
    +
               | 'DISCONNECT'
    +
               | 'DISTINCT'
    +
               | 'DOUBLE'
    +
               | 'DROP'
    +
               | 'DYNAMIC'
    +
               | 'EACH'
    +
               | 'ELEMENT'
    +
               | 'ELSE'
    +
               | 'EMPTY'
    +
               | 'END'
    +
               | 'END_FRAME'
    +
               | 'END_PARTITION'
    +
               | 'END-EXEC'
    +
               | 'EQUALS'
    +
               | 'ESCAPE'
    +
               | 'EVERY'
    +
               | 'EXCEPT'
    +
               | 'EXEC'
    +
               | 'EXECUTE'
    +
               | 'EXISTS'
    +
               | 'EXP'
    +
               | 'EXTERNAL'
    +
               | 'EXTRACT'
    +
               | 'FALSE'
    +
               | 'FETCH'
    +
               | 'FILTER'
    +
               | 'FIRST_VALUE'
    +
               | 'FLOAT'
    +
               | 'FLOOR'
    +
               | 'FOR'
    +
               | 'FOREIGN'
    +
               | 'FRAME_ROW'
    +
               | 'FREE'
    +
               | 'FROM'
    +
               | 'FULL'
    +
               | 'FUNCTION'
    +
               | 'FUSION'
    +
               | 'GET'
    +
               | 'GLOBAL'
    +
               | 'GRANT'
    +
               | 'GROUP'
    +
               | 'GROUPING'
    +
               | 'GROUPS'
    +
               | 'HAVING'
    +
               | 'HOLD'
    +
               | 'HOUR'
    +
               | 'IDENTITY'
    +
               | 'IN'
    +
               | 'INDICATOR'
    +
               | 'INITIAL'
    +
               | 'INNER'
    +
               | 'INOUT'
    +
               | 'INSENSITIVE'
    +
               | 'INSERT'
    +
               | 'INT'
    +
               | 'INTEGER'
    +
               | 'INTERSECT'
    +
               | 'INTERSECTION'
    +
               | 'INTERVAL'
    +
               | 'INTO'
    +
               | 'IS'
    +
               | 'JOIN'
    +
               | 'JSON_ARRAY'
    +
               | 'JSON_ARRAYAGG'
    +
               | 'JSON_EXISTS'
    +
               | 'JSON_OBJECT'
    +
               | 'JSON_OBJECTAGG'
    +
               | 'JSON_QUERY'
    +
               | 'JSON_TABLE'
    +
               | 'JSON_TABLE_PRIMITIVE'
    +
               | 'JSON_VALUE'
    +
               | 'LAG'
    +
               | 'LANGUAGE'
    +
               | 'LARGE'
    +
               | 'LAST_VALUE'
    +
               | 'LATERAL'
    +
               | 'LEAD'
    +
               | 'LEADING'
    +
               | 'LEFT'
    +
               | 'LIKE'
    +
               | 'LIKE_REGEX'
    +
               | 'LISTAGG'
    +
               | 'LN'
    +
               | 'LOCAL'
    +
               | 'LOCALTIME'
    +
               | 'LOCALTIMESTAMP'
    +
               | 'LOG'
    +
               | 'LOG10'
    +
               | 'LOWER'
    +
               | 'MATCH'
    +
               | 'MATCH_NUMBER'
    +
               | 'MATCH_RECOGNIZE'
    +
               | 'MATCHES'
    +
               | 'MAX'
    +
               | 'MEMBER'
    +
               | 'MERGE'
    +
               | 'METHOD'
    +
               | 'MIN'
    +
               | 'MINUTE'
    +
               | 'MOD'
    +
               | 'MODIFIES'
    +
               | 'MODULE'
    +
               | 'MONTH'
    +
               | 'MULTISET'
    +
               | 'NATIONAL'
    +
               | 'NATURAL'
    +
               | 'NCHAR'
    +
               | 'NCLOB'
    +
               | 'NEW'
    +
               | 'NO'
    +
               | 'NONE'
    +
               | 'NORMALIZE'
    +
               | 'NOT'
    +
               | 'NTH_VALUE'
    +
               | 'NTILE'
    +
               | 'NULL'
    +
               | 'NULLIF'
    +
               | 'NUMERIC'
    +
               | 'OCTET_LENGTH'
    +
               | 'OCCURRENCES_REGEX'
    +
               | 'OF'
    +
               | 'OFFSET'
    +
               | 'OLD'
    +
               | 'OMIT'
    +
               | 'ON'
    +
               | 'ONE'
    +
               | 'ONLY'
    +
               | 'OPEN'
    +
               | 'OR'
    +
               | 'ORDER'
    +
               | 'OUT'
    +
               | 'OUTER'
    +
               | 'OVER'
    +
               | 'OVERLAPS'
    +
               | 'OVERLAY'
    +
               | 'PARAMETER'
    +
               | 'PARTITION'
    +
               | 'PATTERN'
    +
               | 'PER'
    +
               | 'PERCENT'
    +
               | 'PERCENT_RANK'
    +
               | 'PERCENTILE_CONT'
    +
               | 'PERCENTILE_DISC'
    +
               | 'PERIOD'
    +
               | 'PORTION'
    +
               | 'POSITION'
    +
               | 'POSITION_REGEX'
    +
               | 'POWER'
    +
               | 'PRECEDES'
    +
               | 'PRECISION'
    +
               | 'PREPARE'
    +
               | 'PRIMARY'
    +
               | 'PROCEDURE'
    +
               | 'PTF'
    +
               | 'RANGE'
    +
               | 'RANK'
    +
               | 'READS'
    +
               | 'REAL'
    +
               | 'RECURSIVE'
    +
               | 'REF'
    +
               | 'REFERENCES'
    +
               | 'REFERENCING'
    +
               | 'REGR_AVGX'
    +
               | 'REGR_AVGY'
    +
               | 'REGR_COUNT'
    +
               | 'REGR_INTERCEPT'
    +
               | 'REGR_R2'
    +
               | 'REGR_SLOPE'
    +
               | 'REGR_SXX'
    +
               | 'REGR_SXY'
    +
               | 'REGR_SYY'
    +
               | 'RELEASE'
    +
               | 'RESULT'
    +
               | 'RETURN'
    +
               | 'RETURNS'
    +
               | 'REVOKE'
    +
               | 'RIGHT'
    +
               | 'ROLLBACK'
    +
               | 'ROLLUP'
    +
               | 'ROW'
    +
               | 'ROW_NUMBER'
    +
               | 'ROWS'
    +
               | 'RUNNING'
    +
               | 'SAVEPOINT'
    +
               | 'SCOPE'
    +
               | 'SCROLL'
    +
               | 'SEARCH'
    +
               | 'SECOND'
    +
               | 'SEEK'
    +
               | 'SELECT'
    +
               | 'SENSITIVE'
    +
               | 'SESSION_USER'
    +
               | 'SET'
    +
               | 'SHOW'
    +
               | 'SIMILAR'
    +
               | 'SIN'
    +
               | 'SINH'
    +
               | 'SKIP'
    +
               | 'SMALLINT'
    +
               | 'SOME'
    +
               | 'SPECIFIC'
    +
               | 'SPECIFICTYPE'
    +
               | 'SQL'
    +
               | 'SQLEXCEPTION'
    +
               | 'SQLSTATE'
    +
               | 'SQLWARNING'
    +
               | 'SQRT'
    +
               | 'START'
    +
               | 'STATIC'
    +
               | 'STDDEV_POP'
    +
               | 'STDDEV_SAMP'
    +
               | 'SUBMULTISET'
    +
               | 'SUBSET'
    +
               | 'SUBSTRING'
    +
               | 'SUBSTRING_REGEX'
    +
               | 'SUCCEEDS'
    +
               | 'SUM'
    +
               | 'SYMMETRIC'
    +
               | 'SYSTEM'
    +
               | 'SYSTEM_TIME'
    +
               | 'SYSTEM_USER'
    +
               | 'TABLE'
    +
               | 'TABLESAMPLE'
    +
               | 'TAN'
    +
               | 'TANH'
    +
               | 'THEN'
    +
               | 'TIME'
    +
               | 'TIMESTAMP'
    +
               | 'TIMEZONE_HOUR'
    +
               | 'TIMEZONE_MINUTE'
    +
               | 'TO'
    +
               | 'TRAILING'
    +
               | 'TRANSLATE'
    +
               | 'TRANSLATE_REGEX'
    +
               | 'TRANSLATION'
    +
               | 'TREAT'
    +
               | 'TRIGGER'
    +
               | 'TRIM'
    +
               | 'TRIM_ARRAY'
    +
               | 'TRUE'
    +
               | 'TRUNCATE'
    +
               | 'UESCAPE'
    +
               | 'UNION'
    +
               | 'UNIQUE'
    +
               | 'UNKNOWN'
    +
               | 'UNNEST'
    +
               | 'UPDATE'
    +
               | 'UPPER'
    +
               | 'USER'
    +
               | 'USING'
    +
               | 'VALUE'
    +
               | 'VALUES'
    +
               | 'VALUE_OF'
    +
               | 'VAR_POP'
    +
               | 'VAR_SAMP'
    +
               | 'VARBINARY'
    +
               | 'VARCHAR'
    +
               | 'VARYING'
    +
               | 'VERSIONING'
    +
               | 'WHEN'
    +
               | 'WHENEVER'
    +
               | 'WHERE'
    +
               | 'WIDTH_BUCKET'
    +
               | 'WINDOW'
    +
               | 'WITH'
    +
               | 'WITHIN'
    +
               | 'WITHOUT'
    +
               | 'YEAR'
    +
    + referenced by: + + key_word + + literal: + + + + + + + + signed_numeric_literal + + + general_literal + + + + +
               | general_literal
    +
    + referenced by: + + default_option + simple_value_specification + value_specification + + unsigned_literal: + + + + + + + + unsigned_numeric_literal + + + general_literal + + + + +
             ::= unsigned_numeric_literal
    +
               | general_literal
    +
    + referenced by: + + unsigned_value_specification + + general_literal: + + + + + + + + character_string_literal + + + national_character_string_literal + + + Unicode_character_string_literal + + + binary_string_literal + + + datetime_literal + + + interval_literal + + + boolean_literal + + + + +
             ::= character_string_literal
    +
               | national_character_string_literal
    +
               | Unicode_character_string_literal
    +
               | binary_string_literal
    +
               | datetime_literal
    +
               | interval_literal
    +
               | boolean_literal
    +
    + referenced by: + + literal + unsigned_literal + + character_string_literal: + + + + + + + + _ + + + character_set_specification + + ' + + + character_representation + + ' + + + separator + + + + +
             ::= ( '_' character_set_specification )? "'" character_representation* "'" ( separator "'" character_representation* "'" )*
    +
    + referenced by: + + JSON_path_specification + cast_template + delimiter_token + external_routine_name + general_literal + listagg_separator + listagg_truncation_filler + + character_representation: + + + + + + + + nonquote_character + + + quote_symbol + + + + +
             ::= nonquote_character
    +
               | quote_symbol
    +
    + referenced by: + + Ada_initial_value + COBOL_variable_definition + C_initial_value + PL_I_variable_definition + Unicode_representation + character_string_literal + national_character_string_literal + + quote_symbol: + + + + + + + + ' + + + ' + + + + + +
             ::= "'" "'"
    +
    + referenced by: + + character_representation + + national_character_string_literal: + + + + + + + + N + + + ' + + + character_representation + + ' + + + separator + + + + +
             ::= 'N' "'" character_representation* "'" ( separator "'" character_representation* "'" )*
    +
    + referenced by: + + general_literal + nondelimiter_token + + Unicode_character_string_literal: + + + + + + + + _ + + + character_set_specification + + U + + + & + + + ' + + + Unicode_representation + + ' + + + separator + + + Unicode_escape_specifier + + + + + + + referenced by: + + general_literal + nondelimiter_token + + Unicode_representation: + + + + + + + + character_representation + + + Unicode_escape_value + + + + +
             ::= character_representation
    +
               | Unicode_escape_value
    +
    + referenced by: + + Unicode_character_string_literal + + binary_string_literal: + + + + + + + + X + + + ' + + + !! See the Syntax Rules. + + + hexit + + !! See the Syntax Rules. + + + hexit + + ' + + + separator + + + + +
             ::= 'X' "'" '!! See the Syntax Rules.'* ( hexit '!! See the Syntax Rules.'* hexit '!! See the Syntax Rules.'* )* "'" ( separator "'" '!! See the Syntax Rules.'* ( hexit '!! See the Syntax Rules.'* hexit '!! See the Syntax Rules.'* )* "'" )*
    +
    + referenced by: + + general_literal + nondelimiter_token + + hexit: + + + + + + + + digit + + A + + + B + + + C + + + D + + + E + + + F + + + a + + + b + + + c + + + d + + + e + + + f + + + + +
    hexit    ::= digit
    +
               | 'A'
    +
               | 'B'
    +
               | 'C'
    +
               | 'D'
    +
               | 'E'
    +
               | 'F'
    +
               | 'a'
    +
               | 'b'
    +
               | 'c'
    +
               | 'd'
    +
               | 'e'
    +
               | 'f'
    +
    + referenced by: + + Unicode_4_digit_escape_value + Unicode_6_digit_escape_value + binary_string_literal + + signed_numeric_literal: + + + + + + + + sign + + + unsigned_numeric_literal + + + + +
             ::= sign? unsigned_numeric_literal
    +
    + referenced by: + + literal + sequence_generator_increment + sequence_generator_max_value + sequence_generator_min_value + sequence_generator_restart_value + sequence_generator_start_value + + unsigned_numeric_literal: + + + + + + + + exact_numeric_literal + + + approximate_numeric_literal + + + + +
             ::= exact_numeric_literal
    +
               | approximate_numeric_literal
    +
    + referenced by: + + nondelimiter_token + signed_numeric_literal + unsigned_literal + + exact_numeric_literal: + + + + + + + + unsigned_integer + + . + + + unsigned_integer + + . + + + unsigned_integer + + + + +
             ::= unsigned_integer ( '.' unsigned_integer? )?
    +
               | '.' unsigned_integer
    +
    + referenced by: + + mantissa + offset + unsigned_numeric_literal + + sign: + + + + + + + + + + + + - + + + + +
    sign     ::= '+'
    +
               | '-'
    +
    + referenced by: + + factor + interval_factor + interval_literal + signed_integer + signed_numeric_literal + time_zone_interval + unquoted_interval_string + + approximate_numeric_literal: + + + + + + + + mantissa + + E + + + exponent + + + + +
             ::= mantissa 'E' exponent
    +
    + referenced by: + + unsigned_numeric_literal + + mantissa: + + + + + + + + exact_numeric_literal + + + + + + referenced by: + + approximate_numeric_literal + + exponent: + + + + + + + + signed_integer + + + + + + referenced by: + + approximate_numeric_literal + + signed_integer: + + + + + + + + sign + + + unsigned_integer + + + + +
             ::= sign? unsigned_integer
    +
    + referenced by: + + exponent + + unsigned_integer: + + + + + + + + digit + + + + +
             ::= digit+
    +
    + referenced by: + + datetime_value + exact_numeric_literal + goto_target + high_value + interval_fractional_seconds_precision + interval_leading_field_precision + large_object_length + length + low_value + maximum_cardinality + maximum_returned_result_sets + precision + row_pattern_quantifier + scale + seconds_fraction + seconds_integer_value + signed_integer + time_fractional_seconds_precision + + datetime_literal: + + + + + + + + date_literal + + + time_literal + + + timestamp_literal + + + + +
             ::= date_literal
    +
               | time_literal
    +
               | timestamp_literal
    +
    + referenced by: + + general_literal + + date_literal: + + + + + + + + DATE + + + date_string + + + + +
             ::= 'DATE' date_string
    +
    + referenced by: + + datetime_literal + + time_literal: + + + + + + + + TIME + + + time_string + + + + +
             ::= 'TIME' time_string
    +
    + referenced by: + + datetime_literal + + timestamp_literal: + + + + + + + + TIMESTAMP + + + timestamp_string + + + + +
             ::= 'TIMESTAMP' timestamp_string
    +
    + referenced by: + + datetime_literal + + date_string: + + + + + + + + ' + + + unquoted_date_string + + ' + + + + + +
             ::= "'" unquoted_date_string "'"
    +
    + referenced by: + + date_literal + delimiter_token + + time_string: + + + + + + + + ' + + + unquoted_time_string + + ' + + + + + +
             ::= "'" unquoted_time_string "'"
    +
    + referenced by: + + delimiter_token + time_literal + + timestamp_string: + + + + + + + + ' + + + unquoted_timestamp_string + + ' + + + + + +
             ::= "'" unquoted_timestamp_string "'"
    +
    + referenced by: + + delimiter_token + timestamp_literal + + time_zone_interval: + + + + + + + + sign + + + hours_value + + : + + + minutes_value + + + + +
             ::= sign hours_value ':' minutes_value
    +
    + referenced by: + + unquoted_time_string + + date_value: + + + + + + + + years_value + + - + + + months_value + + - + + + days_value + + + + +
             ::= years_value '-' months_value '-' days_value
    +
    + referenced by: + + unquoted_date_string + + time_value: + + + + + + + + hours_value + + : + + + minutes_value + + : + + + seconds_value + + + + +
             ::= hours_value ':' minutes_value ':' seconds_value
    +
    + referenced by: + + unquoted_time_string + + interval_literal: + + + + + + + + INTERVAL + + + sign + + + interval_string + + + interval_qualifier + + + + +
             ::= 'INTERVAL' sign? interval_string interval_qualifier
    +
    + referenced by: + + general_literal + + interval_string: + + + + + + + + ' + + + unquoted_interval_string + + ' + + + + + +
             ::= "'" unquoted_interval_string "'"
    +
    + referenced by: + + delimiter_token + interval_literal + + unquoted_date_string: + + + + + + + + date_value + + + + +
             ::= date_value
    +
    + referenced by: + + date_string + unquoted_timestamp_string + + unquoted_time_string: + + + + + + + + time_value + + + time_zone_interval + + + + +
             ::= time_value time_zone_interval?
    +
    + referenced by: + + time_string + unquoted_timestamp_string + + unquoted_timestamp_string: + + + + + + + + unquoted_date_string + + !! See the Syntax Rules. + + + unquoted_time_string + + + + +
             ::= unquoted_date_string '!! See the Syntax Rules.' unquoted_time_string
    +
    + referenced by: + + timestamp_string + + unquoted_interval_string: + + + + + + + + sign + + + year_month_literal + + + day_time_literal + + + + +
             ::= sign? ( year_month_literal | day_time_literal )
    +
    + referenced by: + + interval_string + + year_month_literal: + + + + + + + + years_value + + - + + + months_value + + + months_value + + + + +
             ::= years_value ( '-' months_value )?
    +
               | months_value
    +
    + referenced by: + + unquoted_interval_string + + day_time_literal: + + + + + + + + day_time_interval + + + time_interval + + + + +
             ::= day_time_interval
    +
               | time_interval
    +
    + referenced by: + + unquoted_interval_string + + day_time_interval: + + + + + + + + days_value + + !! See the Syntax Rules. + + + hours_value + + : + + + minutes_value + + : + + + seconds_value + + + + +
             ::= days_value ( '!! See the Syntax Rules.' hours_value ( ':' minutes_value ( ':' seconds_value )? )? )?
    +
    + referenced by: + + day_time_literal + + time_interval: + + + + + + + + hours_value + + : + + + minutes_value + + : + + + seconds_value + + + minutes_value + + : + + + seconds_value + + + seconds_value + + + + +
             ::= hours_value ( ':' minutes_value ( ':' seconds_value )? )?
    +
               | minutes_value ( ':' seconds_value )?
    +
               | seconds_value
    +
    + referenced by: + + day_time_literal + + years_value: + + + + + + + + datetime_value + + + + +
             ::= datetime_value
    +
    + referenced by: + + date_value + year_month_literal + + months_value: + + + + + + + + datetime_value + + + + +
             ::= datetime_value
    +
    + referenced by: + + date_value + year_month_literal + + days_value: + + + + + + + + datetime_value + + + + +
             ::= datetime_value
    +
    + referenced by: + + date_value + day_time_interval + + hours_value: + + + + + + + + datetime_value + + + + +
             ::= datetime_value
    +
    + referenced by: + + day_time_interval + time_interval + time_value + time_zone_interval + + minutes_value: + + + + + + + + datetime_value + + + + +
             ::= datetime_value
    +
    + referenced by: + + day_time_interval + time_interval + time_value + time_zone_interval + + seconds_value: + + + + + + + + seconds_integer_value + + . + + + seconds_fraction + + + + +
             ::= seconds_integer_value ( '.' seconds_fraction? )?
    +
    + referenced by: + + day_time_interval + time_interval + time_value + + seconds_integer_value: + + + + + + + + unsigned_integer + + + + +
             ::= unsigned_integer
    +
    + referenced by: + + seconds_value + + seconds_fraction: + + + + + + + + unsigned_integer + + + + +
             ::= unsigned_integer
    +
    + referenced by: + + seconds_value + + datetime_value: + + + + + + + + unsigned_integer + + + + +
             ::= unsigned_integer
    +
    + referenced by: + + days_value + hours_value + minutes_value + months_value + years_value + + boolean_literal: + + + + + + + + TRUE + + + FALSE + + + UNKNOWN + + + + + +
             ::= 'TRUE'
    +
               | 'FALSE'
    +
               | 'UNKNOWN'
    +
    + referenced by: + + general_literal + + identifier: + + + + + + + + actual_identifier + + + + +
             ::= actual_identifier
    +
    + referenced by: + + JSON_argument + JSON_table_path_name + SQL_client_module_name + SQL_parameter_name + application_time_period_name + asterisked_identifier + attribute_name + cast_to_distinct_identifier + cast_to_ref_identifier + cast_to_source_identifier + cast_to_type_identifier + catalog_name + column_name + correlation_name + external_routine_name + field_name + group_name + host_parameter_name + identifier_chain + measure_name + method_name + non_extended_descriptor_name + procedure_name + qualified_identifier + query_name + regular_character_set_identifier + role_name + savepoint_name + statement_name + transition_table_name + unqualified_schema_name + user_identifier + window_name + + actual_identifier: + + + + + + + + regular_identifier + + + delimited_identifier + + + Unicode_delimited_identifier + + + + +
             ::= regular_identifier
    +
               | delimited_identifier
    +
               | Unicode_delimited_identifier
    +
    + referenced by: + + identifier + + SQL_language_identifier: + + + + + + + + SQL_language_identifier_start + + + SQL_language_identifier_part + + + + + + + referenced by: + + character_set_name + nondelimiter_token + + SQL_language_identifier_start: + + + + + + + + simple_Latin_letter + + + + +
             ::= simple_Latin_letter
    +
    + referenced by: + + SQL_language_identifier + + SQL_language_identifier_part: + + + + + + + + simple_Latin_letter + + + digit + + _ + + + + + +
             ::= simple_Latin_letter
    +
               | digit
    +
               | '_'
    +
    + referenced by: + + SQL_language_identifier + + authorization_identifier: + + + + + + + + role_name + + + user_identifier + + + + +
             ::= role_name
    +
               | user_identifier
    +
    + referenced by: + + grantee + module_authorization_identifier + schema_authorization_identifier + + table_name: + + + + + + + + local_or_schema_qualified_name + + + + +
             ::= local_or_schema_qualified_name
    +
    + referenced by: + + alter_table_statement + drop_table_statement + drop_view_statement + insertion_target + like_clause + object_name + range_variable + referenced_table_and_columns + scope_clause + subview_clause + supertable_name + table_definition + table_or_query_name + target_table + temporary_table_declaration + trigger_definition + view_definition + + domain_name: + + + + + + + + schema_qualified_name + + + + +
             ::= schema_qualified_name
    +
    + referenced by: + + alter_domain_statement + cast_target + data_type_or_domain_name + domain_definition + drop_domain_statement + object_name + + schema_name: + + + + + + + + catalog_name + + . + + + unqualified_schema_name + + + + +
             ::= ( catalog_name '.' )? unqualified_schema_name
    +
    + referenced by: + + character_set_name + drop_schema_statement + embedded_authorization_clause + local_or_schema_qualifier + module_authorization_clause + routine_name + schema_name_clause + schema_name_list + schema_qualified_name + specific_method_name + user_defined_type_name + + unqualified_schema_name: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + schema_name + + catalog_name: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + schema_name + + schema_qualified_name: + + + + + + + + schema_name + + . + + + qualified_identifier + + + + +
             ::= ( schema_name '.' )? qualified_identifier
    +
    + referenced by: + + collation_name + constraint_name + domain_name + schema_qualified_routine_name + sequence_generator_name + specific_name + transcoding_name + transliteration_name + trigger_name + + local_or_schema_qualified_name: + + + + + + + + local_or_schema_qualifier + + . + + + qualified_identifier + + + + +
             ::= ( local_or_schema_qualifier '.' )? qualified_identifier
    +
    + referenced by: + + table_name + + local_or_schema_qualifier: + + + + + + + + schema_name + + MODULE + + + + + +
             ::= schema_name
    +
               | 'MODULE'
    +
    + referenced by: + + local_or_schema_qualified_name + + qualified_identifier: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + attribute_or_method_reference + column_reference + local_or_schema_qualified_name + local_qualified_name + routine_name + schema_qualified_name + specific_method_name + user_defined_type_name + + column_name: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + JSON_table_formatted_column_definition + JSON_table_ordinality_column_definition + JSON_table_primitive_chaining_column + JSON_table_regular_column_definition + alter_column_definition + as_clause + column_definition + column_name_list + column_options + column_reference + cycle_column + cycle_mark_column + descriptor_column_specification + drop_column_definition + object_column + path_column + period_begin_column_name + period_end_column_name + self_referencing_column_name + sequence_column + table_function_column_list_element + view_column_option + + correlation_name: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + correlation_or_recognition + delete_statement__positioned + delete_statement__searched + join_correlation_name + merge_correlation_name + new_transition_variable_name + old_transition_variable_name + range_variable + row_pattern_input_name + row_pattern_output_name + row_pattern_variable_name + table_argument_correlation_name + table_primary + update_statement__positioned + update_statement__searched + + query_name: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + range_variable + table_or_query_name + with_list_element + + SQL_client_module_name: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + module_name_clause + + procedure_name: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + externally_invoked_procedure + + schema_qualified_routine_name: + + + + + + + + schema_qualified_name + + + + +
             ::= schema_qualified_name
    +
    + referenced by: + + SQL_invoked_procedure + function_specification + member_name_alternatives + + method_name: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + direct_invocation + generalized_invocation + member_name_alternatives + method_reference + method_specification_designator + mutated_set_clause + partial_method_specification + specific_method_specification_designator + static_method_invocation + + specific_name: + + + + + + + + schema_qualified_name + + + + +
             ::= schema_qualified_name
    +
    + referenced by: + + routine_characteristic + specific_routine_designator + state_category + + cursor_name: + + + + + + + + local_qualified_name + + + + +
             ::= local_qualified_name
    +
    + referenced by: + + allocate_received_cursor_statement + close_statement + conventional_dynamic_cursor_name + declare_cursor + delete_statement__positioned + described_object + dynamic_declare_cursor + fetch_statement + open_statement + preparable_dynamic_cursor_name + update_statement__positioned + + local_qualified_name: + + + + + + + + MODULE + + + . + + + qualified_identifier + + + + +
             ::= ( 'MODULE' '.' )? qualified_identifier
    +
    + referenced by: + + cursor_name + + host_parameter_name: + + + + + + + + : + + + identifier + + + + +
             ::= ':' identifier
    +
    + referenced by: + + host_parameter_declaration + host_parameter_specification + indicator_parameter + locator_reference + simple_target_specification + simple_value_specification + + SQL_parameter_name: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + SQL_parameter_declaration + named_argument_specification + + constraint_name: + + + + + + + + schema_qualified_name + + + + +
             ::= schema_qualified_name
    +
    + referenced by: + + SQL_condition + alter_table_constraint_definition + assertion_definition + constraint_name_definition + constraint_name_list + drop_assertion_statement + drop_domain_constraint_definition + drop_table_constraint_definition + + external_routine_name: + + + + + + + + identifier + + + character_string_literal + + + + +
             ::= identifier
    +
               | character_string_literal
    +
    + referenced by: + + alter_routine_characteristic + external_body_reference + + trigger_name: + + + + + + + + schema_qualified_name + + + + +
             ::= schema_qualified_name
    +
    + referenced by: + + drop_trigger_statement + trigger_definition + + collation_name: + + + + + + + + schema_qualified_name + + + + +
             ::= schema_qualified_name
    +
    + referenced by: + + collate_clause + collation_definition + drop_collation_statement + existing_collation_name + module_collation_specification + object_name + + character_set_name: + + + + + + + + schema_name + + . + + + SQL_language_identifier + + + + +
             ::= ( schema_name '.' )? SQL_language_identifier
    +
    + referenced by: + + character_set_definition + drop_character_set_statement + implementation_defined_character_set_name + object_name + standard_character_set_name + user_defined_character_set_name + + transliteration_name: + + + + + + + + schema_qualified_name + + + + +
             ::= schema_qualified_name
    +
    + referenced by: + + character_transliteration + drop_transliteration_statement + existing_transliteration_name + object_name + transliteration_definition + + transcoding_name: + + + + + + + + schema_qualified_name + + + + +
             ::= schema_qualified_name
    +
    + referenced by: + + transcoding + + schema_resolved_user_defined_type_name: + + + + + + + + user_defined_type_name + + + + +
             ::= user_defined_type_name
    +
    + referenced by: + + alter_transform_statement + alter_type_statement + drop_data_type_statement + drop_transform_statement + drop_user_defined_ordering_statement + method_specification_designator + object_name + specific_routine_designator + transform_definition + user_defined_ordering_definition + user_defined_type_body + + user_defined_type_name: + + + + + + + + schema_name + + . + + + qualified_identifier + + + + +
             ::= ( schema_name '.' )? qualified_identifier
    +
    + referenced by: + + path_resolved_user_defined_type_name + schema_resolved_user_defined_type_name + + attribute_name: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + attribute_definition + dereference_operation + drop_attribute_definition + list_of_attributes + + field_name: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + field_definition + field_reference + + savepoint_name: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + savepoint_specifier + + sequence_generator_name: + + + + + + + + schema_qualified_name + + + + +
             ::= schema_qualified_name
    +
    + referenced by: + + alter_sequence_generator_statement + drop_sequence_generator_statement + next_value_expression + object_name + sequence_generator_definition + + role_name: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + authorization_identifier + drop_role_statement + role_definition + role_granted + role_revoked + + user_identifier: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + authorization_identifier + + connection_name: + + + + + + + + simple_value_specification + + + + +
             ::= simple_value_specification
    +
    + referenced by: + + connection_object + connection_target + + SQL_server_name: + + + + + + + + simple_value_specification + + + + +
             ::= simple_value_specification
    +
    + referenced by: + + connection_target + + connection_user_name: + + + + + + + + simple_value_specification + + + + +
             ::= simple_value_specification
    +
    + referenced by: + + connection_target + + SQL_statement_name: + + + + + + + + statement_name + + + extended_statement_name + + + + +
             ::= statement_name
    +
               | extended_statement_name
    +
    + referenced by: + + deallocate_prepared_statement + describe_input_statement + described_object + execute_statement + prepare_statement + + statement_name: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + SQL_statement_name + dynamic_declare_cursor + + extended_statement_name: + + + + + + + + scope_option + + + simple_value_specification + + + + + + + referenced by: + + SQL_statement_name + allocate_extended_dynamic_cursor_statement + + dynamic_cursor_name: + + + + + + + + conventional_dynamic_cursor_name + + + PTF_cursor_name + + + + +
             ::= conventional_dynamic_cursor_name
    +
               | PTF_cursor_name
    +
    + referenced by: + + dynamic_fetch_statement + + conventional_dynamic_cursor_name: + + + + + + + + cursor_name + + + extended_cursor_name + + + + +
             ::= cursor_name
    +
               | extended_cursor_name
    +
    + referenced by: + + dynamic_close_statement + dynamic_cursor_name + dynamic_delete_statement__positioned + dynamic_open_statement + dynamic_update_statement__positioned + + extended_cursor_name: + + + + + + + + scope_option + + + simple_value_specification + + + + + + + referenced by: + + allocate_extended_dynamic_cursor_statement + conventional_dynamic_cursor_name + + PTF_cursor_name: + + + + + + + + PTF + + + simple_value_specification + + + + +
             ::= 'PTF' simple_value_specification
    +
    + referenced by: + + dynamic_cursor_name + + descriptor_name: + + + + + + + + conventional_descriptor_name + + + PTF_descriptor_name + + + + +
             ::= conventional_descriptor_name
    +
               | PTF_descriptor_name
    +
    + referenced by: + + get_descriptor_statement + into_descriptor + set_descriptor_statement + source_descriptor_name + using_descriptor + + conventional_descriptor_name: + + + + + + + + non_extended_descriptor_name + + + extended_descriptor_name + + + + +
             ::= non_extended_descriptor_name
    +
               | extended_descriptor_name
    +
    + referenced by: + + allocate_descriptor_statement + deallocate_descriptor_statement + descriptor_name + + non_extended_descriptor_name: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + conventional_descriptor_name + + extended_descriptor_name: + + + + + + + + scope_option + + + simple_value_specification + + + + + + + referenced by: + + conventional_descriptor_name + + scope_option: + + + + + + + + GLOBAL + + + LOCAL + + + + + +
             ::= 'GLOBAL'
    +
               | 'LOCAL'
    +
    + referenced by: + + extended_cursor_name + extended_descriptor_name + extended_statement_name + preparable_dynamic_cursor_name + + PTF_descriptor_name: + + + + + + + + PTF + + + simple_value_specification + + + + +
             ::= 'PTF' simple_value_specification
    +
    + referenced by: + + descriptor_name + pipe_row_statement + target_descriptor_name + + window_name: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + existing_window_name + new_window_name + window_name_or_specification + + row_pattern_variable_name: + + + + + + + + correlation_name + + + + +
             ::= correlation_name
    +
    + referenced by: + + classifier_function + row_pattern_count_function + row_pattern_definition_variable_name + row_pattern_primary_variable_name + row_pattern_skip_to_variable_name + row_pattern_subset_item_variable_name + row_pattern_subset_rhs_variable_name + + measure_name: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + row_pattern_measure_definition + window_row_pattern_measure + + data_type: + + + + + + + + predefined_type + + + row_type + + + path_resolved_user_defined_type_name + + + reference_type + + + collection_type + + + + +
             ::= predefined_type
    +
               | row_type
    +
               | path_resolved_user_defined_type_name
    +
               | reference_type
    +
               | collection_type
    +
    + referenced by: + + JSON_output_clause + JSON_returning_clause + JSON_table_formatted_column_definition + JSON_table_regular_column_definition + alter_column_data_type_clause + array_type + attribute_definition + cast_target + data_type_list + data_type_or_domain_name + descriptor_column_specification + field_definition + generalized_invocation + host_parameter_data_type + multiset_type + parameter_type + result_cast_from_type + returns_data_type + sequence_generator_data_type_option + source_data_type + table_function_column_list_element + target_data_type + + predefined_type: + + + + + + + + character_string_type + + CHARACTER + + + SET + + + character_set_specification + + + national_character_string_type + + + collate_clause + + + binary_string_type + + + numeric_type + + BOOLEAN + + + datetime_type + + + interval_type + + + + + +
               | binary_string_type
    +
               | numeric_type
    +
               | 'BOOLEAN'
    +
               | datetime_type
    +
               | interval_type
    +
    + referenced by: + + Ada_user_defined_type_variable + COBOL_user_defined_type_variable + C_user_defined_type_variable + Fortran_user_defined_type_variable + MUMPS_user_defined_type_variable + PL_I_user_defined_type_variable + Pascal_user_defined_type_variable + data_type + domain_definition + representation + user_defined_representation + + character_string_type: + + + + + + + + CHARACTER + + + CHAR + + + VARYING + + + ( + + + character_length + + ) + + + VARCHAR + + + ( + + + character_length + + ) + + + character_large_object_type + + + + +
             ::= ( 'CHARACTER' | 'CHAR' ) ( 'VARYING'? '(' character_length ')' )?
    +
               | 'VARCHAR' '(' character_length ')'
    +
               | character_large_object_type
    +
    + referenced by: + + predefined_type + + character_large_object_type: + + + + + + + + CHARACTER + + + CHAR + + + LARGE + + + OBJECT* + + + CLOB + + + ( + + + character_large_object_length + + ) + + + + + +
             ::= ( ( 'CHARACTER' | 'CHAR' ) 'LARGE' 'OBJECT*' | 'CLOB' ) ( '(' character_large_object_length ')' )?
    +
    + referenced by: + + character_string_type + + national_character_string_type: + + + + + + + + NATIONAL + + + CHARACTER + + + CHAR + + + NCHAR + + + VARYING + + + ( + + + character_length + + ) + + + national_character_large_object_type + + + + +
             ::= ( 'NATIONAL' ( 'CHARACTER' | 'CHAR' ) | 'NCHAR' ) ( 'VARYING'? '(' character_length ')' )?
    +
               | national_character_large_object_type
    +
    + referenced by: + + predefined_type + + national_character_large_object_type: + + + + + + + + NATIONAL + + + CHARACTER + + + NCHAR + + + LARGE + + + OBJECT* + + + NCLOB + + + ( + + + character_large_object_length + + ) + + + + + +
             ::= ( ( 'NATIONAL' 'CHARACTER' | 'NCHAR' ) 'LARGE' 'OBJECT*' | 'NCLOB' ) + ( '(' character_large_object_length ')' )?
    +
    + referenced by: + + national_character_string_type + + binary_string_type: + + + + + + + + BINARY + + + VARYING + + + ( + + + length + + ) + + + VARBINARY + + + ( + + + length + + ) + + + binary_large_object_string_type + + + + +
             ::= 'BINARY' ( 'VARYING'? '(' length ')' )?
    +
               | 'VARBINARY' '(' length ')'
    +
               | binary_large_object_string_type
    +
    + referenced by: + + predefined_type + + binary_large_object_string_type: + + + + + + + + BINARY + + + LARGE + + + OBJECT* + + + BLOB + + + ( + + + large_object_length + + ) + + + + + +
             ::= ( 'BINARY' 'LARGE' 'OBJECT*' | 'BLOB' ) ( '(' large_object_length ')' )?
    +
    + referenced by: + + binary_string_type + + numeric_type: + + + + + + + + exact_numeric_type + + + approximate_numeric_type + + + decimal_floating_point_type + + + + +
             ::= exact_numeric_type
    +
               | approximate_numeric_type
    +
               | decimal_floating_point_type
    +
    + referenced by: + + predefined_type + + exact_numeric_type: + + + + + + + + NUMERIC + + + DECIMAL + + + DEC + + + ( + + + precision + + , + + + scale + + ) + + + SMALLINT + + + INTEGER + + + INT + + + BIGINT + + + + + +
             ::= ( 'NUMERIC' | 'DECIMAL' | 'DEC' ) ( '(' precision ( ',' scale )? ')' )?
    +
               | 'SMALLINT'
    +
               | 'INTEGER'
    +
               | 'INT'
    +
               | 'BIGINT'
    +
    + referenced by: + + numeric_type + + approximate_numeric_type: + + + + + + + + FLOAT + + + ( + + + precision + + ) + + + REAL + + + DOUBLE + + + PRECISION + + + + + +
             ::= 'FLOAT' ( '(' precision ')' )?
    +
               | 'REAL'
    +
               | 'DOUBLE' 'PRECISION'
    +
    + referenced by: + + numeric_type + + decimal_floating_point_type: + + + + + + + + DECFLOAT + + + ( + + + precision + + ) + + + + + +
             ::= 'DECFLOAT' ( '(' precision ')' )?
    +
    + referenced by: + + numeric_type + + length: + + + + + + + + unsigned_integer + + + + + + referenced by: + + Ada_BINARY_variable + Ada_VARBINARY_variable + COBOL_BINARY_variable + COBOL_nines + C_BINARY_variable + C_VARBINARY_variable + Fortran_BINARY_variable + Fortran_VARBINARY_variable + PL_I_BINARY_variable + PL_I_VARBINARY_variable + Pascal_BINARY_variable + binary_string_type + character_length + + character_length: + + + + + + + + length + + + char_length_units + + + + +
             ::= length char_length_units?
    +
    + referenced by: + + Ada_qualified_type_specification + Ada_unqualified_type_specification + COBOL_character_type + COBOL_national_character_type + C_array_specification + Fortran_type_specification + MUMPS_length_specification + PL_I_type_specification + Pascal_type_specification + character_string_type + national_character_string_type + normalize_function_result_length + + large_object_length: + + + + + + + + unsigned_integer + + + multiplier + + + large_object_length_token + + + + +
             ::= unsigned_integer multiplier?
    +
               | large_object_length_token
    +
    + referenced by: + + Ada_BLOB_variable + COBOL_BLOB_variable + C_BLOB_variable + Fortran_BLOB_variable + PL_I_BLOB_variable + Pascal_BLOB_variable + binary_large_object_string_type + character_large_object_length + + character_large_object_length: + + + + + + + + large_object_length + + + char_length_units + + + + +
             ::= large_object_length char_length_units?
    +
    + referenced by: + + Ada_CLOB_variable + COBOL_CLOB_variable + COBOL_NCLOB_variable + C_CLOB_variable + C_NCLOB_variable + Fortran_CLOB_variable + PL_I_CLOB_variable + Pascal_CLOB_variable + character_large_object_type + national_character_large_object_type + normalize_function_result_length + + char_length_units: + + + + + + + + CHARACTERS* + + + OCTETS* + + + + + +
             ::= 'CHARACTERS*'
    +
               | 'OCTETS*'
    +
    + referenced by: + + char_length_expression + character_large_object_length + character_length + character_overlay_function + character_position_expression + character_substring_function + regex_occurrences_function + regex_position_expression + regex_substring_function + regex_transliteration + + precision: + + + + + + + + unsigned_integer + + + + +
             ::= unsigned_integer
    +
    + referenced by: + + MUMPS_type_specification + PL_I_type_specification + approximate_numeric_type + decimal_floating_point_type + exact_numeric_type + + scale: + + + + + + + + unsigned_integer + + + + + + referenced by: + + MUMPS_type_specification + PL_I_type_specification + exact_numeric_type + + datetime_type: + + + + + + + + DATE + + + TIME + + + ( + + + time_precision + + ) + + + TIMESTAMP + + + ( + + + timestamp_precision + + ) + + + with_or_without_time_zone + + + + +
             ::= 'DATE'
    +
               | ( 'TIME' ( '(' time_precision ')' )? | 'TIMESTAMP' ( '(' timestamp_precision ')' )? ) with_or_without_time_zone?
    +
    + referenced by: + + predefined_type + + with_or_without_time_zone: + + + + + + + + WITH + + + WITHOUT + + + TIME + + + ZONE* + + + + + +
             ::= ( 'WITH' | 'WITHOUT' ) 'TIME' 'ZONE*'
    +
    + referenced by: + + datetime_type + + time_precision: + + + + + + + + time_fractional_seconds_precision + + + + +
             ::= time_fractional_seconds_precision
    +
    + referenced by: + + current_local_time_value_function + current_time_value_function + datetime_type + + timestamp_precision: + + + + + + + + time_fractional_seconds_precision + + + + +
             ::= time_fractional_seconds_precision
    +
    + referenced by: + + current_local_timestamp_value_function + current_timestamp_value_function + datetime_type + + time_fractional_seconds_precision: + + + + + + + + unsigned_integer + + + + +
             ::= unsigned_integer
    +
    + referenced by: + + time_precision + timestamp_precision + + interval_type: + + + + + + + + INTERVAL + + + interval_qualifier + + + + +
             ::= 'INTERVAL' interval_qualifier
    +
    + referenced by: + + predefined_type + + row_type: + + + + + + + + ROW + + + row_type_body + + + + + + referenced by: + + data_type + + row_type_body: + + + + + + + + ( + + + field_definition + + , + + + ) + + + + + +
             ::= '(' field_definition ( ',' field_definition )* ')'
    +
    + referenced by: + + row_type + + reference_type: + + + + + + + + REF + + + ( + + + referenced_type + + ) + + + scope_clause + + + + +
             ::= 'REF' '(' referenced_type ')' scope_clause?
    +
    + referenced by: + + Ada_REF_variable + COBOL_REF_variable + C_REF_variable + Fortran_REF_variable + MUMPS_REF_variable + PL_I_REF_variable + Pascal_REF_variable + data_type + target_subtype + + scope_clause: + + + + + + + + SCOPE + + + table_name + + + + +
             ::= 'SCOPE' table_name
    +
    + referenced by: + + add_column_scope_clause + column_option_list + reference_type + view_column_option + + referenced_type: + + + + + + + + path_resolved_user_defined_type_name + + + + + + + referenced by: + + reference_type + + path_resolved_user_defined_type_name: + + + + + + + + user_defined_type_name + + + + +
             ::= user_defined_type_name
    +
    + referenced by: + + Ada_user_defined_type_locator_variable + Ada_user_defined_type_variable + COBOL_user_defined_type_locator_variable + COBOL_user_defined_type_variable + C_user_defined_type_locator_variable + C_user_defined_type_variable + Fortran_user_defined_type_locator_variable + Fortran_user_defined_type_variable + MUMPS_user_defined_type_locator_variable + MUMPS_user_defined_type_variable + PL_I_user_defined_type_locator_variable + PL_I_user_defined_type_variable + Pascal_user_defined_type_locator_variable + Pascal_user_defined_type_variable + data_type + exclusive_user_defined_type_specification + general_value_specification + generalized_expression + group_specification + inclusive_user_defined_type_specification + new_specification + referenceable_view_specification + referenced_type + static_method_invocation + supertype_name + target_subtype + transform_group_characteristic + typed_table_clause + + collection_type: + + + + + + + + array_type + + + multiset_type + + + + +
             ::= array_type
    +
               | multiset_type
    +
    + referenced by: + + data_type + representation + + array_type: + + + + + + + + data_type + + ARRAY + + + left_bracket_or_trigraph + + + maximum_cardinality + + + right_bracket_or_trigraph + + + + + + + referenced by: + + Ada_array_locator_variable + COBOL_array_locator_variable + C_array_locator_variable + Fortran_array_locator_variable + MUMPS_array_locator_variable + PL_I_array_locator_variable + Pascal_array_locator_variable + collection_type + + maximum_cardinality: + + + + + + + + unsigned_integer + + + + +
             ::= unsigned_integer
    +
    + referenced by: + + array_type + + multiset_type: + + + + + + + + data_type + + MULTISET + + + + + +
             ::= data_type 'MULTISET'
    +
    + referenced by: + + Ada_multiset_locator_variable + COBOL_multiset_locator_variable + C_multiset_locator_variable + Fortran_multiset_locator_variable + MUMPS_multiset_locator_variable + PL_I_multiset_locator_variable + Pascal_multiset_locator_variable + collection_type + + field_definition: + + + + + + + + field_name + + + data_type + + + + +
             ::= field_name data_type
    +
    + referenced by: + + row_type_body + + value_expression_primary: + + + + + + + + parenthesized_value_expression + + + nonparenthesized_value_expression_primary + + + + +
             ::= parenthesized_value_expression
    +
    +
    + referenced by: + + all_fields_reference + array_primary + attribute_or_method_reference + binary_primary + character_primary + datetime_primary + direct_invocation + field_reference + generalized_invocation + interval_primary + method_reference + multiset_primary + numeric_primary + reference_value_expression + user_defined_type_value_expression + + parenthesized_value_expression: + + + + + + + + ( + + + value_expression + + ) + + + + + +
             ::= '(' value_expression ')'
    +
    + referenced by: + + value_expression_primary + + nonparenthesized_value_expression_primary: + + + + + + + + unsigned_value_specification + + + column_reference + + + set_function_specification + + + window_function + + + nested_window_function + + + scalar_subquery + + + case_expression + + + cast_specification + + + field_reference + + + subtype_treatment + + + method_invocation + + + static_method_invocation + + + new_specification + + + attribute_or_method_reference + + + reference_resolution + + + collection_value_constructor + + + array_element_reference + + + multiset_element_reference + + + next_value_expression + + + routine_invocation + + + row_pattern_navigation_operation + + + JSON_value_function + + + + +
             ::= unsigned_value_specification
    +
               | column_reference
    +
               | set_function_specification
    +
               | window_function
    +
               | nested_window_function
    +
               | scalar_subquery
    +
               | case_expression
    +
               | cast_specification
    +
               | field_reference
    +
               | subtype_treatment
    +
               | method_invocation
    +
               | static_method_invocation
    +
               | new_specification
    +
               | attribute_or_method_reference
    +
               | reference_resolution
    +
               | collection_value_constructor
    +
               | array_element_reference
    +
               | multiset_element_reference
    +
               | next_value_expression
    +
               | routine_invocation
    +
               | row_pattern_navigation_operation
    +
               | JSON_value_function
    +
    + referenced by: + + boolean_predicand + row_value_special_case + value_expression_primary + + collection_value_constructor: + + + + + + + + array_value_constructor + + + multiset_value_constructor + + + + +
             ::= array_value_constructor
    +
               | multiset_value_constructor
    +
    + referenced by: + + nonparenthesized_value_expression_primary + + value_specification: + + + + + + + + literal + + + general_value_specification + + + + +
             ::= literal
    +
               | general_value_specification
    +
    + referenced by: + + SQL_path_characteristic + catalog_name_characteristic + character_set_name_characteristic + collation_specification + role_specification + schema_name_characteristic + set_session_user_identifier_statement + transform_group_characteristic + + unsigned_value_specification: + + + + + + + + unsigned_literal + + + general_value_specification + + + + +
             ::= unsigned_literal
    +
               | general_value_specification
    +
    + referenced by: + + nonparenthesized_value_expression_primary + window_frame_following + window_frame_preceding + + general_value_specification: + + + + + + + + host_parameter_specification + + + SQL_parameter_reference + + ? + + + embedded_variable_specification + + + current_collation_specification + + CURRENT_CATALOG + + + CURRENT_DEFAULT_TRANSFORM_GROUP + + + CURRENT_PATH + + + CURRENT_ROLE + + CURRENT_SCHEMA + + + CURRENT_TRANSFORM_GROUP_FOR_TYPE + + + path_resolved_user_defined_type_name + + CURRENT_USER + + + SESSION_USER + + + SYSTEM_USER + + + USER + + + VALUE + + + + + +
             ::= host_parameter_specification
    +
               | SQL_parameter_reference
    +
               | '?'
    +
               | embedded_variable_specification
    +
               | current_collation_specification
    +
               | 'CURRENT_CATALOG'
    +
               | 'CURRENT_DEFAULT_TRANSFORM_GROUP'
    +
               | CURRENT_PATH
    +
               | CURRENT_ROLE
    +
               | 'CURRENT_SCHEMA'
    +
               | 'CURRENT_TRANSFORM_GROUP_FOR_TYPE' path_resolved_user_defined_type_name
    +
               | 'CURRENT_USER'
    +
               | 'SESSION_USER'
    +
               | 'SYSTEM_USER'
    +
               | 'USER'
    +
               | 'VALUE'
    +
    + referenced by: + + unsigned_value_specification + using_argument + value_specification + + simple_value_specification: + + + + + + + + literal + + + host_parameter_name + + + SQL_parameter_reference + + + embedded_variable_name + + + + +
             ::= literal
    +
               | host_parameter_name
    +
               | SQL_parameter_reference
    +
               | embedded_variable_name
    +
    + referenced by: + + PTF_cursor_name + PTF_descriptor_name + SQL_server_name + SQL_statement_variable + attributes_variable + condition_number + connection_name + connection_user_name + extended_cursor_name + extended_descriptor_name + extended_statement_name + fetch_first_percentage + fetch_first_row_count + fetch_orientation + item_number + item_number_1 + item_number_2 + logical_offset + nth_row + number_of_conditions + number_of_tiles + occurrences + offset_row_count + physical_offset + row_marker_offset + simple_value_specification_1 + simple_value_specification_2 + target_array_element_specification + update_target + + target_specification: + + + + + + + + host_parameter_specification + + + SQL_parameter_reference + + + column_reference + + + target_array_element_specification + + ? + + + embedded_variable_specification + + + + +
             ::= host_parameter_specification
    +
               | SQL_parameter_reference
    +
               | column_reference
    +
               | target_array_element_specification
    +
               | '?'
    +
               | embedded_variable_specification
    +
    + referenced by: + + SQL_argument + fetch_target_list + into_argument + named_argument_SQL_argument + select_target_list + + simple_target_specification: + + + + + + + + host_parameter_name + + + SQL_parameter_reference + + + column_reference + + + embedded_variable_name + + + + +
             ::= host_parameter_name
    +
               | SQL_parameter_reference
    +
               | column_reference
    +
               | embedded_variable_name
    +
    + referenced by: + + all_info_target + condition_information_item + simple_target_specification_1 + simple_target_specification_2 + statement_information_item + + host_parameter_specification: + + + + + + + + host_parameter_name + + + indicator_parameter + + + + + + + referenced by: + + general_value_specification + target_specification + + embedded_variable_specification: + + + + + + + + embedded_variable_name + + + indicator_variable + + + + + + + referenced by: + + general_value_specification + target_specification + + indicator_variable: + + + + + + + + INDICATOR + + + embedded_variable_name + + + + +
             ::= 'INDICATOR'? embedded_variable_name
    +
    + referenced by: + + embedded_variable_specification + + indicator_parameter: + + + + + + + + INDICATOR + + + host_parameter_name + + + + +
             ::= 'INDICATOR'? host_parameter_name
    +
    + referenced by: + + host_parameter_specification + + target_array_element_specification: + + + + + + + + target_array_reference + + + left_bracket_or_trigraph + + + simple_value_specification + + + right_bracket_or_trigraph + + + + + + + referenced by: + + target_specification + + target_array_reference: + + + + + + + + SQL_parameter_reference + + + column_reference + + + + +
             ::= SQL_parameter_reference
    +
               | column_reference
    +
    + referenced by: + + target_array_element_specification + + current_collation_specification: + + + + + + + + COLLATION* + + + FOR + + + ( + + + string_value_expression + + ) + + + + + +
             ::= 'COLLATION*' 'FOR' '(' string_value_expression ')'
    +
    + referenced by: + + general_value_specification + + contextually_typed_value_specification: + + + + + + + + implicitly_typed_value_specification + + DEFAULT + + + + + + +
               | 'DEFAULT'
    +
    + referenced by: + + SQL_argument + contextually_typed_row_value_constructor + contextually_typed_row_value_constructor_element + merge_insert_value_element + named_argument_SQL_argument + parameter_default + update_source + + implicitly_typed_value_specification: + + + + + + + + NULL + + + empty_specification + + + + +
             ::= 'NULL'
    +
               | empty_specification
    +
    + referenced by: + + cast_operand + contextually_typed_value_specification + default_option + + empty_specification: + + + + + + + + ARRAY + + + MULTISET + + + left_bracket_or_trigraph + + + right_bracket_or_trigraph + + + + +
             ::= ( 'ARRAY' | 'MULTISET' ) left_bracket_or_trigraph right_bracket_or_trigraph
    +
    + referenced by: + + implicitly_typed_value_specification + + identifier_chain: + + + + + + + + identifier + + . + + + + + +
             ::= identifier ( '.' identifier )*
    +
    + referenced by: + + basic_identifier_chain + + basic_identifier_chain: + + + + + + + + identifier_chain + + + + +
             ::= identifier_chain
    +
    + referenced by: + + SQL_parameter_reference + column_reference + period_reference + + column_reference: + + + + + + + + basic_identifier_chain + + MODULE + + + . + + + qualified_identifier + + . + + + column_name + + + + +
             ::= basic_identifier_chain
    +
               | 'MODULE' '.' qualified_identifier '.' column_name
    +
    + referenced by: + + grouping_column_reference + grouping_operation + nonparenthesized_value_expression_primary + partitioned_join_column_reference + row_pattern_partition_column + simple_target_specification + table_argument_ordering_column + table_argument_partitioning_list + target_array_reference + target_specification + window_partition_column_reference + + SQL_parameter_reference: + + + + + + + + basic_identifier_chain + + + + +
             ::= basic_identifier_chain
    +
    + referenced by: + + general_value_specification + simple_target_specification + simple_value_specification + target_array_reference + target_specification + + set_function_specification: + + + + + + + + running_or_final + + + aggregate_function + + + grouping_operation + + + + +
             ::= running_or_final? aggregate_function
    +
               | grouping_operation
    +
    + referenced by: + + nonparenthesized_value_expression_primary + + running_or_final: + + + + + + + + RUNNING + + + FINAL* + + + + + +
             ::= 'RUNNING'
    +
               | 'FINAL*'
    +
    + referenced by: + + row_pattern_navigation__compound + row_pattern_navigation__logical + set_function_specification + + grouping_operation: + + + + + + + + GROUPING + + + ( + + + column_reference + + , + + + ) + + + + + +
             ::= 'GROUPING' '(' column_reference ( ',' column_reference )* ')'
    +
    + referenced by: + + set_function_specification + + window_function: + + + + + + + + window_function_type + + OVER + + + window_name_or_specification + + + + + + + referenced by: + + nonparenthesized_value_expression_primary + + window_function_type: + + + + + + + + rank_function_type + + ROW_NUMBER + + + ( + + + ) + + + aggregate_function + + + ntile_function + + + lead_or_lag_function + + + first_or_last_value_function + + + nth_value_function + + + window_row_pattern_measure + + + + +
             ::= ( rank_function_type | 'ROW_NUMBER' ) '(' ')'
    +
               | aggregate_function
    +
               | ntile_function
    +
               | lead_or_lag_function
    +
               | first_or_last_value_function
    +
               | nth_value_function
    +
               | window_row_pattern_measure
    +
    + referenced by: + + window_function + + rank_function_type: + + + + + + + + RANK + + + DENSE_RANK + + + PERCENT_RANK + + + CUME_DIST + + + + + +
             ::= 'RANK'
    +
               | 'DENSE_RANK'
    +
               | 'PERCENT_RANK'
    +
               | 'CUME_DIST'
    +
    + referenced by: + + hypothetical_set_function + window_function_type + + ntile_function: + + + + + + + + NTILE + + + ( + + + number_of_tiles + + ) + + + + + +
             ::= 'NTILE' '(' number_of_tiles ')'
    +
    + referenced by: + + window_function_type + + number_of_tiles: + + + + + + + + simple_value_specification + + ? + + + + + +
             ::= simple_value_specification
    +
               | '?'
    +
    + referenced by: + + ntile_function + + lead_or_lag_function: + + + + + + + + lead_or_lag + + ( + + + lead_or_lag_extent + + , + + + offset + + , + + + default_expression + + ) + + + null_treatment + + + + +
             ::= lead_or_lag '(' lead_or_lag_extent ( ',' offset ( ',' default_expression )? )? ')' null_treatment?
    +
    + referenced by: + + window_function_type + + lead_or_lag: + + + + + + + + LEAD + + + LAG + + + + + +
             ::= 'LEAD'
    +
               | 'LAG'
    +
    + referenced by: + + lead_or_lag_function + + lead_or_lag_extent: + + + + + + + + value_expression + + + + +
             ::= value_expression
    +
    + referenced by: + + lead_or_lag_function + + offset: + + + + + + + + exact_numeric_literal + + + + + + referenced by: + + lead_or_lag_function + + default_expression: + + + + + + + + value_expression + + + + +
             ::= value_expression
    +
    + referenced by: + + lead_or_lag_function + + null_treatment: + + + + + + + + RESPECT* + + + IGNORE* + + + NULLS* + + + + + +
             ::= ( 'RESPECT*' | 'IGNORE*' ) 'NULLS*'
    +
    + referenced by: + + first_or_last_value_function + lead_or_lag_function + nth_value_function + + first_or_last_value_function: + + + + + + + + first_or_last_value + + ( + + + value_expression + + ) + + + null_treatment + + + + +
             ::= first_or_last_value '(' value_expression ')' null_treatment?
    +
    + referenced by: + + window_function_type + + first_or_last_value: + + + + + + + + FIRST_VALUE + + + LAST_VALUE + + + + + +
             ::= 'FIRST_VALUE'
    +
               | 'LAST_VALUE'
    +
    + referenced by: + + first_or_last_value_function + + nth_value_function: + + + + + + + + NTH_VALUE + + + ( + + + value_expression + + , + + + nth_row + + ) + + + from_first_or_last + + + null_treatment + + + + +
             ::= 'NTH_VALUE' '(' value_expression ',' nth_row ')' from_first_or_last? null_treatment?
    +
    + referenced by: + + window_function_type + + nth_row: + + + + + + + + simple_value_specification + + ? + + + + + +
               | '?'
    +
    + referenced by: + + nth_value_function + + from_first_or_last: + + + + + + + + FROM + + + FIRST* + + + LAST* + + + + + +
             ::= 'FROM' ( 'FIRST*' | 'LAST*' )
    +
    + referenced by: + + nth_value_function + + window_name_or_specification: + + + + + + + + window_name + + + in_line_window_specification + + + + +
             ::= window_name
    +
               | in_line_window_specification
    +
    + referenced by: + + window_function + + in_line_window_specification: + + + + + + + + window_specification + + + + +
             ::= window_specification
    +
    + referenced by: + + window_name_or_specification + + window_row_pattern_measure: + + + + + + + + measure_name + + + + +
             ::= measure_name
    +
    + referenced by: + + window_function_type + + nested_window_function: + + + + + + + + nested_row_number_function + + + value_of_expression_at_row + + + + +
             ::= nested_row_number_function
    +
               | value_of_expression_at_row
    +
    + referenced by: + + nonparenthesized_value_expression_primary + + nested_row_number_function: + + + + + + + + ROW_NUMBER + + + ( + + + row_marker + + ) + + + + + +
             ::= 'ROW_NUMBER' '(' row_marker ')'
    +
    + referenced by: + + nested_window_function + + value_of_expression_at_row: + + + + + + + + VALUE_OF + + + ( + + + value_expression + + AT + + + row_marker_expression + + , + + + value_of_default_value + + ) + + + + + +
             ::= 'VALUE_OF' '(' value_expression 'AT' row_marker_expression ',' value_of_default_value ')'
    +
    + referenced by: + + nested_window_function + + row_marker: + + + + + + + + BEGIN_PARTITION + + + BEGIN_FRAME + + + CURRENT_ROW + + + FRAME_ROW + + + END_FRAME + + + END_PARTITION + + + + + +
             ::= 'BEGIN_PARTITION'
    +
               | 'BEGIN_FRAME'
    +
               | 'CURRENT_ROW'
    +
               | 'FRAME_ROW'
    +
               | 'END_FRAME'
    +
               | 'END_PARTITION'
    +
    + referenced by: + + nested_row_number_function + row_marker_expression + + row_marker_expression: + + + + + + + + row_marker + + + row_marker_delta + + + + +
             ::= row_marker row_marker_delta?
    +
    + referenced by: + + value_of_expression_at_row + + row_marker_delta: + + + + + + + + + + + + - + + + row_marker_offset + + + + +
             ::= ( '+' | '-' ) row_marker_offset
    +
    + referenced by: + + row_marker_expression + + row_marker_offset: + + + + + + + + simple_value_specification + + ? + + + + + +
             ::= simple_value_specification
    +
               | '?'
    +
    + referenced by: + + row_marker_delta + + value_of_default_value: + + + + + + + + value_expression + + + + +
             ::= value_expression
    +
    + referenced by: + + value_of_expression_at_row + + case_expression: + + + + + + + + case_abbreviation + + + case_specification + + + + +
             ::= case_abbreviation
    +
               | case_specification
    +
    + referenced by: + + nonparenthesized_value_expression_primary + + case_abbreviation: + + + + + + + + NULLIF + + + ( + + + value_expression + + , + + + COALESCE + + + ( + + + value_expression + + , + + + value_expression + + ) + + + + + +
             ::= ( 'NULLIF' '(' value_expression ',' | 'COALESCE' '(' ( value_expression ',' )* ) value_expression ')'
    +
    + referenced by: + + case_expression + + case_specification: + + + + + + + + simple_case + + + searched_case + + + + +
             ::= simple_case
    +
               | searched_case
    +
    + referenced by: + + case_expression + + simple_case: + + + + + + + + CASE + + + case_operand + + + simple_when_clause + + + else_clause + + END + + + + + +
             ::= 'CASE' case_operand simple_when_clause+ else_clause? 'END'
    +
    + referenced by: + + case_specification + + searched_case: + + + + + + + + CASE + + + searched_when_clause + + + else_clause + + END + + + + + +
             ::= 'CASE' searched_when_clause+ else_clause? 'END'
    +
    + referenced by: + + case_specification + + simple_when_clause: + + + + + + + + WHEN + + + when_operand_list + + THEN + + + result + + + + +
             ::= 'WHEN' when_operand_list 'THEN' result
    +
    + referenced by: + + simple_case + + searched_when_clause: + + + + + + + + WHEN + + + search_condition + + THEN + + + result + + + + +
             ::= 'WHEN' search_condition 'THEN' result
    +
    + referenced by: + + searched_case + + else_clause: + + + + + + + + ELSE + + + result + + + + +
             ::= 'ELSE' result
    +
    + referenced by: + + searched_case + simple_case + + case_operand: + + + + + + + + row_value_predicand + + + overlaps_predicate_part_1 + + + + +
             ::= row_value_predicand
    +
               | overlaps_predicate_part_1
    +
    + referenced by: + + simple_case + + when_operand_list: + + + + + + + + when_operand + + , + + + + + +
             ::= when_operand ( ',' when_operand )*
    +
    + referenced by: + + simple_when_clause + + when_operand: + + + + + + + + row_value_predicand + + + comparison_predicate_part_2 + + + between_predicate_part_2 + + + in_predicate_part_2 + + + character_like_predicate_part_2 + + + octet_like_predicate_part_2 + + + similar_predicate_part_2 + + + regex_like_predicate_part_2 + + + null_predicate_part_2 + + + quantified_comparison_predicate_part_2 + + + normalized_predicate_part_2 + + + match_predicate_part_2 + + + overlaps_predicate_part_2 + + + distinct_predicate_part_2 + + + member_predicate_part_2 + + + submultiset_predicate_part_2 + + + set_predicate_part_2 + + + type_predicate_part_2 + + + + +
             ::= row_value_predicand
    +
               | comparison_predicate_part_2
    +
               | between_predicate_part_2
    +
               | in_predicate_part_2
    +
               | character_like_predicate_part_2
    +
               | octet_like_predicate_part_2
    +
               | similar_predicate_part_2
    +
               | regex_like_predicate_part_2
    +
               | null_predicate_part_2
    + +
               | normalized_predicate_part_2
    +
               | match_predicate_part_2
    +
               | overlaps_predicate_part_2
    +
               | distinct_predicate_part_2
    +
               | member_predicate_part_2
    +
               | submultiset_predicate_part_2
    +
               | set_predicate_part_2
    +
               | type_predicate_part_2
    +
    + referenced by: + + when_operand_list + + result: + + + + + + + + result_expression + + NULL + + + + + +
               | 'NULL'
    +
    + referenced by: + + else_clause + searched_when_clause + simple_when_clause + + result_expression: + + + + + + + + value_expression + + + + +
             ::= value_expression
    +
    + referenced by: + + result + + cast_specification: + + + + + + + + CAST + + + ( + + + cast_operand + + AS + + + cast_target + + FORMAT* + + + cast_template + + ) + + + + + +
             ::= 'CAST' '(' cast_operand 'AS' cast_target ( 'FORMAT*' cast_template )? ')'
    +
    + referenced by: + + nonparenthesized_value_expression_primary + + cast_operand: + + + + + + + + value_expression + + + implicitly_typed_value_specification + + + + +
             ::= value_expression
    +
               | implicitly_typed_value_specification
    +
    + referenced by: + + cast_specification + + cast_target: + + + + + + + + domain_name + + + data_type + + + + +
             ::= domain_name
    +
               | data_type
    +
    + referenced by: + + cast_specification + + cast_template: + + + + + + + + character_string_literal + + + + +
             ::= character_string_literal
    +
    + referenced by: + + cast_specification + + next_value_expression: + + + + + + + + NEXT* + + + VALUE + + + FOR + + + sequence_generator_name + + + + +
             ::= 'NEXT*' 'VALUE' 'FOR' sequence_generator_name
    +
    + referenced by: + + nonparenthesized_value_expression_primary + + field_reference: + + + + + + + + value_expression_primary + + . + + + field_name + + + + +
             ::= value_expression_primary '.' field_name
    +
    + referenced by: + + nonparenthesized_value_expression_primary + + subtype_treatment: + + + + + + + + TREAT + + + ( + + + subtype_operand + + AS + + + target_subtype + + ) + + + + + +
             ::= 'TREAT' '(' subtype_operand 'AS' target_subtype ')'
    +
    + referenced by: + + nonparenthesized_value_expression_primary + + subtype_operand: + + + + + + + + value_expression + + + + +
             ::= value_expression
    +
    + referenced by: + + subtype_treatment + + target_subtype: + + + + + + + + path_resolved_user_defined_type_name + + + reference_type + + + + + +
               | reference_type
    +
    + referenced by: + + subtype_treatment + + method_invocation: + + + + + + + + direct_invocation + + + generalized_invocation + + + + +
             ::= direct_invocation
    +
               | generalized_invocation
    +
    + referenced by: + + new_invocation + nonparenthesized_value_expression_primary + + direct_invocation: + + + + + + + + value_expression_primary + + . + + + method_name + + + SQL_argument_list + + + + + + + referenced by: + + method_invocation + + generalized_invocation: + + + + + + + + ( + + + value_expression_primary + + AS + + + data_type + + ) + + + . + + + method_name + + + SQL_argument_list + + + + +
             ::= '(' value_expression_primary 'AS' data_type ')' '.' method_name SQL_argument_list?
    +
    + referenced by: + + method_invocation + + method_selection: + + + + + + + + routine_invocation + + + + +
             ::= routine_invocation
    +
    + no referencesconstructor_method_selection: + + + + + + + + routine_invocation + + + + +
             ::= routine_invocation
    +
    + no referencesstatic_method_invocation: + + + + + + + + path_resolved_user_defined_type_name + + :: + + + method_name + + + SQL_argument_list + + + + + + + referenced by: + + nonparenthesized_value_expression_primary + + static_method_selection: + + + + + + + + routine_invocation + + + + +
             ::= routine_invocation
    +
    + no referencesnew_specification: + + + + + + + + NEW + + + path_resolved_user_defined_type_name + + + SQL_argument_list + + + + + + + referenced by: + + nonparenthesized_value_expression_primary + + new_invocation: + + + + + + + + method_invocation + + + routine_invocation + + + + +
             ::= method_invocation
    +
               | routine_invocation
    +
    + no referencesattribute_or_method_reference: + + + + + + + + value_expression_primary + + -> + + + qualified_identifier + + + SQL_argument_list + + + + + + + referenced by: + + nonparenthesized_value_expression_primary + + dereference_operation: + + + + + + + + reference_value_expression + + -> + + + attribute_name + + + + +
             ::= reference_value_expression '->' attribute_name
    +
    + no referencesmethod_reference: + + + + + + + + value_expression_primary + + -> + + + method_name + + + SQL_argument_list + + + + + + + no referencesreference_resolution: + + + + + + + + DEREF + + + ( + + + reference_value_expression + + ) + + + + + +
             ::= 'DEREF' '(' reference_value_expression ')'
    +
    + referenced by: + + nonparenthesized_value_expression_primary + + array_element_reference: + + + + + + + + array_value_expression + + + left_bracket_or_trigraph + + + numeric_value_expression + + + right_bracket_or_trigraph + + + + + + + referenced by: + + nonparenthesized_value_expression_primary + + multiset_element_reference: + + + + + + + + ELEMENT + + + ( + + + multiset_value_expression + + ) + + + + + +
             ::= 'ELEMENT' '(' multiset_value_expression ')'
    +
    + referenced by: + + nonparenthesized_value_expression_primary + + row_pattern_navigation_operation: + + + + + + + + row_pattern_navigation__logical + + + row_pattern_navigation__physical + + + row_pattern_navigation__compound + + + + +
             ::= row_pattern_navigation__logical
    +
               | row_pattern_navigation__physical
    +
               | row_pattern_navigation__compound
    +
    + referenced by: + + nonparenthesized_value_expression_primary + + row_pattern_navigation__logical: + + + + + + + + running_or_final + + + first_or_last + + ( + + + value_expression + + , + + + logical_offset + + ) + + + + + +
             ::= running_or_final? first_or_last '(' value_expression ( ',' logical_offset )? ')'
    +
    + referenced by: + + row_pattern_navigation_operation + + row_pattern_navigation__physical: + + + + + + + + prev_or_next + + ( + + + value_expression + + , + + + physical_offset + + ) + + + + + +
             ::= prev_or_next '(' value_expression ( ',' physical_offset )? ')'
    +
    + referenced by: + + row_pattern_navigation_operation + + row_pattern_navigation__compound: + + + + + + + + prev_or_next + + ( + + + running_or_final + + + first_or_last + + ( + + + value_expression + + , + + + logical_offset + + ) + + + , + + + physical_offset + + ) + + + + + +
             ::= prev_or_next '(' running_or_final? first_or_last '(' value_expression ( ',' logical_offset )? ')' ( ',' physical_offset )? ')'
    +
    + referenced by: + + row_pattern_navigation_operation + + first_or_last: + + + + + + + + FIRST* + + + LAST* + + + + + +
             ::= 'FIRST*'
    +
               | 'LAST*'
    +
    + referenced by: + + row_pattern_navigation__compound + row_pattern_navigation__logical + + prev_or_next: + + + + + + + + PREV + + NEXT* + + + + + +
             ::= PREV
    +
               | 'NEXT*'
    +
    + referenced by: + + row_pattern_navigation__compound + row_pattern_navigation__physical + + logical_offset: + + + + + + + + simple_value_specification + + ? + + + + + +
             ::= simple_value_specification
    +
               | '?'
    +
    + referenced by: + + row_pattern_navigation__compound + row_pattern_navigation__logical + + physical_offset: + + + + + + + + simple_value_specification + + ? + + + + + +
             ::= simple_value_specification
    +
               | '?'
    +
    + referenced by: + + row_pattern_navigation__compound + row_pattern_navigation__physical + + JSON_value_function: + + + + + + + + JSON_VALUE + + + ( + + + JSON_API_common_syntax + + + JSON_returning_clause + + + JSON_value_empty_behavior + + ON + + + EMPTY + + + JSON_value_error_behavior + + ON + + + ERROR* + + + ) + + + + + +
             ::= 'JSON_VALUE' '(' JSON_API_common_syntax JSON_returning_clause? ( JSON_value_empty_behavior 'ON' 'EMPTY' )? ( JSON_value_error_behavior 'ON' 'ERROR*' )? ')'
    +
    + referenced by: + + nonparenthesized_value_expression_primary + + JSON_returning_clause: + + + + + + + + RETURNING* + + + data_type + + + + +
             ::= 'RETURNING*' data_type
    +
    + referenced by: + + JSON_value_function + + JSON_value_empty_behavior: + + + + + + + + ERROR* + + + NULL + + + DEFAULT + + + value_expression + + + + +
             ::= 'ERROR*'
    +
               | 'NULL'
    +
               | 'DEFAULT' value_expression
    +
    + referenced by: + + JSON_value_function + + JSON_value_error_behavior: + + + + + + + + ERROR* + + + NULL + + + DEFAULT + + + value_expression + + + + +
             ::= 'ERROR*'
    +
               | 'NULL'
    +
               | 'DEFAULT' value_expression
    +
    + referenced by: + + JSON_value_function + + value_expression: + + + + + + + + common_value_expression + + + boolean_value_expression + + + row_value_expression + + + + +
             ::= common_value_expression
    +
               | boolean_value_expression
    +
               | row_value_expression
    +
    + referenced by: + + JSON_table_column_empty_behavior + JSON_table_column_error_behavior + JSON_value_empty_behavior + JSON_value_error_behavior + JSON_value_expression + SQL_argument + array_aggregate_function + array_element + case_abbreviation + cast_operand + contextually_typed_row_value_constructor_element + cycle_mark_value + default_expression + derived_column + first_or_last_value_function + general_set_function + generalized_expression + generation_expression + hypothetical_set_function_value_expression_list + lead_or_lag_extent + merge_insert_value_element + multiset_element + named_argument_SQL_argument + non_cycle_mark_value + nth_value_function + parameter_default + parenthesized_value_expression + result_expression + return_value + row_pattern_measure_expression + row_pattern_navigation__compound + row_pattern_navigation__logical + row_pattern_navigation__physical + row_value_constructor_element + sort_key + subtype_operand + update_source + value_of_default_value + value_of_expression_at_row + + common_value_expression: + + + + + + + + numeric_value_expression + + + string_value_expression + + + datetime_value_expression + + + interval_value_expression + + + user_defined_type_value_expression + + + reference_value_expression + + + collection_value_expression + + + + +
             ::= numeric_value_expression
    +
               | string_value_expression
    +
               | datetime_value_expression
    +
               | interval_value_expression
    +
               | user_defined_type_value_expression
    +
               | reference_value_expression
    +
               | collection_value_expression
    +
    + referenced by: + + contextually_typed_row_value_constructor + row_value_constructor + row_value_constructor_predicand + value_expression + + user_defined_type_value_expression: + + + + + + + + value_expression_primary + + + + +
             ::= value_expression_primary
    +
    + referenced by: + + common_value_expression + specific_type_method + + reference_value_expression: + + + + + + + + value_expression_primary + + + + +
             ::= value_expression_primary
    +
    + referenced by: + + common_value_expression + dereference_operation + reference_resolution + + collection_value_expression: + + + + + + + + array_value_expression + + + multiset_value_expression + + + + +
             ::= array_value_expression
    +
               | multiset_value_expression
    +
    + referenced by: + + cardinality_expression + collection_derived_table + common_value_expression + table_function_derived_table + + numeric_value_expression: + + + + + + + + term + + + + + + - + + + + + +
             ::= term ( ( '+' | '-' ) term )*
    +
    + referenced by: + + absolute_value_expression + array_element_reference + ceiling_function + common_logarithm + common_value_expression + dependent_variable_expression + exponential_function + floor_function + general_logarithm_argument + general_logarithm_base + independent_variable_expression + inverse_distribution_function_argument + natural_logarithm + numeric_value_expression_base + numeric_value_expression_dividend + numeric_value_expression_divisor + numeric_value_expression_exponent + regex_capture_group + regex_occurrence + repeat_argument + sample_percentage + square_root + start_position + string_length + trigonometric_function + trim_array_function + width_bucket_bound_1 + width_bucket_bound_2 + width_bucket_count + width_bucket_operand + + term: + + + + + + + + factor + + * + + + / + + + + +
    term     ::= factor ( ( '*' | '/' ) factor )*
    +
    + referenced by: + + interval_term + numeric_value_expression + + factor: + + + + + + + + sign + + + numeric_primary + + + + + + referenced by: + + interval_term + term + + numeric_primary: + + + + + + + + value_expression_primary + + + numeric_value_function + + + + +
             ::= value_expression_primary
    +
               | numeric_value_function
    +
    + referenced by: + + factor + + numeric_value_function: + + + + + + + + position_expression + + + regex_occurrences_function + + + regex_position_expression + + + extract_expression + + + length_expression + + + cardinality_expression + + + max_cardinality_expression + + + absolute_value_expression + + + modulus_expression + + + trigonometric_function + + + general_logarithm_function + + + common_logarithm + + + natural_logarithm + + + exponential_function + + + power_function + + + square_root + + + floor_function + + + ceiling_function + + + width_bucket_function + + + match_number_function + + + + +
             ::= position_expression
    +
               | regex_occurrences_function
    +
               | regex_position_expression
    +
               | extract_expression
    +
               | length_expression
    +
               | cardinality_expression
    +
               | max_cardinality_expression
    +
               | absolute_value_expression
    +
               | modulus_expression
    +
               | trigonometric_function
    +
               | general_logarithm_function
    +
               | common_logarithm
    +
               | natural_logarithm
    +
               | exponential_function
    +
               | power_function
    +
               | square_root
    +
               | floor_function
    +
               | ceiling_function
    +
               | width_bucket_function
    +
               | match_number_function
    +
    + referenced by: + + numeric_primary + + position_expression: + + + + + + + + character_position_expression + + + binary_position_expression + + + + +
             ::= character_position_expression
    +
               | binary_position_expression
    +
    + referenced by: + + numeric_value_function + + regex_occurrences_function: + + + + + + + + OCCURRENCES_REGEX + + + ( + + + XQuery_pattern + + FLAG* + + + XQuery_option_flag + + IN + + + regex_subject_string + + FROM + + + start_position + + USING + + + char_length_units + + ) + + + + + +
             ::= 'OCCURRENCES_REGEX' '(' XQuery_pattern ( 'FLAG*' XQuery_option_flag )? 'IN' regex_subject_string ( 'FROM' start_position )? ( 'USING' char_length_units )? ')'
    +
    + referenced by: + + numeric_value_function + + XQuery_pattern: + + + + + + + + character_value_expression + + + + +
             ::= character_value_expression
    +
    + referenced by: + + regex_like_predicate_part_2 + regex_occurrences_function + regex_position_expression + regex_substring_function + regex_transliteration + + XQuery_option_flag: + + + + + + + + character_value_expression + + + + +
             ::= character_value_expression
    +
    + referenced by: + + regex_like_predicate_part_2 + regex_occurrences_function + regex_position_expression + regex_substring_function + regex_transliteration + + regex_subject_string: + + + + + + + + character_value_expression + + + + +
             ::= character_value_expression
    +
    + referenced by: + + regex_occurrences_function + regex_position_expression + regex_substring_function + regex_transliteration + + regex_position_expression: + + + + + + + + POSITION_REGEX + + + ( + + + regex_position_start_or_after + + + XQuery_pattern + + FLAG* + + + XQuery_option_flag + + IN + + + regex_subject_string + + FROM + + + start_position + + USING + + + char_length_units + + + OCCURRENCE + + + regex_occurrence + + GROUP + + + regex_capture_group + + ) + + + + + +
             ::= 'POSITION_REGEX' '(' regex_position_start_or_after? XQuery_pattern ( 'FLAG*' XQuery_option_flag )? 'IN' regex_subject_string ( 'FROM' start_position )? ( 'USING' char_length_units )? ( OCCURRENCE regex_occurrence )? ( 'GROUP' regex_capture_group )? ')'
    +
    + referenced by: + + numeric_value_function + + regex_position_start_or_after: + + + + + + + + START + + + AFTER* + + + + + +
             ::= 'START'
    +
               | 'AFTER*'
    +
    + referenced by: + + regex_position_expression + + regex_occurrence: + + + + + + + + numeric_value_expression + + + + +
             ::= numeric_value_expression
    +
    + referenced by: + + regex_position_expression + regex_substring_function + regex_transliteration_occurrence + + regex_capture_group: + + + + + + + + numeric_value_expression + + + + +
             ::= numeric_value_expression
    +
    + referenced by: + + regex_position_expression + regex_substring_function + + character_position_expression: + + + + + + + + POSITION + + + ( + + + character_value_expression_1 + + IN + + + character_value_expression_2 + + USING + + + char_length_units + + ) + + + + + +
             ::= 'POSITION' '(' character_value_expression_1 'IN' character_value_expression_2 ( 'USING' char_length_units )? ')'
    +
    + referenced by: + + position_expression + + character_value_expression_1: + + + + + + + + character_value_expression + + + + +
             ::= character_value_expression
    +
    + referenced by: + + character_position_expression + + character_value_expression_2: + + + + + + + + character_value_expression + + + + +
             ::= character_value_expression
    +
    + referenced by: + + character_position_expression + + binary_position_expression: + + + + + + + + POSITION + + + ( + + + binary_value_expression + + IN + + + binary_value_expression + + ) + + + + + +
             ::= 'POSITION' '(' binary_value_expression 'IN' binary_value_expression ')'
    +
    + referenced by: + + position_expression + + length_expression: + + + + + + + + char_length_expression + + + octet_length_expression + + + + +
             ::= char_length_expression
    +
               | octet_length_expression
    +
    + referenced by: + + numeric_value_function + + char_length_expression: + + + + + + + + CHAR_LENGTH + + + CHARACTER_LENGTH + + + ( + + + character_value_expression + + USING + + + char_length_units + + ) + + + + + +
             ::= ( 'CHAR_LENGTH' | 'CHARACTER_LENGTH' ) '(' character_value_expression ( 'USING' char_length_units )? ')'
    +
    + referenced by: + + length_expression + + octet_length_expression: + + + + + + + + OCTET_LENGTH + + + ( + + + string_value_expression + + ) + + + + + +
             ::= 'OCTET_LENGTH' '(' string_value_expression ')'
    +
    + referenced by: + + length_expression + + extract_expression: + + + + + + + + EXTRACT + + + ( + + + extract_field + + FROM + + + extract_source + + ) + + + + + +
             ::= 'EXTRACT' '(' extract_field 'FROM' extract_source ')'
    +
    + referenced by: + + numeric_value_function + + extract_field: + + + + + + + + primary_datetime_field + + + time_zone_field + + + + +
             ::= primary_datetime_field
    +
               | time_zone_field
    +
    + referenced by: + + extract_expression + + time_zone_field: + + + + + + + + TIMEZONE_HOUR + + + TIMEZONE_MINUTE + + + + + +
             ::= 'TIMEZONE_HOUR'
    +
               | 'TIMEZONE_MINUTE'
    +
    + referenced by: + + extract_field + + extract_source: + + + + + + + + datetime_value_expression + + + interval_value_expression + + + + +
             ::= datetime_value_expression
    +
               | interval_value_expression
    +
    + referenced by: + + extract_expression + + cardinality_expression: + + + + + + + + CARDINALITY + + + ( + + + collection_value_expression + + ) + + + + + +
             ::= 'CARDINALITY' '(' collection_value_expression ')'
    +
    + referenced by: + + numeric_value_function + + max_cardinality_expression: + + + + + + + + ARRAY_MAX_CARDINALITY + + + ( + + + array_value_expression + + ) + + + + + +
             ::= 'ARRAY_MAX_CARDINALITY' '(' array_value_expression ')'
    +
    + referenced by: + + numeric_value_function + + absolute_value_expression: + + + + + + + + ABS + + + ( + + + numeric_value_expression + + ) + + + + + +
             ::= 'ABS' '(' numeric_value_expression ')'
    +
    + referenced by: + + numeric_value_function + + modulus_expression: + + + + + + + + MOD + + + ( + + + numeric_value_expression_dividend + + , + + + numeric_value_expression_divisor + + ) + + + + + + + + referenced by: + + numeric_value_function + + numeric_value_expression_dividend: + + + + + + + + numeric_value_expression + + + + +
             ::= numeric_value_expression
    +
    + referenced by: + + modulus_expression + + numeric_value_expression_divisor: + + + + + + + + numeric_value_expression + + + + +
             ::= numeric_value_expression
    +
    + referenced by: + + modulus_expression + + trigonometric_function: + + + + + + + + trigonometric_function_name + + ( + + + numeric_value_expression + + ) + + + + + + + + referenced by: + + numeric_value_function + + trigonometric_function_name: + + + + + + + + SIN + + + COS + + + TAN + + + SINH + + + COSH + + + TANH + + + ASIN + + + ACOS + + + ATAN + + + + + +
             ::= 'SIN'
    +
               | 'COS'
    +
               | 'TAN'
    +
               | 'SINH'
    +
               | 'COSH'
    +
               | 'TANH'
    +
               | 'ASIN'
    +
               | 'ACOS'
    +
               | 'ATAN'
    +
    + referenced by: + + trigonometric_function + + general_logarithm_function: + + + + + + + + LOG + + + ( + + + general_logarithm_base + + , + + + general_logarithm_argument + + ) + + + + + +
             ::= 'LOG' '(' general_logarithm_base ',' general_logarithm_argument ')'
    +
    + referenced by: + + numeric_value_function + + general_logarithm_base: + + + + + + + + numeric_value_expression + + + + +
             ::= numeric_value_expression
    +
    + referenced by: + + general_logarithm_function + + general_logarithm_argument: + + + + + + + + numeric_value_expression + + + + +
             ::= numeric_value_expression
    +
    + referenced by: + + general_logarithm_function + + common_logarithm: + + + + + + + + LOG10 + + + ( + + + numeric_value_expression + + ) + + + + + +
             ::= 'LOG10' '(' numeric_value_expression ')'
    +
    + referenced by: + + numeric_value_function + + natural_logarithm: + + + + + + + + LN + + + ( + + + numeric_value_expression + + ) + + + + + +
             ::= 'LN' '(' numeric_value_expression ')'
    +
    + referenced by: + + numeric_value_function + + exponential_function: + + + + + + + + EXP + + + ( + + + numeric_value_expression + + ) + + + + + +
             ::= 'EXP' '(' numeric_value_expression ')'
    +
    + referenced by: + + numeric_value_function + + power_function: + + + + + + + + POWER + + + ( + + + numeric_value_expression_base + + , + + + numeric_value_expression_exponent + + ) + + + + + +
             ::= 'POWER' '(' numeric_value_expression_base ',' numeric_value_expression_exponent ')'
    +
    + referenced by: + + numeric_value_function + + numeric_value_expression_base: + + + + + + + + numeric_value_expression + + + + +
             ::= numeric_value_expression
    +
    + referenced by: + + power_function + + numeric_value_expression_exponent: + + + + + + + + numeric_value_expression + + + + +
             ::= numeric_value_expression
    +
    + referenced by: + + power_function + + square_root: + + + + + + + + SQRT + + + ( + + + numeric_value_expression + + ) + + + + + +
             ::= 'SQRT' '(' numeric_value_expression ')'
    +
    + referenced by: + + numeric_value_function + + floor_function: + + + + + + + + FLOOR + + + ( + + + numeric_value_expression + + ) + + + + + +
             ::= 'FLOOR' '(' numeric_value_expression ')'
    +
    + referenced by: + + numeric_value_function + + ceiling_function: + + + + + + + + CEIL + + + CEILING + + + ( + + + numeric_value_expression + + ) + + + + + +
             ::= ( 'CEIL' | 'CEILING' ) '(' numeric_value_expression ')'
    +
    + referenced by: + + numeric_value_function + + width_bucket_function: + + + + + + + + WIDTH_BUCKET + + + ( + + + width_bucket_operand + + , + + + width_bucket_bound_1 + + , + + + width_bucket_bound_2 + + , + + + width_bucket_count + + ) + + + + + +
             ::= 'WIDTH_BUCKET' '(' width_bucket_operand ',' width_bucket_bound_1 ',' width_bucket_bound_2 ',' width_bucket_count ')'
    +
    + referenced by: + + numeric_value_function + + width_bucket_operand: + + + + + + + + numeric_value_expression + + + + +
             ::= numeric_value_expression
    +
    + referenced by: + + width_bucket_function + + width_bucket_bound_1: + + + + + + + + numeric_value_expression + + + + +
             ::= numeric_value_expression
    +
    + referenced by: + + width_bucket_function + + width_bucket_bound_2: + + + + + + + + numeric_value_expression + + + + +
             ::= numeric_value_expression
    +
    + referenced by: + + width_bucket_function + + width_bucket_count: + + + + + + + + numeric_value_expression + + + + +
             ::= numeric_value_expression
    +
    + referenced by: + + width_bucket_function + + match_number_function: + + + + + + + + MATCH_NUMBER + + + ( + + + ) + + + + + +
             ::= 'MATCH_NUMBER' '(' ')'
    +
    + referenced by: + + numeric_value_function + + string_value_expression: + + + + + + + + character_value_expression + + + binary_value_expression + + + + +
             ::= character_value_expression
    +
               | binary_value_expression
    +
    + referenced by: + + JSON_predicate + common_value_expression + current_collation_specification + octet_length_expression + + character_value_expression: + + + + + + + + concatenation + + + character_factor + + + + +
             ::= concatenation
    +
               | character_factor
    +
    + referenced by: + + JSON_name + XQuery_option_flag + XQuery_pattern + XQuery_replacement_string + char_length_expression + character_overlay_function + character_pattern + character_substring_function + character_transliteration + character_value_expression_1 + character_value_expression_2 + concatenation + escape_character + fold + listagg_set_function + normalize_function + regex_subject_string + regular_expression_substring_function + similar_pattern + string_value_expression + transcoding + trim_character + trim_source + + concatenation: + + + + + + + + character_value_expression + + || + + + character_factor + + + + +
             ::= character_value_expression '||' character_factor
    +
    + referenced by: + + character_value_expression + + character_factor: + + + + + + + + character_primary + + + collate_clause + + + + +
             ::= character_primary collate_clause?
    +
    + referenced by: + + character_value_expression + concatenation + + character_primary: + + + + + + + + value_expression_primary + + + string_value_function + + + + +
             ::= value_expression_primary
    +
               | string_value_function
    +
    + referenced by: + + character_factor + + binary_value_expression: + + + + + + + + binary_concatenation + + + binary_factor + + + + +
             ::= binary_concatenation
    +
               | binary_factor
    +
    + referenced by: + + binary_concatenation + binary_overlay_function + binary_position_expression + binary_substring_function + binary_trim_source + escape_octet + octet_pattern + string_value_expression + trim_octet + + binary_factor: + + + + + + + + binary_primary + + + + +
             ::= binary_primary
    +
    + referenced by: + + binary_concatenation + binary_value_expression + + binary_primary: + + + + + + + + value_expression_primary + + + string_value_function + + + + +
             ::= value_expression_primary
    +
               | string_value_function
    +
    + referenced by: + + binary_factor + + binary_concatenation: + + + + + + + + binary_value_expression + + || + + + binary_factor + + + + +
             ::= binary_value_expression '||' binary_factor
    +
    + referenced by: + + binary_value_expression + + string_value_function: + + + + + + + + character_value_function + + + binary_value_function + + + JSON_value_constructor + + + JSON_query + + + + +
             ::= character_value_function
    +
               | binary_value_function
    +
               | JSON_value_constructor
    +
               | JSON_query
    +
    + referenced by: + + binary_primary + character_primary + + character_value_function: + + + + + + + + character_substring_function + + + regular_expression_substring_function + + + regex_substring_function + + + fold + + + transcoding + + + character_transliteration + + + regex_transliteration + + + trim_function + + + character_overlay_function + + + normalize_function + + + specific_type_method + + + classifier_function + + + + +
             ::= character_substring_function
    + +
               | regex_substring_function
    +
               | fold
    +
               | transcoding
    +
               | character_transliteration
    +
               | regex_transliteration
    +
               | trim_function
    +
               | character_overlay_function
    +
               | normalize_function
    +
               | specific_type_method
    +
               | classifier_function
    +
    + referenced by: + + string_value_function + + character_substring_function: + + + + + + + + SUBSTRING + + + ( + + + character_value_expression + + FROM + + + start_position + + FOR + + + string_length + + USING + + + char_length_units + + ) + + + + + +
             ::= 'SUBSTRING' '(' character_value_expression 'FROM' start_position ( 'FOR' string_length )? ( 'USING' char_length_units )? ')'
    +
    + referenced by: + + character_value_function + + regular_expression_substring_function: + + + + + + + + SUBSTRING + + + ( + + + character_value_expression + + SIMILAR + + + character_value_expression + + ESCAPE + + + escape_character + + ) + + + + + +
             ::= 'SUBSTRING' '(' character_value_expression 'SIMILAR' character_value_expression 'ESCAPE' escape_character ')'
    +
    + referenced by: + + character_value_function + + regex_substring_function: + + + + + + + + SUBSTRING_REGEX + + + ( + + + XQuery_pattern + + FLAG* + + + XQuery_option_flag + + IN + + + regex_subject_string + + FROM + + + start_position + + USING + + + char_length_units + + + OCCURRENCE + + + regex_occurrence + + GROUP + + + regex_capture_group + + ) + + + + + +
             ::= 'SUBSTRING_REGEX' '(' XQuery_pattern ( 'FLAG*' XQuery_option_flag )? 'IN' regex_subject_string ( 'FROM' start_position )? ( 'USING' char_length_units )? ( OCCURRENCE regex_occurrence )? ( 'GROUP' regex_capture_group )? ')'
    +
    + referenced by: + + character_value_function + + fold: + + + + + + + + UPPER + + + LOWER + + + ( + + + character_value_expression + + ) + + + + +
    fold     ::= ( 'UPPER' | 'LOWER' ) '(' character_value_expression ')'
    +
    + referenced by: + + character_value_function + + transcoding: + + + + + + + + CONVERT + + + ( + + + character_value_expression + + USING + + + transcoding_name + + ) + + + + + +
             ::= 'CONVERT' '(' character_value_expression 'USING' transcoding_name ')'
    +
    + referenced by: + + character_value_function + + character_transliteration: + + + + + + + + TRANSLATE + + + ( + + + character_value_expression + + USING + + + transliteration_name + + ) + + + + + +
             ::= 'TRANSLATE' '(' character_value_expression 'USING' transliteration_name ')'
    +
    + referenced by: + + character_value_function + + regex_transliteration: + + + + + + + + TRANSLATE_REGEX + + + ( + + + XQuery_pattern + + FLAG* + + + XQuery_option_flag + + IN + + + regex_subject_string + + WITH + + + XQuery_replacement_string + + FROM + + + start_position + + USING + + + char_length_units + + + OCCURRENCE + + + regex_transliteration_occurrence + + ) + + + + + +
             ::= 'TRANSLATE_REGEX' '(' XQuery_pattern ( 'FLAG*' XQuery_option_flag )? 'IN' regex_subject_string ( 'WITH' XQuery_replacement_string )? ( 'FROM' start_position )? ( 'USING' char_length_units )? ( OCCURRENCE regex_transliteration_occurrence )? ')'
    +
    + referenced by: + + character_value_function + + XQuery_replacement_string: + + + + + + + + character_value_expression + + + + +
             ::= character_value_expression
    +
    + referenced by: + + regex_transliteration + + regex_transliteration_occurrence: + + + + + + + + regex_occurrence + + ALL + + + + + +
             ::= regex_occurrence
    +
               | 'ALL'
    +
    + referenced by: + + regex_transliteration + + trim_function: + + + + + + + + TRIM + + + ( + + + trim_operands + + ) + + + + + +
             ::= 'TRIM' '(' trim_operands ')'
    +
    + referenced by: + + character_value_function + + trim_operands: + + + + + + + + trim_specification + + + trim_character + + FROM + + + trim_source + + + + +
             ::= ( trim_specification? trim_character? 'FROM' )? trim_source
    +
    + referenced by: + + trim_function + + trim_source: + + + + + + + + character_value_expression + + + + +
             ::= character_value_expression
    +
    + referenced by: + + trim_operands + + trim_specification: + + + + + + + + LEADING + + + TRAILING + + + BOTH + + + + + +
             ::= 'LEADING'
    +
               | 'TRAILING'
    +
               | 'BOTH'
    +
    + referenced by: + + binary_trim_operands + trim_operands + + trim_character: + + + + + + + + character_value_expression + + + + +
             ::= character_value_expression
    +
    + referenced by: + + trim_operands + + character_overlay_function: + + + + + + + + OVERLAY + + + ( + + + character_value_expression + + PLACING* + + + character_value_expression + + FROM + + + start_position + + FOR + + + string_length + + USING + + + char_length_units + + ) + + + + + +
             ::= 'OVERLAY' '(' character_value_expression 'PLACING*' character_value_expression 'FROM' start_position ( 'FOR' string_length )? ( 'USING' char_length_units )? ')'
    +
    + referenced by: + + character_value_function + + normalize_function: + + + + + + + + NORMALIZE + + + ( + + + character_value_expression + + , + + + normal_form + + , + + + normalize_function_result_length + + ) + + + + + +
             ::= 'NORMALIZE' '(' character_value_expression ( ',' normal_form ( ',' normalize_function_result_length )? )? ')'
    +
    + referenced by: + + character_value_function + + normal_form: + + + + + + + + NFC* + + + NFD* + + + NFKC* + + + NFKD* + + + + + +
             ::= 'NFC*'
    +
               | 'NFD*'
    +
               | 'NFKC*'
    +
               | 'NFKD*'
    +
    + referenced by: + + normalize_function + normalized_predicate_part_2 + + normalize_function_result_length: + + + + + + + + character_length + + + character_large_object_length + + + + +
             ::= character_length
    +
               | character_large_object_length
    +
    + referenced by: + + normalize_function + + specific_type_method: + + + + + + + + user_defined_type_value_expression + + . + + + SPECIFICTYPE + + + ( + + + ) + + + + + +
             ::= user_defined_type_value_expression '.' 'SPECIFICTYPE' ( '(' ')' )?
    +
    + referenced by: + + character_value_function + + binary_value_function: + + + + + + + + binary_substring_function + + + binary_trim_function + + + binary_overlay_function + + + + +
             ::= binary_substring_function
    +
               | binary_trim_function
    +
               | binary_overlay_function
    +
    + referenced by: + + string_value_function + + binary_substring_function: + + + + + + + + SUBSTRING + + + ( + + + binary_value_expression + + FROM + + + start_position + + FOR + + + string_length + + ) + + + + + +
             ::= 'SUBSTRING' '(' binary_value_expression 'FROM' start_position ( 'FOR' string_length )? ')'
    +
    + referenced by: + + binary_value_function + + binary_trim_function: + + + + + + + + TRIM + + + ( + + + binary_trim_operands + + ) + + + + + +
             ::= 'TRIM' '(' binary_trim_operands ')'
    +
    + referenced by: + + binary_value_function + + binary_trim_operands: + + + + + + + + trim_specification + + + trim_octet + + FROM + + + binary_trim_source + + + + +
             ::= ( trim_specification? trim_octet? 'FROM' )? binary_trim_source
    +
    + referenced by: + + binary_trim_function + + binary_trim_source: + + + + + + + + binary_value_expression + + + + +
             ::= binary_value_expression
    +
    + referenced by: + + binary_trim_operands + + trim_octet: + + + + + + + + binary_value_expression + + + + +
             ::= binary_value_expression
    +
    + referenced by: + + binary_trim_operands + + binary_overlay_function: + + + + + + + + OVERLAY + + + ( + + + binary_value_expression + + PLACING* + + + binary_value_expression + + FROM + + + start_position + + FOR + + + string_length + + ) + + + + + +
             ::= 'OVERLAY' '(' binary_value_expression 'PLACING*' binary_value_expression 'FROM' start_position ( 'FOR' string_length )? ')'
    +
    + referenced by: + + binary_value_function + + start_position: + + + + + + + + numeric_value_expression + + + + +
             ::= numeric_value_expression
    +
    + referenced by: + + binary_overlay_function + binary_substring_function + character_overlay_function + character_substring_function + regex_occurrences_function + regex_position_expression + regex_substring_function + regex_transliteration + + string_length: + + + + + + + + numeric_value_expression + + + + +
             ::= numeric_value_expression
    +
    + referenced by: + + binary_overlay_function + binary_substring_function + character_overlay_function + character_substring_function + + classifier_function: + + + + + + + + CLASSIFIER + + + ( + + + row_pattern_variable_name + + ) + + + + + +
             ::= 'CLASSIFIER' '(' row_pattern_variable_name? ')'
    +
    + referenced by: + + character_value_function + + JSON_value_constructor: + + + + + + + + JSON_object_constructor + + + JSON_array_constructor + + + + +
             ::= JSON_object_constructor
    +
               | JSON_array_constructor
    +
    + referenced by: + + string_value_function + + JSON_object_constructor: + + + + + + + + JSON_OBJECT + + + ( + + + JSON_name_and_value + + , + + + JSON_constructor_null_clause + + + JSON_key_uniqueness_constraint + + + JSON_output_clause + + ) + + + + + + + + referenced by: + + JSON_value_constructor + + JSON_name_and_value: + + + + + + + + KEY* + + + JSON_name + + VALUE + + + JSON_name + + : + + + JSON_value_expression + + + + +
             ::= ( 'KEY*'? JSON_name 'VALUE' | JSON_name ':' ) JSON_value_expression
    +
    + referenced by: + + JSON_object_aggregate_constructor + JSON_object_constructor + + JSON_name: + + + + + + + + character_value_expression + + + + +
             ::= character_value_expression
    +
    + referenced by: + + JSON_name_and_value + + JSON_constructor_null_clause: + + + + + + + + NULL + + + ABSENT + + ON + + + NULL + + + + + +
             ::= ( 'NULL' | ABSENT ) 'ON' 'NULL'
    +
    + referenced by: + + JSON_array_aggregate_constructor + JSON_array_constructor_by_enumeration + JSON_array_constructor_by_query + JSON_object_aggregate_constructor + JSON_object_constructor + + JSON_array_constructor: + + + + + + + + JSON_array_constructor_by_enumeration + + + JSON_array_constructor_by_query + + + + + +
               | JSON_array_constructor_by_query
    +
    + referenced by: + + JSON_value_constructor + + JSON_array_constructor_by_enumeration: + + + + + + + + JSON_ARRAY + + + ( + + + JSON_value_expression + + , + + + JSON_constructor_null_clause + + + JSON_output_clause + + ) + + + + + +
             ::= 'JSON_ARRAY' '(' ( JSON_value_expression ( ',' JSON_value_expression )* JSON_constructor_null_clause? )? JSON_output_clause? ')'
    +
    + referenced by: + + JSON_array_constructor + + JSON_array_constructor_by_query: + + + + + + + + JSON_ARRAY + + + ( + + + query_expression + + + JSON_input_clause + + + JSON_constructor_null_clause + + + JSON_output_clause + + ) + + + + + + + + referenced by: + + JSON_array_constructor + + JSON_query: + + + + + + + + JSON_QUERY + + + ( + + + JSON_API_common_syntax + + + JSON_output_clause + + + JSON_query_wrapper_behavior + + WRAPPER* + + + JSON_query_quotes_behavior + + QUOTES* + + + ON + + + SCALAR* + + + STRING* + + + JSON_query_empty_behavior + + ON + + + EMPTY + + + JSON_query_error_behavior + + ON + + + ERROR* + + + ) + + + + + +
             ::= 'JSON_QUERY' '(' JSON_API_common_syntax JSON_output_clause? ( JSON_query_wrapper_behavior 'WRAPPER*' )? ( JSON_query_quotes_behavior 'QUOTES*' ( 'ON' 'SCALAR*' 'STRING*' )? )? ( JSON_query_empty_behavior 'ON' 'EMPTY' )? ( JSON_query_error_behavior 'ON' 'ERROR*' )? ')'
    +
    + referenced by: + + string_value_function + + JSON_query_wrapper_behavior: + + + + + + + + WITHOUT + + + WITH + + + CONDITIONAL* + + + UNCONDITIONAL* + + + ARRAY + + + + + +
             ::= ( 'WITHOUT' | 'WITH' ( 'CONDITIONAL*' | 'UNCONDITIONAL*' )? ) 'ARRAY'?
    +
    + referenced by: + + JSON_query + + JSON_query_quotes_behavior: + + + + + + + + KEEP* + + + OMIT + + + + + +
             ::= 'KEEP*'
    +
               | 'OMIT'
    +
    + referenced by: + + JSON_query + + JSON_query_empty_behavior: + + + + + + + + ERROR* + + + NULL + + + EMPTY + + + ARRAY + + + OBJECT* + + + + + +
             ::= 'ERROR*'
    +
               | 'NULL'
    +
               | 'EMPTY' ( 'ARRAY' | 'OBJECT*' )
    +
    + referenced by: + + JSON_query + + JSON_query_error_behavior: + + + + + + + + ERROR* + + + NULL + + + EMPTY + + + ARRAY + + + OBJECT* + + + + + +
             ::= 'ERROR*'
    +
               | 'NULL'
    +
               | 'EMPTY' ( 'ARRAY' | 'OBJECT*' )
    +
    + referenced by: + + JSON_query + + datetime_value_expression: + + + + + + + + interval_value_expression + + + + + + datetime_term + + + + + + - + + + interval_term + + + + +
             ::= ( interval_value_expression '+' )? datetime_term ( ( '+' | '-' ) interval_term )*
    +
    + referenced by: + + common_value_expression + extract_source + interval_value_expression + period_end_value + period_or_point_in_time_predicand + period_start_value + point_in_time + + datetime_term: + + + + + + + + datetime_factor + + + + +
             ::= datetime_factor
    +
    + referenced by: + + datetime_value_expression + interval_value_expression + + datetime_factor: + + + + + + + + datetime_primary + + + time_zone + + + + +
             ::= datetime_primary time_zone?
    +
    + referenced by: + + datetime_term + + datetime_primary: + + + + + + + + value_expression_primary + + + datetime_value_function + + + + +
             ::= value_expression_primary
    +
               | datetime_value_function
    +
    + referenced by: + + datetime_factor + + time_zone: + + + + + + + + AT + + + time_zone_specifier + + + + +
             ::= 'AT' time_zone_specifier
    +
    + referenced by: + + datetime_factor + + time_zone_specifier: + + + + + + + + LOCAL + + + TIME + + + ZONE* + + + interval_primary + + + + +
             ::= 'LOCAL'
    +
               | 'TIME' 'ZONE*' interval_primary
    +
    + referenced by: + + time_zone + + datetime_value_function: + + + + + + + + CURRENT_DATE + + + current_time_value_function + + + current_timestamp_value_function + + + current_local_time_value_function + + + current_local_timestamp_value_function + + + + +
             ::= 'CURRENT_DATE'
    +
               | current_time_value_function
    +
               | current_timestamp_value_function
    +
               | current_local_time_value_function
    +
    +
    + referenced by: + + datetime_primary + default_option + + current_time_value_function: + + + + + + + + CURRENT_TIME + + + ( + + + time_precision + + ) + + + + + +
             ::= 'CURRENT_TIME' ( '(' time_precision ')' )?
    +
    + referenced by: + + datetime_value_function + + current_local_time_value_function: + + + + + + + + LOCALTIME + + + ( + + + time_precision + + ) + + + + + +
             ::= 'LOCALTIME' ( '(' time_precision ')' )?
    +
    + referenced by: + + datetime_value_function + + current_timestamp_value_function: + + + + + + + + CURRENT_TIMESTAMP + + + ( + + + timestamp_precision + + ) + + + + + +
             ::= 'CURRENT_TIMESTAMP' ( '(' timestamp_precision ')' )?
    +
    + referenced by: + + datetime_value_function + + current_local_timestamp_value_function: + + + + + + + + LOCALTIMESTAMP + + + ( + + + timestamp_precision + + ) + + + + + +
             ::= 'LOCALTIMESTAMP' ( '(' timestamp_precision ')' )?
    +
    + referenced by: + + datetime_value_function + + interval_value_expression: + + + + + + + + interval_term + + + interval_value_expression_1 + + + + + + - + + + interval_term_1 + + ( + + + datetime_value_expression + + - + + + datetime_term + + ) + + + interval_qualifier + + + + +
             ::= interval_term
    +
               | interval_value_expression_1 ( '+' | '-' ) interval_term_1
    +
               | '(' datetime_value_expression '-' datetime_term ')' interval_qualifier
    +
    + referenced by: + + common_value_expression + datetime_value_expression + extract_source + interval_absolute_value_function + interval_value_expression_1 + set_time_zone_value + + interval_term: + + + + + + + + term + + * + + + interval_factor + + + interval_term_2 + + * + + + / + + + factor + + + + +
             ::= ( term '*' )? interval_factor
    +
               | interval_term_2 ( '*' | '/' ) factor
    +
    + referenced by: + + datetime_value_expression + interval_term_1 + interval_term_2 + interval_value_expression + + interval_factor: + + + + + + + + sign + + + interval_primary + + + + +
             ::= sign? interval_primary
    +
    + referenced by: + + interval_term + + interval_primary: + + + + + + + + value_expression_primary + + + interval_qualifier + + + interval_value_function + + + + + +
               | interval_value_function
    +
    + referenced by: + + interval_factor + time_zone_specifier + + interval_value_expression_1: + + + + + + + + interval_value_expression + + + + +
             ::= interval_value_expression
    +
    + referenced by: + + interval_value_expression + + interval_term_1: + + + + + + + + interval_term + + + + +
             ::= interval_term
    +
    + referenced by: + + interval_value_expression + + interval_term_2: + + + + + + + + interval_term + + + + +
             ::= interval_term
    +
    + referenced by: + + interval_term + + interval_value_function: + + + + + + + + interval_absolute_value_function + + + + +
             ::= interval_absolute_value_function
    +
    + referenced by: + + interval_primary + + interval_absolute_value_function: + + + + + + + + ABS + + + ( + + + interval_value_expression + + ) + + + + + +
             ::= 'ABS' '(' interval_value_expression ')'
    +
    + referenced by: + + interval_value_function + + boolean_value_expression: + + + + + + + + boolean_term + + OR + + + + + +
             ::= boolean_term ( 'OR' boolean_term )*
    +
    + referenced by: + + contextually_typed_row_value_constructor + parenthesized_boolean_value_expression + row_value_constructor + search_condition + value_expression + + boolean_term: + + + + + + + + boolean_factor + + AND + + + + + +
             ::= boolean_factor ( 'AND' boolean_factor )*
    +
    + referenced by: + + boolean_value_expression + + boolean_factor: + + + + + + + + NOT + + + boolean_test + + + + +
             ::= 'NOT'? boolean_test
    +
    + referenced by: + + boolean_term + + boolean_test: + + + + + + + + boolean_primary + + IS + + + NOT + + + truth_value + + + + +
             ::= boolean_primary ( 'IS' 'NOT'? truth_value )?
    +
    + referenced by: + + boolean_factor + + truth_value: + + + + + + + + TRUE + + + FALSE + + + UNKNOWN + + + + + +
             ::= 'TRUE'
    +
               | 'FALSE'
    +
               | 'UNKNOWN'
    +
    + referenced by: + + boolean_test + + boolean_primary: + + + + + + + + predicate + + + boolean_predicand + + + + +
             ::= predicate
    +
               | boolean_predicand
    +
    + referenced by: + + boolean_test + + boolean_predicand: + + + + + + + + parenthesized_boolean_value_expression + + + nonparenthesized_value_expression_primary + + + + + + + + referenced by: + + boolean_primary + row_value_constructor_predicand + + parenthesized_boolean_value_expression: + + + + + + + + ( + + + boolean_value_expression + + ) + + + + + +
             ::= '(' boolean_value_expression ')'
    +
    + referenced by: + + boolean_predicand + + array_value_expression: + + + + + + + + array_concatenation + + + array_primary + + + + +
             ::= array_concatenation
    +
               | array_primary
    +
    + referenced by: + + array_element_reference + array_value_expression_1 + collection_value_expression + max_cardinality_expression + trim_array_function + + array_concatenation: + + + + + + + + array_value_expression_1 + + || + + + array_primary + + + + +
             ::= array_value_expression_1 '||' array_primary
    +
    + referenced by: + + array_value_expression + + array_value_expression_1: + + + + + + + + array_value_expression + + + + +
             ::= array_value_expression
    +
    + referenced by: + + array_concatenation + + array_primary: + + + + + + + + array_value_function + + + value_expression_primary + + + + +
             ::= array_value_function
    +
               | value_expression_primary
    +
    + referenced by: + + array_concatenation + array_value_expression + + array_value_function: + + + + + + + + trim_array_function + + + + +
             ::= trim_array_function
    +
    + referenced by: + + array_primary + + trim_array_function: + + + + + + + + TRIM_ARRAY + + + ( + + + array_value_expression + + , + + + numeric_value_expression + + ) + + + + + +
             ::= 'TRIM_ARRAY' '(' array_value_expression ',' numeric_value_expression ')'
    +
    + referenced by: + + array_value_function + + array_value_constructor: + + + + + + + + array_value_constructor_by_enumeration + + + array_value_constructor_by_query + + + + + +
               | array_value_constructor_by_query
    +
    + referenced by: + + collection_value_constructor + + array_value_constructor_by_enumeration: + + + + + + + + ARRAY + + + left_bracket_or_trigraph + + + array_element_list + + + right_bracket_or_trigraph + + + + + + + referenced by: + + array_value_constructor + + array_element_list: + + + + + + + + array_element + + , + + + + + +
             ::= array_element ( ',' array_element )*
    +
    + referenced by: + + array_value_constructor_by_enumeration + + array_element: + + + + + + + + value_expression + + + + +
             ::= value_expression
    +
    + referenced by: + + array_element_list + + array_value_constructor_by_query: + + + + + + + + ARRAY + + + table_subquery + + + + +
             ::= 'ARRAY' table_subquery
    +
    + referenced by: + + array_value_constructor + + multiset_value_expression: + + + + + + + + multiset_term + + ALL + + + DISTINCT + + + UNION + + + EXCEPT + + + MULTISET + + + + + +
             ::= multiset_term ( 'MULTISET' ( 'UNION' | 'EXCEPT' ) ( 'ALL' | 'DISTINCT' )? multiset_term )*
    +
    + referenced by: + + collection_value_expression + member_predicate_part_2 + multiset_element_reference + multiset_set_function + submultiset_predicate_part_2 + + multiset_term: + + + + + + + + multiset_primary + + ALL + + + DISTINCT + + + INTERSECT + + + MULTISET + + + + + +
             ::= multiset_primary ( 'MULTISET' 'INTERSECT' ( 'ALL' | 'DISTINCT' )? multiset_primary )*
    +
    + referenced by: + + multiset_value_expression + + multiset_primary: + + + + + + + + multiset_value_function + + + value_expression_primary + + + + +
             ::= multiset_value_function
    +
               | value_expression_primary
    +
    + referenced by: + + multiset_term + + multiset_value_function: + + + + + + + + multiset_set_function + + + + +
             ::= multiset_set_function
    +
    + referenced by: + + multiset_primary + + multiset_set_function: + + + + + + + + SET + + + ( + + + multiset_value_expression + + ) + + + + + +
             ::= 'SET' '(' multiset_value_expression ')'
    +
    + referenced by: + + multiset_value_function + + multiset_value_constructor: + + + + + + + + multiset_value_constructor_by_enumeration + + + multiset_value_constructor_by_query + + + table_value_constructor_by_query + + + + + +
               | multiset_value_constructor_by_query
    +
               | table_value_constructor_by_query
    +
    + referenced by: + + collection_value_constructor + + multiset_value_constructor_by_enumeration: + + + + + + + + MULTISET + + + left_bracket_or_trigraph + + + multiset_element_list + + + right_bracket_or_trigraph + + + + + + + referenced by: + + multiset_value_constructor + + multiset_element_list: + + + + + + + + multiset_element + + , + + + + + +
             ::= multiset_element ( ',' multiset_element )*
    +
    + referenced by: + + multiset_value_constructor_by_enumeration + + multiset_element: + + + + + + + + value_expression + + + + +
             ::= value_expression
    +
    + referenced by: + + multiset_element_list + + multiset_value_constructor_by_query: + + + + + + + + MULTISET + + + table_subquery + + + + +
             ::= 'MULTISET' table_subquery
    +
    + referenced by: + + multiset_value_constructor + + table_value_constructor_by_query: + + + + + + + + TABLE + + + table_subquery + + + + +
             ::= 'TABLE' table_subquery
    +
    + referenced by: + + multiset_value_constructor + + row_value_constructor: + + + + + + + + common_value_expression + + + boolean_value_expression + + + explicit_row_value_constructor + + + + +
             ::= common_value_expression
    +
               | boolean_value_expression
    +
               | explicit_row_value_constructor
    +
    + referenced by: + + table_row_value_expression + + explicit_row_value_constructor: + + + + + + + + ( + + + row_value_constructor_element + + , + + + ROW + + + ( + + + row_value_constructor_element_list + + ) + + + row_subquery + + + + +
             ::= ( '(' row_value_constructor_element ',' | 'ROW' '(' ) row_value_constructor_element_list ')'
    +
               | row_subquery
    +
    + referenced by: + + row_value_constructor + row_value_constructor_predicand + row_value_expression + + row_value_constructor_element_list: + + + + + + + + row_value_constructor_element + + , + + + + + + + + referenced by: + + explicit_row_value_constructor + + row_value_constructor_element: + + + + + + + + value_expression + + + + +
             ::= value_expression
    +
    + referenced by: + + explicit_row_value_constructor + row_value_constructor_element_list + + contextually_typed_row_value_constructor: + + + + + + + + common_value_expression + + + boolean_value_expression + + + contextually_typed_value_specification + + ( + + + contextually_typed_value_specification + + + contextually_typed_row_value_constructor_element + + , + + + contextually_typed_row_value_constructor_element_list + + ROW + + + ( + + + contextually_typed_row_value_constructor_element_list + + ) + + + + + +
             ::= common_value_expression
    +
               | boolean_value_expression
    + +
    +
    + referenced by: + + contextually_typed_row_value_expression + + contextually_typed_row_value_constructor_element_list: + + + + + + + + contextually_typed_row_value_constructor_element + + , + + + + + + + + referenced by: + + contextually_typed_row_value_constructor + + contextually_typed_row_value_constructor_element: + + + + + + + + value_expression + + + contextually_typed_value_specification + + + + +
             ::= value_expression
    +
    +
    + referenced by: + + contextually_typed_row_value_constructor + contextually_typed_row_value_constructor_element_list + + row_value_constructor_predicand: + + + + + + + + common_value_expression + + + boolean_predicand + + + explicit_row_value_constructor + + + + +
             ::= common_value_expression
    +
               | boolean_predicand
    +
               | explicit_row_value_constructor
    +
    + referenced by: + + row_value_predicand + + row_value_expression: + + + + + + + + row_value_special_case + + + explicit_row_value_constructor + + + + +
             ::= row_value_special_case
    +
               | explicit_row_value_constructor
    +
    + referenced by: + + in_value_list + value_expression + + table_row_value_expression: + + + + + + + + row_value_special_case + + + row_value_constructor + + + + +
             ::= row_value_special_case
    +
               | row_value_constructor
    +
    + referenced by: + + row_value_expression_list + + contextually_typed_row_value_expression: + + + + + + + + row_value_special_case + + + contextually_typed_row_value_constructor + + + + +
             ::= row_value_special_case
    +
    +
    + referenced by: + + assigned_row + contextually_typed_row_value_expression_list + + row_value_predicand: + + + + + + + + row_value_special_case + + + row_value_constructor_predicand + + + + +
             ::= row_value_special_case
    +
               | row_value_constructor_predicand
    +
    + referenced by: + + between_predicate + between_predicate_part_2 + case_operand + character_like_predicate + comparison_predicate + comparison_predicate_part_2 + in_predicate + match_predicate + member_predicate + normalized_predicate + null_predicate + octet_like_predicate + quantified_comparison_predicate + regex_like_predicate + row_value_predicand_1 + row_value_predicand_2 + row_value_predicand_3 + row_value_predicand_4 + set_predicate + similar_predicate + submultiset_predicate + type_predicate + when_operand + + row_value_special_case: + + + + + + + + nonparenthesized_value_expression_primary + + + + + + + referenced by: + + contextually_typed_row_value_expression + row_value_expression + row_value_predicand + table_row_value_expression + + table_value_constructor: + + + + + + + + VALUES + + + row_value_expression_list + + + + +
             ::= 'VALUES' row_value_expression_list
    +
    + referenced by: + + simple_table + + row_value_expression_list: + + + + + + + + table_row_value_expression + + , + + + + + + + + referenced by: + + table_value_constructor + + contextually_typed_table_value_constructor: + + + + + + + + VALUES + + + contextually_typed_row_value_expression_list + + + + +
             ::= 'VALUES' contextually_typed_row_value_expression_list
    +
    + referenced by: + + from_constructor + + contextually_typed_row_value_expression_list: + + + + + + + + contextually_typed_row_value_expression + + , + + + + + + + + referenced by: + + contextually_typed_table_value_constructor + + table_expression: + + + + + + + + from_clause + + + where_clause + + + group_by_clause + + + having_clause + + + window_clause + + + + + + + referenced by: + + query_specification + select_statement__single_row + + from_clause: + + + + + + + + FROM + + + table_reference_list + + + + +
             ::= 'FROM' table_reference_list
    +
    + referenced by: + + table_expression + + table_reference_list: + + + + + + + + table_reference + + , + + + + + +
             ::= table_reference ( ',' table_reference )*
    +
    + referenced by: + + from_clause + + table_reference: + + + + + + + + table_factor + + + joined_table + + + + +
             ::= table_factor
    +
               | joined_table
    +
    + referenced by: + + cross_join + merge_statement + natural_join + qualified_join + table_reference_list + + table_factor: + + + + + + + + table_primary + + + sample_clause + + + + +
             ::= table_primary sample_clause?
    +
    + referenced by: + + cross_join + natural_join + partitioned_join_table + table_reference + + sample_clause: + + + + + + + + TABLESAMPLE + + + sample_method + + ( + + + sample_percentage + + ) + + + repeatable_clause + + + + +
             ::= 'TABLESAMPLE' sample_method '(' sample_percentage ')' repeatable_clause?
    +
    + referenced by: + + table_factor + + sample_method: + + + + + + + + BERNOULLI* + + + SYSTEM + + + + + +
             ::= 'BERNOULLI*'
    +
               | 'SYSTEM'
    +
    + referenced by: + + sample_clause + + repeatable_clause: + + + + + + + + REPEATABLE* + + + ( + + + repeat_argument + + ) + + + + + +
             ::= 'REPEATABLE*' '(' repeat_argument ')'
    +
    + referenced by: + + sample_clause + + sample_percentage: + + + + + + + + numeric_value_expression + + + + +
             ::= numeric_value_expression
    +
    + referenced by: + + sample_clause + + repeat_argument: + + + + + + + + numeric_value_expression + + + + +
             ::= numeric_value_expression
    +
    + referenced by: + + repeatable_clause + + table_primary: + + + + + + + + table_or_query_name + + + query_system_time_period_specification + + + PTF_derived_table + + + only_spec + + + data_change_delta_table + + + correlation_or_recognition + + + derived_table + + + lateral_derived_table + + + collection_derived_table + + + table_function_derived_table + + + JSON_table + + + correlation_or_recognition + + + JSON_table_primitive + + + correlation_name + + + parenthesized_joined_table + + + + + + +
               | JSON_table_primitive correlation_name
    +
               | parenthesized_joined_table
    +
    + referenced by: + + table_factor + + correlation_or_recognition: + + + + + + + + AS + + + correlation_name + + + parenthesized_derived_column_list + + + row_pattern_recognition_clause_and_name + + + + + + + + referenced by: + + table_primary + + query_system_time_period_specification: + + + + + + + + FOR + + + SYSTEM_TIME + + + AS + + + OF + + + point_in_time_1 + + BETWEEN + + + ASYMMETRIC + + + SYMMETRIC + + + point_in_time_1 + + AND + + + FROM + + + point_in_time_1 + + TO + + + point_in_time_2 + + + + +
             ::= 'FOR' 'SYSTEM_TIME' ( 'AS' 'OF' point_in_time_1 | ( 'BETWEEN' ( 'ASYMMETRIC' | 'SYMMETRIC' )? point_in_time_1 'AND' | 'FROM' point_in_time_1 'TO' ) point_in_time_2 )
    +
    + referenced by: + + table_primary + + point_in_time_1: + + + + + + + + point_in_time + + + + +
             ::= point_in_time
    +
    + referenced by: + + delete_statement__searched + query_system_time_period_specification + update_statement__searched + + point_in_time_2: + + + + + + + + point_in_time + + + + +
             ::= point_in_time
    +
    + referenced by: + + delete_statement__searched + query_system_time_period_specification + update_statement__searched + + point_in_time: + + + + + + + + datetime_value_expression + + + + +
             ::= datetime_value_expression
    +
    + referenced by: + + point_in_time_1 + point_in_time_2 + + only_spec: + + + + + + + + ONLY + + + ( + + + table_or_query_name + + ) + + + + + +
             ::= 'ONLY' '(' table_or_query_name ')'
    +
    + referenced by: + + table_primary + + lateral_derived_table: + + + + + + + + LATERAL + + + table_subquery + + + + +
             ::= 'LATERAL' table_subquery
    +
    + referenced by: + + table_primary + + collection_derived_table: + + + + + + + + UNNEST + + + ( + + + collection_value_expression + + , + + + ) + + + WITH + + + ORDINALITY* + + + + + +
             ::= 'UNNEST' '(' collection_value_expression ( ',' collection_value_expression )* ')' ( 'WITH' 'ORDINALITY*' )?
    +
    + referenced by: + + table_primary + + table_function_derived_table: + + + + + + + + TABLE + + + ( + + + collection_value_expression + + ) + + + + + +
             ::= 'TABLE' '(' collection_value_expression ')'
    +
    + referenced by: + + table_primary + + derived_table: + + + + + + + + table_subquery + + + + +
             ::= table_subquery
    +
    + referenced by: + + table_primary + + PTF_derived_table: + + + + + + + + TABLE + + + ( + + + routine_invocation + + ) + + + + + +
             ::= 'TABLE' '(' routine_invocation ')'
    +
    + referenced by: + + table_primary + + table_or_query_name: + + + + + + + + table_name + + + transition_table_name + + + query_name + + + + +
             ::= table_name
    +
               | transition_table_name
    +
               | query_name
    +
    + referenced by: + + explicit_table + only_spec + table_argument_proper + table_primary + + derived_column_list: + + + + + + + + column_name_list + + + + +
             ::= column_name_list
    +
    + referenced by: + + parenthesized_derived_column_list + + column_name_list: + + + + + + + + column_name + + , + + + + + +
             ::= column_name ( ',' column_name )*
    +
    + referenced by: + + all_fields_column_name_list + as_subquery_clause + corresponding_column_list + derived_column_list + insert_column_list + join_column_list + privilege_column_list + recursive_search_order + referenced_column_list + referencing_column_list + trigger_column_list + unique_column_list + updatability_clause + view_column_list + with_column_list + + data_change_delta_table: + + + + + + + + result_option + + TABLE + + + ( + + + data_change_statement + + ) + + + + + +
             ::= result_option 'TABLE' '(' data_change_statement ')'
    +
    + referenced by: + + table_primary + + data_change_statement: + + + + + + + + delete_statement__searched + + + insert_statement + + + merge_statement + + + update_statement__searched + + + + +
             ::= delete_statement__searched
    +
               | insert_statement
    +
               | merge_statement
    +
               | update_statement__searched
    +
    + referenced by: + + data_change_delta_table + + result_option: + + + + + + + + FINAL* + + + NEW + + + OLD + + + + + +
             ::= 'FINAL*'
    +
               | 'NEW'
    +
               | 'OLD'
    +
    + referenced by: + + data_change_delta_table + + parenthesized_joined_table: + + + + + + + + ( + + + parenthesized_joined_table + + + joined_table + + ) + + + + + +
             ::= '(' ( parenthesized_joined_table | joined_table ) ')'
    +
    + referenced by: + + parenthesized_joined_table + table_primary + + row_pattern_recognition_clause_and_name: + + + + + + + + AS + + + row_pattern_input_name + + + row_pattern_input_derived_column_list + + + row_pattern_recognition_clause + + AS + + + row_pattern_output_name + + + row_pattern_output_derived_column_list + + + + + + + referenced by: + + correlation_or_recognition + + row_pattern_input_name: + + + + + + + + correlation_name + + + + +
             ::= correlation_name
    +
    + referenced by: + + row_pattern_recognition_clause_and_name + + row_pattern_output_name: + + + + + + + + correlation_name + + + + +
             ::= correlation_name
    +
    + referenced by: + + row_pattern_recognition_clause_and_name + + row_pattern_input_derived_column_list: + + + + + + + + parenthesized_derived_column_list + + + + +
             ::= parenthesized_derived_column_list
    +
    + referenced by: + + row_pattern_recognition_clause_and_name + + row_pattern_output_derived_column_list: + + + + + + + + parenthesized_derived_column_list + + + + +
             ::= parenthesized_derived_column_list
    +
    + referenced by: + + row_pattern_recognition_clause_and_name + + parenthesized_derived_column_list: + + + + + + + + ( + + + derived_column_list + + ) + + + + + +
             ::= '(' derived_column_list ')'
    +
    + referenced by: + + correlation_or_recognition + row_pattern_input_derived_column_list + row_pattern_output_derived_column_list + table_argument_parenthesized_derived_column_list + + row_pattern_recognition_clause: + + + + + + + + MATCH_RECOGNIZE + + + ( + + + row_pattern_partition_by + + + row_pattern_order_by + + + row_pattern_measures + + + row_pattern_rows_per_match + + + row_pattern_common_syntax + + ) + + + + + + + + referenced by: + + row_pattern_recognition_clause_and_name + + row_pattern_partition_by: + + + + + + + + PARTITION + + + BY + + + row_pattern_partition_list + + + + +
             ::= 'PARTITION' 'BY' row_pattern_partition_list
    +
    + referenced by: + + row_pattern_recognition_clause + + row_pattern_partition_list: + + + + + + + + row_pattern_partition_column + + , + + + + + + + + referenced by: + + row_pattern_partition_by + + row_pattern_partition_column: + + + + + + + + column_reference + + + collate_clause + + + + +
             ::= column_reference collate_clause?
    +
    + referenced by: + + row_pattern_partition_list + + row_pattern_order_by: + + + + + + + + ORDER + + + BY + + + sort_specification_list + + + + +
             ::= 'ORDER' 'BY' sort_specification_list
    +
    + referenced by: + + row_pattern_recognition_clause + + row_pattern_rows_per_match: + + + + + + + + ONE + + + ROW + + + PER + + + MATCH + + + ALL + + + ROWS + + + PER + + + MATCH + + + row_pattern_empty_match_handling + + + + +
             ::= 'ONE' 'ROW' 'PER' 'MATCH'
    +
               | 'ALL' 'ROWS' 'PER' 'MATCH' row_pattern_empty_match_handling?
    +
    + referenced by: + + row_pattern_recognition_clause + + row_pattern_empty_match_handling: + + + + + + + + SHOW + + + OMIT + + + EMPTY + + + MATCHES + + + WITH + + + UNMATCHED + + ROWS + + + + + +
             ::= ( 'SHOW' | 'OMIT' ) 'EMPTY' 'MATCHES'
    +
               | 'WITH' UNMATCHED 'ROWS'
    +
    + referenced by: + + row_pattern_rows_per_match + + row_pattern_measures: + + + + + + + + MEASURES + + + row_pattern_measure_list + + + + +
             ::= MEASURES row_pattern_measure_list
    +
    + referenced by: + + row_pattern_recognition_clause + window_frame_clause + + row_pattern_measure_list: + + + + + + + + row_pattern_measure_definition + + , + + + + + + + + referenced by: + + row_pattern_measures + + row_pattern_measure_definition: + + + + + + + + row_pattern_measure_expression + + AS + + + measure_name + + + + +
             ::= row_pattern_measure_expression 'AS' measure_name
    +
    + referenced by: + + row_pattern_measure_list + + row_pattern_measure_expression: + + + + + + + + value_expression + + + + +
             ::= value_expression
    +
    + referenced by: + + row_pattern_measure_definition + + row_pattern_common_syntax: + + + + + + + + AFTER* + + + MATCH + + + row_pattern_skip_to + + + row_pattern_initial_or_seek + + PATTERN + + + ( + + + row_pattern + + ) + + + row_pattern_subset_clause + + DEFINE + + + row_pattern_definition_list + + + + +
             ::= ( 'AFTER*' 'MATCH' row_pattern_skip_to )? row_pattern_initial_or_seek? 'PATTERN' '(' row_pattern ')' row_pattern_subset_clause? 'DEFINE' row_pattern_definition_list
    +
    + referenced by: + + row_pattern_recognition_clause + window_frame_clause + + row_pattern_skip_to: + + + + + + + + SKIP + + + TO + + + NEXT* + + + ROW + + + FIRST* + + + LAST* + + + row_pattern_skip_to_variable_name + + PAST* + + + LAST* + + + ROW + + + + + +
             ::= 'SKIP' ( 'TO' ( 'NEXT*' 'ROW' | ( 'FIRST*' | 'LAST*' )? row_pattern_skip_to_variable_name ) | 'PAST*' 'LAST*' 'ROW' )
    +
    + referenced by: + + row_pattern_common_syntax + + row_pattern_skip_to_variable_name: + + + + + + + + row_pattern_variable_name + + + + +
             ::= row_pattern_variable_name
    +
    + referenced by: + + row_pattern_skip_to + + row_pattern_initial_or_seek: + + + + + + + + INITIAL + + + SEEK + + + + + +
             ::= 'INITIAL'
    +
               | 'SEEK'
    +
    + referenced by: + + row_pattern_common_syntax + + row_pattern: + + + + + + + + row_pattern_term + + + row_pattern_alternation + + + + +
             ::= row_pattern_term
    +
               | row_pattern_alternation
    +
    + referenced by: + + row_pattern_alternation + row_pattern_common_syntax + row_pattern_permute + row_pattern_primary + + row_pattern_alternation: + + + + + + + + row_pattern + + | + + + row_pattern_term + + + + +
             ::= row_pattern '|' row_pattern_term
    +
    + referenced by: + + row_pattern + + row_pattern_term: + + + + + + + + row_pattern_factor + + + + +
             ::= row_pattern_factor+
    +
    + referenced by: + + row_pattern + row_pattern_alternation + + row_pattern_factor: + + + + + + + + row_pattern_primary + + + row_pattern_quantifier + + + + + + + referenced by: + + row_pattern_term + + row_pattern_quantifier: + + + + + + + + * + + + + + + + ? + + + ? + + + { + + + unsigned_integer + + , + + + unsigned_integer + + } + + + ? + + + unsigned_integer + + } + + + + + +
             ::= ( '*' | '+' | '?' ) '?'?
    +
               | '{' ( unsigned_integer? ',' unsigned_integer? '}' '?'? | unsigned_integer '}' )
    +
    + referenced by: + + row_pattern_factor + + row_pattern_primary: + + + + + + + + row_pattern_primary_variable_name + + $ + + + ^ + + + ( + + + row_pattern + + ) + + + {- + + + row_pattern + + -} + + + row_pattern_permute + + + + +
             ::= row_pattern_primary_variable_name
    +
               | '$'
    +
               | '^'
    +
               | '(' row_pattern? ')'
    +
               | '{-' row_pattern '-}'
    +
               | row_pattern_permute
    +
    + referenced by: + + row_pattern_factor + + row_pattern_primary_variable_name: + + + + + + + + row_pattern_variable_name + + + + +
             ::= row_pattern_variable_name
    +
    + referenced by: + + row_pattern_primary + + row_pattern_permute: + + + + + + + + PERMUTE + + ( + + + row_pattern + + , + + + ) + + + + + +
             ::= PERMUTE '(' row_pattern ( ',' row_pattern )* ')'
    +
    + referenced by: + + row_pattern_primary + + row_pattern_subset_clause: + + + + + + + + SUBSET + + + row_pattern_subset_list + + + + +
             ::= 'SUBSET' row_pattern_subset_list
    +
    + referenced by: + + row_pattern_common_syntax + + row_pattern_subset_list: + + + + + + + + row_pattern_subset_item + + , + + + + + +
             ::= row_pattern_subset_item ( ',' row_pattern_subset_item )*
    +
    + referenced by: + + row_pattern_subset_clause + + row_pattern_subset_item: + + + + + + + + row_pattern_subset_item_variable_name + + = + + + ( + + + row_pattern_subset_rhs + + ) + + + + + + + + referenced by: + + row_pattern_subset_list + + row_pattern_subset_item_variable_name: + + + + + + + + row_pattern_variable_name + + + + +
             ::= row_pattern_variable_name
    +
    + referenced by: + + row_pattern_subset_item + + row_pattern_subset_rhs: + + + + + + + + row_pattern_subset_rhs_variable_name + + , + + + + + + + + referenced by: + + row_pattern_subset_item + + row_pattern_subset_rhs_variable_name: + + + + + + + + row_pattern_variable_name + + + + +
             ::= row_pattern_variable_name
    +
    + referenced by: + + row_pattern_subset_rhs + + row_pattern_definition_list: + + + + + + + + row_pattern_definition + + , + + + + + +
             ::= row_pattern_definition ( ',' row_pattern_definition )*
    +
    + referenced by: + + row_pattern_common_syntax + + row_pattern_definition: + + + + + + + + row_pattern_definition_variable_name + + AS + + + row_pattern_definition_search_condition + + + + + + + referenced by: + + row_pattern_definition_list + + row_pattern_definition_variable_name: + + + + + + + + row_pattern_variable_name + + + + +
             ::= row_pattern_variable_name
    +
    + referenced by: + + row_pattern_definition + + row_pattern_definition_search_condition: + + + + + + + + search_condition + + + + +
             ::= search_condition
    +
    + referenced by: + + row_pattern_definition + + joined_table: + + + + + + + + cross_join + + + qualified_join + + + natural_join + + + + +
             ::= cross_join
    +
               | qualified_join
    +
               | natural_join
    +
    + referenced by: + + parenthesized_joined_table + table_reference + + cross_join: + + + + + + + + table_reference + + CROSS + + + JOIN + + + table_factor + + + + +
             ::= table_reference 'CROSS' 'JOIN' table_factor
    +
    + referenced by: + + joined_table + + qualified_join: + + + + + + + + table_reference + + + partitioned_join_table + + + join_type + + JOIN + + + table_reference + + + partitioned_join_table + + + join_specification + + + + + + + referenced by: + + joined_table + + partitioned_join_table: + + + + + + + + table_factor + + PARTITION + + + BY + + + partitioned_join_column_reference_list + + + + +
             ::= table_factor 'PARTITION' 'BY' partitioned_join_column_reference_list
    +
    + referenced by: + + natural_join + qualified_join + + partitioned_join_column_reference_list: + + + + + + + + ( + + + partitioned_join_column_reference + + , + + + ) + + + + + + + + referenced by: + + partitioned_join_table + + partitioned_join_column_reference: + + + + + + + + column_reference + + + + +
             ::= column_reference
    +
    + referenced by: + + partitioned_join_column_reference_list + + natural_join: + + + + + + + + table_reference + + + partitioned_join_table + + NATURAL + + + join_type + + JOIN + + + table_factor + + + partitioned_join_table + + + + +
             ::= ( table_reference | partitioned_join_table ) 'NATURAL' join_type? 'JOIN' ( table_factor | partitioned_join_table )
    +
    + referenced by: + + joined_table + + join_specification: + + + + + + + + join_condition + + + named_columns_join + + + + +
             ::= join_condition
    +
               | named_columns_join
    +
    + referenced by: + + qualified_join + + join_condition: + + + + + + + + ON + + + search_condition + + + + +
             ::= 'ON' search_condition
    +
    + referenced by: + + join_specification + + named_columns_join: + + + + + + + + USING + + + ( + + + join_column_list + + ) + + + AS + + + join_correlation_name + + + + +
             ::= 'USING' '(' join_column_list ')' ( 'AS' join_correlation_name )?
    +
    + referenced by: + + join_specification + + join_correlation_name: + + + + + + + + correlation_name + + + + +
             ::= correlation_name
    +
    + referenced by: + + named_columns_join + + join_type: + + + + + + + + INNER + + + outer_join_type + + OUTER + + + + + +
             ::= 'INNER'
    +
               | outer_join_type 'OUTER'?
    +
    + referenced by: + + natural_join + qualified_join + + outer_join_type: + + + + + + + + LEFT + + + RIGHT + + + FULL + + + + + +
             ::= 'LEFT'
    +
               | 'RIGHT'
    +
               | 'FULL'
    +
    + referenced by: + + join_type + + join_column_list: + + + + + + + + column_name_list + + + + +
             ::= column_name_list
    +
    + referenced by: + + named_columns_join + + JSON_table: + + + + + + + + JSON_TABLE + + + ( + + + JSON_API_common_syntax + + + JSON_table_columns_clause + + + JSON_table_plan_clause + + + JSON_table_error_behavior + + ON + + + ERROR* + + + ) + + + + + +
             ::= 'JSON_TABLE' '(' JSON_API_common_syntax JSON_table_columns_clause JSON_table_plan_clause? ( JSON_table_error_behavior 'ON' 'ERROR*' )? ')'
    +
    + referenced by: + + table_primary + + JSON_table_columns_clause: + + + + + + + + COLUMNS* + + + ( + + + JSON_table_column_definition + + , + + + ) + + + + + +
             ::= 'COLUMNS*' '(' JSON_table_column_definition ( ',' JSON_table_column_definition )* ')'
    +
    + referenced by: + + JSON_table + JSON_table_nested_columns + + JSON_table_column_definition: + + + + + + + + JSON_table_ordinality_column_definition + + + JSON_table_regular_column_definition + + + JSON_table_formatted_column_definition + + + JSON_table_nested_columns + + + + + +
               | JSON_table_regular_column_definition
    + +
               | JSON_table_nested_columns
    +
    + referenced by: + + JSON_table_columns_clause + + JSON_table_ordinality_column_definition: + + + + + + + + column_name + + FOR + + + ORDINALITY* + + + + + +
             ::= column_name 'FOR' 'ORDINALITY*'
    +
    + referenced by: + + JSON_table_column_definition + JSON_table_primitive_column_definition + + JSON_table_regular_column_definition: + + + + + + + + column_name + + + data_type + + PATH* + + + JSON_table_column_path_specification + + + JSON_table_column_empty_behavior + + ON + + + EMPTY + + + JSON_table_column_error_behavior + + ON + + + ERROR* + + + + + + + + referenced by: + + JSON_table_column_definition + JSON_table_primitive_column_definition + + JSON_table_column_empty_behavior: + + + + + + + + ERROR* + + + NULL + + + DEFAULT + + + value_expression + + + + +
             ::= 'ERROR*'
    +
               | 'NULL'
    +
               | 'DEFAULT' value_expression
    +
    + referenced by: + + JSON_table_regular_column_definition + + JSON_table_column_error_behavior: + + + + + + + + ERROR* + + + NULL + + + DEFAULT + + + value_expression + + + + +
             ::= 'ERROR*'
    +
               | 'NULL'
    +
               | 'DEFAULT' value_expression
    +
    + referenced by: + + JSON_table_regular_column_definition + + JSON_table_column_path_specification: + + + + + + + + JSON_path_specification + + + + +
             ::= JSON_path_specification
    +
    + referenced by: + + JSON_table_formatted_column_definition + JSON_table_regular_column_definition + + JSON_table_formatted_column_definition: + + + + + + + + column_name + + + data_type + + FORMAT* + + + JSON_representation + + PATH* + + + JSON_table_column_path_specification + + + JSON_table_formatted_column_wrapper_behavior + + WRAPPER* + + + JSON_table_formatted_column_quotes_behavior + + QUOTES* + + + ON + + + SCALAR* + + + STRING* + + + JSON_table_formatted_column_empty_behavior + + ON + + + EMPTY + + + JSON_table_formatted_column_error_behavior + + ON + + + ERROR* + + + + + + + + referenced by: + + JSON_table_column_definition + JSON_table_primitive_column_definition + + JSON_table_formatted_column_wrapper_behavior: + + + + + + + + WITHOUT + + + WITH + + + CONDITIONAL* + + + UNCONDITIONAL* + + + ARRAY + + + + + +
             ::= ( 'WITHOUT' | 'WITH' ( 'CONDITIONAL*' | 'UNCONDITIONAL*' )? ) 'ARRAY'?
    +
    + referenced by: + + JSON_table_formatted_column_definition + + JSON_table_formatted_column_quotes_behavior: + + + + + + + + KEEP* + + + OMIT + + + + + +
             ::= 'KEEP*'
    +
               | 'OMIT'
    +
    + referenced by: + + JSON_table_formatted_column_definition + + JSON_table_formatted_column_empty_behavior: + + + + + + + + ERROR* + + + NULL + + + EMPTY + + + ARRAY + + + OBJECT* + + + + + +
             ::= 'ERROR*'
    +
               | 'NULL'
    +
               | 'EMPTY' ( 'ARRAY' | 'OBJECT*' )
    +
    + referenced by: + + JSON_table_formatted_column_definition + + JSON_table_formatted_column_error_behavior: + + + + + + + + ERROR* + + + NULL + + + EMPTY + + + ARRAY + + + OBJECT* + + + + + +
             ::= 'ERROR*'
    +
               | 'NULL'
    +
               | 'EMPTY' ( 'ARRAY' | 'OBJECT*' )
    +
    + referenced by: + + JSON_table_formatted_column_definition + + JSON_table_nested_columns: + + + + + + + + NESTED* + + + PATH* + + + JSON_table_nested_path_specification + + AS + + + JSON_table_nested_path_name + + + JSON_table_columns_clause + + + + + + + referenced by: + + JSON_table_column_definition + + JSON_table_nested_path_specification: + + + + + + + + JSON_path_specification + + + + +
             ::= JSON_path_specification
    +
    + referenced by: + + JSON_table_nested_columns + + JSON_table_nested_path_name: + + + + + + + + JSON_table_path_name + + + + +
             ::= JSON_table_path_name
    +
    + referenced by: + + JSON_table_nested_columns + + JSON_table_path_name: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + JSON_API_common_syntax + JSON_table_nested_path_name + JSON_table_plan + JSON_table_plan_inner + JSON_table_plan_outer + JSON_table_plan_primary + + JSON_table_plan_clause: + + + + + + + + JSON_table_specific_plan + + + JSON_table_default_plan + + + + +
             ::= JSON_table_specific_plan
    +
               | JSON_table_default_plan
    +
    + referenced by: + + JSON_table + + JSON_table_specific_plan: + + + + + + + + PLAN* + + + ( + + + JSON_table_plan + + ) + + + + + +
             ::= 'PLAN*' '(' JSON_table_plan ')'
    +
    + referenced by: + + JSON_table_plan_clause + + JSON_table_plan: + + + + + + + + JSON_table_path_name + + + JSON_table_plan_parent_child + + + JSON_table_plan_sibling + + + + +
             ::= JSON_table_path_name
    +
               | JSON_table_plan_parent_child
    +
               | JSON_table_plan_sibling
    +
    + referenced by: + + JSON_table_plan_primary + JSON_table_specific_plan + + JSON_table_plan_parent_child: + + + + + + + + JSON_table_plan_outer + + + JSON_table_plan_inner + + + + +
             ::= JSON_table_plan_outer
    +
               | JSON_table_plan_inner
    +
    + referenced by: + + JSON_table_plan + + JSON_table_plan_outer: + + + + + + + + JSON_table_path_name + + OUTER + + + JSON_table_plan_primary + + + + +
             ::= JSON_table_path_name 'OUTER' JSON_table_plan_primary
    +
    + referenced by: + + JSON_table_plan_parent_child + + JSON_table_plan_inner: + + + + + + + + JSON_table_path_name + + INNER + + + JSON_table_plan_primary + + + + +
             ::= JSON_table_path_name 'INNER' JSON_table_plan_primary
    +
    + referenced by: + + JSON_table_plan_parent_child + + JSON_table_plan_sibling: + + + + + + + + JSON_table_plan_union + + + JSON_table_plan_cross + + + + +
             ::= JSON_table_plan_union
    +
               | JSON_table_plan_cross
    +
    + referenced by: + + JSON_table_plan + + JSON_table_plan_union: + + + + + + + + JSON_table_plan_primary + + UNION + + + JSON_table_plan_primary + + + + +
             ::= JSON_table_plan_primary ( 'UNION' JSON_table_plan_primary )+
    +
    + referenced by: + + JSON_table_plan_sibling + + JSON_table_plan_cross: + + + + + + + + JSON_table_plan_primary + + CROSS + + + JSON_table_plan_primary + + + + +
             ::= JSON_table_plan_primary ( 'CROSS' JSON_table_plan_primary )+
    +
    + referenced by: + + JSON_table_plan_sibling + + JSON_table_plan_primary: + + + + + + + + JSON_table_path_name + + ( + + + JSON_table_plan + + ) + + + + + +
             ::= JSON_table_path_name
    +
               | '(' JSON_table_plan ')'
    +
    + referenced by: + + JSON_table_plan_cross + JSON_table_plan_inner + JSON_table_plan_outer + JSON_table_plan_union + + JSON_table_default_plan: + + + + + + + + PLAN* + + + DEFAULT + + + ( + + + JSON_table_default_plan_choices + + ) + + + + + +
             ::= 'PLAN*' 'DEFAULT' '(' JSON_table_default_plan_choices ')'
    +
    + referenced by: + + JSON_table_plan_clause + + JSON_table_default_plan_choices: + + + + + + + + JSON_table_default_plan_inner_outer + + , + + + JSON_table_default_plan_union_cross + + + JSON_table_default_plan_union_cross + + , + + + JSON_table_default_plan_inner_outer + + + + + + + + referenced by: + + JSON_table_default_plan + + JSON_table_default_plan_inner_outer: + + + + + + + + INNER + + + OUTER + + + + + +
             ::= 'INNER'
    +
               | 'OUTER'
    +
    + referenced by: + + JSON_table_default_plan_choices + + JSON_table_default_plan_union_cross: + + + + + + + + UNION + + + CROSS + + + + + +
             ::= 'UNION'
    +
               | 'CROSS'
    +
    + referenced by: + + JSON_table_default_plan_choices + + JSON_table_error_behavior: + + + + + + + + ERROR* + + + EMPTY + + + + + +
             ::= 'ERROR*'
    +
               | 'EMPTY'
    +
    + referenced by: + + JSON_table + JSON_table_primitive + + JSON_table_primitive: + + + + + + + + JSON_TABLE_PRIMITIVE + + + ( + + + JSON_API_common_syntax + + + JSON_table_primitive_columns_clause + + + JSON_table_error_behavior + + ON + + + ERROR* + + + ) + + + + + +
             ::= 'JSON_TABLE_PRIMITIVE' '(' JSON_API_common_syntax JSON_table_primitive_columns_clause JSON_table_error_behavior 'ON' 'ERROR*' ')'
    +
    + referenced by: + + table_primary + + JSON_table_primitive_columns_clause: + + + + + + + + COLUMNS* + + + ( + + + JSON_table_primitive_column_definition + + , + + + ) + + + + + +
             ::= 'COLUMNS*' '(' JSON_table_primitive_column_definition ( ',' JSON_table_primitive_column_definition )* ')'
    +
    + referenced by: + + JSON_table_primitive + + JSON_table_primitive_column_definition: + + + + + + + + JSON_table_ordinality_column_definition + + + JSON_table_regular_column_definition + + + JSON_table_formatted_column_definition + + + JSON_table_primitive_chaining_column + + + + + +
               | JSON_table_regular_column_definition
    + +
               | JSON_table_primitive_chaining_column
    +
    + referenced by: + + JSON_table_primitive_columns_clause + + JSON_table_primitive_chaining_column: + + + + + + + + column_name + + FOR + + + CHAINING* + + + + + +
             ::= column_name 'FOR' 'CHAINING*'
    +
    + referenced by: + + JSON_table_primitive_column_definition + + where_clause: + + + + + + + + WHERE + + + search_condition + + + + +
             ::= 'WHERE' search_condition
    +
    + referenced by: + + table_expression + + group_by_clause: + + + + + + + + GROUP + + + BY + + + set_quantifier + + + grouping_element_list + + + + +
             ::= 'GROUP' 'BY' set_quantifier? grouping_element_list
    +
    + referenced by: + + table_expression + + grouping_element_list: + + + + + + + + grouping_element + + , + + + + + +
             ::= grouping_element ( ',' grouping_element )*
    +
    + referenced by: + + group_by_clause + + grouping_element: + + + + + + + + ordinary_grouping_set + + + rollup_list + + + cube_list + + + grouping_sets_specification + + + empty_grouping_set + + + + +
             ::= ordinary_grouping_set
    +
               | rollup_list
    +
               | cube_list
    +
               | grouping_sets_specification
    +
               | empty_grouping_set
    +
    + referenced by: + + grouping_element_list + + ordinary_grouping_set: + + + + + + + + grouping_column_reference + + ( + + + grouping_column_reference_list + + ) + + + + + +
             ::= grouping_column_reference
    +
               | '(' grouping_column_reference_list ')'
    +
    + referenced by: + + grouping_element + grouping_set + ordinary_grouping_set_list + + grouping_column_reference: + + + + + + + + column_reference + + + collate_clause + + + + +
             ::= column_reference collate_clause?
    +
    + referenced by: + + grouping_column_reference_list + ordinary_grouping_set + + grouping_column_reference_list: + + + + + + + + grouping_column_reference + + , + + + + + + + + referenced by: + + ordinary_grouping_set + + rollup_list: + + + + + + + + ROLLUP + + + ( + + + ordinary_grouping_set_list + + ) + + + + + +
             ::= 'ROLLUP' '(' ordinary_grouping_set_list ')'
    +
    + referenced by: + + grouping_element + grouping_set + + ordinary_grouping_set_list: + + + + + + + + ordinary_grouping_set + + , + + + + + +
             ::= ordinary_grouping_set ( ',' ordinary_grouping_set )*
    +
    + referenced by: + + cube_list + rollup_list + + cube_list: + + + + + + + + CUBE + + + ( + + + ordinary_grouping_set_list + + ) + + + + + +
             ::= 'CUBE' '(' ordinary_grouping_set_list ')'
    +
    + referenced by: + + grouping_element + grouping_set + + grouping_sets_specification: + + + + + + + + GROUPING + + + SETS* + + + ( + + + grouping_set_list + + ) + + + + + +
             ::= 'GROUPING' 'SETS*' '(' grouping_set_list ')'
    +
    + referenced by: + + grouping_element + grouping_set + + grouping_set_list: + + + + + + + + grouping_set + + , + + + + + +
             ::= grouping_set ( ',' grouping_set )*
    +
    + referenced by: + + grouping_sets_specification + + grouping_set: + + + + + + + + ordinary_grouping_set + + + rollup_list + + + cube_list + + + grouping_sets_specification + + + empty_grouping_set + + + + +
             ::= ordinary_grouping_set
    +
               | rollup_list
    +
               | cube_list
    +
               | grouping_sets_specification
    +
               | empty_grouping_set
    +
    + referenced by: + + grouping_set_list + + empty_grouping_set: + + + + + + + + ( + + + ) + + + + + +
             ::= '(' ')'
    +
    + referenced by: + + grouping_element + grouping_set + + having_clause: + + + + + + + + HAVING + + + search_condition + + + + +
             ::= 'HAVING' search_condition
    +
    + referenced by: + + table_expression + + window_clause: + + + + + + + + WINDOW + + + window_definition_list + + + + +
             ::= 'WINDOW' window_definition_list
    +
    + referenced by: + + table_expression + + window_definition_list: + + + + + + + + window_definition + + , + + + + + +
             ::= window_definition ( ',' window_definition )*
    +
    + referenced by: + + window_clause + + window_definition: + + + + + + + + new_window_name + + AS + + + window_specification + + + + +
             ::= new_window_name 'AS' window_specification
    +
    + referenced by: + + window_definition_list + + new_window_name: + + + + + + + + window_name + + + + +
             ::= window_name
    +
    + referenced by: + + window_definition + + window_specification: + + + + + + + + ( + + + window_specification_details + + ) + + + + + +
             ::= '(' window_specification_details ')'
    +
    + referenced by: + + in_line_window_specification + window_definition + + window_specification_details: + + + + + + + + existing_window_name + + + window_partition_clause + + + window_order_clause + + + window_frame_clause + + + + + + + referenced by: + + window_specification + + existing_window_name: + + + + + + + + window_name + + + + +
             ::= window_name
    +
    + referenced by: + + window_specification_details + + window_partition_clause: + + + + + + + + PARTITION + + + BY + + + window_partition_column_reference_list + + + + +
             ::= 'PARTITION' 'BY' window_partition_column_reference_list
    +
    + referenced by: + + window_specification_details + + window_partition_column_reference_list: + + + + + + + + window_partition_column_reference + + , + + + + + + + + referenced by: + + window_partition_clause + + window_partition_column_reference: + + + + + + + + column_reference + + + collate_clause + + + + +
             ::= column_reference collate_clause?
    +
    + referenced by: + + window_partition_column_reference_list + + window_order_clause: + + + + + + + + ORDER + + + BY + + + sort_specification_list + + + + +
             ::= 'ORDER' 'BY' sort_specification_list
    +
    + referenced by: + + window_specification_details + + window_frame_clause: + + + + + + + + row_pattern_measures + + + window_frame_units + + + window_frame_extent + + + window_frame_exclusion + + + row_pattern_common_syntax + + + + + + + referenced by: + + window_specification_details + + window_frame_units: + + + + + + + + ROWS + + + RANGE + + + GROUPS + + + + + +
             ::= 'ROWS'
    +
               | 'RANGE'
    +
               | 'GROUPS'
    +
    + referenced by: + + window_frame_clause + + window_frame_extent: + + + + + + + + window_frame_start + + + window_frame_between + + + + +
             ::= window_frame_start
    +
               | window_frame_between
    +
    + referenced by: + + window_frame_clause + + window_frame_start: + + + + + + + + UNBOUNDED* + + + PRECEDING* + + + window_frame_preceding + + CURRENT + + + ROW + + + + + +
             ::= 'UNBOUNDED*' 'PRECEDING*'
    +
               | window_frame_preceding
    +
               | 'CURRENT' 'ROW'
    +
    + referenced by: + + window_frame_bound + window_frame_extent + + window_frame_preceding: + + + + + + + + unsigned_value_specification + + PRECEDING* + + + + + +
             ::= unsigned_value_specification 'PRECEDING*'
    +
    + referenced by: + + window_frame_start + + window_frame_between: + + + + + + + + BETWEEN + + + window_frame_bound_1 + + AND + + + window_frame_bound_2 + + + + +
             ::= 'BETWEEN' window_frame_bound_1 'AND' window_frame_bound_2
    +
    + referenced by: + + window_frame_extent + + window_frame_bound_1: + + + + + + + + window_frame_bound + + + + +
             ::= window_frame_bound
    +
    + referenced by: + + window_frame_between + + window_frame_bound_2: + + + + + + + + window_frame_bound + + + + +
             ::= window_frame_bound
    +
    + referenced by: + + window_frame_between + + window_frame_bound: + + + + + + + + window_frame_start + + UNBOUNDED* + + + FOLLOWING* + + + window_frame_following + + + + +
             ::= window_frame_start
    +
               | 'UNBOUNDED*' 'FOLLOWING*'
    +
               | window_frame_following
    +
    + referenced by: + + window_frame_bound_1 + window_frame_bound_2 + + window_frame_following: + + + + + + + + unsigned_value_specification + + FOLLOWING* + + + + + +
             ::= unsigned_value_specification 'FOLLOWING*'
    +
    + referenced by: + + window_frame_bound + + window_frame_exclusion: + + + + + + + + EXCLUDE* + + + CURRENT + + + ROW + + + GROUP + + + TIES* + + + NO + + + OTHERS* + + + + + +
             ::= 'EXCLUDE*' ( 'CURRENT' 'ROW' | 'GROUP' | 'TIES*' | 'NO' 'OTHERS*' )
    +
    + referenced by: + + window_frame_clause + + query_specification: + + + + + + + + SELECT + + + set_quantifier + + + select_list + + + table_expression + + + + +
             ::= 'SELECT' set_quantifier? select_list table_expression
    +
    + referenced by: + + dynamic_single_row_select_statement + simple_table + + select_list: + + + + + + + + * + + + select_sublist + + , + + + + + +
             ::= '*'
    +
               | select_sublist ( ',' select_sublist )*
    +
    + referenced by: + + query_specification + select_statement__single_row + + select_sublist: + + + + + + + + derived_column + + + qualified_asterisk + + + + +
             ::= derived_column
    +
               | qualified_asterisk
    +
    + referenced by: + + select_list + + qualified_asterisk: + + + + + + + + asterisked_identifier_chain + + . + + + * + + + all_fields_reference + + + + +
             ::= asterisked_identifier_chain '.' '*'
    +
               | all_fields_reference
    +
    + referenced by: + + select_sublist + + asterisked_identifier_chain: + + + + + + + + asterisked_identifier + + . + + + + + +
             ::= asterisked_identifier ( '.' asterisked_identifier )*
    +
    + referenced by: + + qualified_asterisk + + asterisked_identifier: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + asterisked_identifier_chain + + derived_column: + + + + + + + + value_expression + + + as_clause + + + + +
             ::= value_expression as_clause?
    +
    + referenced by: + + select_sublist + + as_clause: + + + + + + + + AS + + + column_name + + + + +
             ::= 'AS'? column_name
    +
    + referenced by: + + derived_column + + all_fields_reference: + + + + + + + + value_expression_primary + + . + + + * + + + AS + + + ( + + + all_fields_column_name_list + + ) + + + + + +
             ::= value_expression_primary '.' '*' ( 'AS' '(' all_fields_column_name_list ')' )?
    +
    + referenced by: + + qualified_asterisk + + all_fields_column_name_list: + + + + + + + + column_name_list + + + + +
             ::= column_name_list
    +
    + referenced by: + + all_fields_reference + + query_expression: + + + + + + + + with_clause + + + query_expression_body + + + order_by_clause + + + result_offset_clause + + + fetch_first_clause + + + + + + + referenced by: + + JSON_array_constructor_by_query + cursor_specification + from_subquery + subquery + view_definition + + with_clause: + + + + + + + + WITH + + + RECURSIVE + + + with_list + + + + +
             ::= 'WITH' 'RECURSIVE'? with_list
    +
    + referenced by: + + query_expression + + with_list: + + + + + + + + with_list_element + + , + + + + + +
             ::= with_list_element ( ',' with_list_element )*
    +
    + referenced by: + + with_clause + + with_list_element: + + + + + + + + query_name + + ( + + + with_column_list + + ) + + + AS + + + table_subquery + + + search_or_cycle_clause + + + + +
             ::= query_name ( '(' with_column_list ')' )? 'AS' table_subquery search_or_cycle_clause?
    +
    + referenced by: + + with_list + + with_column_list: + + + + + + + + column_name_list + + + + +
             ::= column_name_list
    +
    + referenced by: + + with_list_element + + query_expression_body: + + + + + + + + query_term + + + corresponding_spec + + ALL + + + DISTINCT + + + UNION + + + EXCEPT + + + + + +
             ::= query_term ( ( 'UNION' | 'EXCEPT' ) ( 'ALL' | 'DISTINCT' )? corresponding_spec? query_term )*
    +
    + referenced by: + + query_expression + query_primary + + query_term: + + + + + + + + query_primary + + + corresponding_spec + + ALL + + + DISTINCT + + + INTERSECT + + + + + +
             ::= query_primary ( 'INTERSECT' ( 'ALL' | 'DISTINCT' )? corresponding_spec? query_primary )*
    +
    + referenced by: + + query_expression_body + + query_primary: + + + + + + + + simple_table + + ( + + + query_expression_body + + + order_by_clause + + + result_offset_clause + + + fetch_first_clause + + ) + + + + + +
             ::= simple_table
    +
    +
    + referenced by: + + query_term + + simple_table: + + + + + + + + query_specification + + + table_value_constructor + + + explicit_table + + + + +
             ::= query_specification
    +
               | table_value_constructor
    +
               | explicit_table
    +
    + referenced by: + + query_primary + + explicit_table: + + + + + + + + TABLE + + + table_or_query_name + + + + +
             ::= 'TABLE' table_or_query_name
    +
    + referenced by: + + simple_table + + corresponding_spec: + + + + + + + + CORRESPONDING + + + BY + + + ( + + + corresponding_column_list + + ) + + + + + +
             ::= 'CORRESPONDING' ( 'BY' '(' corresponding_column_list ')' )?
    +
    + referenced by: + + query_expression_body + query_term + + corresponding_column_list: + + + + + + + + column_name_list + + + + +
             ::= column_name_list
    +
    + referenced by: + + corresponding_spec + + order_by_clause: + + + + + + + + ORDER + + + BY + + + sort_specification_list + + + + +
             ::= 'ORDER' 'BY' sort_specification_list
    +
    + referenced by: + + query_expression + query_primary + + result_offset_clause: + + + + + + + + OFFSET + + + offset_row_count + + ROW + + + ROWS + + + + + +
             ::= 'OFFSET' offset_row_count ( 'ROW' | 'ROWS' )
    +
    + referenced by: + + query_expression + query_primary + + fetch_first_clause: + + + + + + + + FETCH + + + FIRST* + + + NEXT* + + + fetch_first_quantity + + ROW + + + ROWS + + + ONLY + + + WITH + + + TIES* + + + + + +
             ::= 'FETCH' ( 'FIRST*' | 'NEXT*' ) fetch_first_quantity? ( 'ROW' | 'ROWS' ) ( 'ONLY' | 'WITH' 'TIES*' )
    +
    + referenced by: + + query_expression + query_primary + + fetch_first_quantity: + + + + + + + + fetch_first_row_count + + + fetch_first_percentage + + + + +
             ::= fetch_first_row_count
    +
               | fetch_first_percentage
    +
    + referenced by: + + fetch_first_clause + + offset_row_count: + + + + + + + + simple_value_specification + + + + +
             ::= simple_value_specification
    +
    + referenced by: + + result_offset_clause + + fetch_first_row_count: + + + + + + + + simple_value_specification + + + + +
             ::= simple_value_specification
    +
    + referenced by: + + fetch_first_quantity + + fetch_first_percentage: + + + + + + + + simple_value_specification + + PERCENT + + + + + +
             ::= simple_value_specification 'PERCENT'
    +
    + referenced by: + + fetch_first_quantity + + search_or_cycle_clause: + + + + + + + + search_clause + + + cycle_clause + + + cycle_clause + + + + +
             ::= search_clause cycle_clause?
    +
               | cycle_clause
    +
    + referenced by: + + with_list_element + + search_clause: + + + + + + + + SEARCH + + + recursive_search_order + + SET + + + sequence_column + + + + +
             ::= 'SEARCH' recursive_search_order 'SET' sequence_column
    +
    + referenced by: + + search_or_cycle_clause + + recursive_search_order: + + + + + + + + DEPTH* + + + BREADTH* + + + FIRST* + + + BY + + + column_name_list + + + + +
             ::= ( 'DEPTH*' | 'BREADTH*' ) 'FIRST*' 'BY' column_name_list
    +
    + referenced by: + + search_clause + + sequence_column: + + + + + + + + column_name + + + + +
             ::= column_name
    +
    + referenced by: + + search_clause + + cycle_clause: + + + + + + + + CYCLE + + + cycle_column_list + + SET + + + cycle_mark_column + + TO + + + cycle_mark_value + + DEFAULT + + + non_cycle_mark_value + + USING + + + path_column + + + + +
             ::= 'CYCLE' cycle_column_list 'SET' cycle_mark_column 'TO' cycle_mark_value 'DEFAULT' non_cycle_mark_value 'USING' path_column
    +
    + referenced by: + + search_or_cycle_clause + + cycle_column_list: + + + + + + + + cycle_column + + , + + + + + +
             ::= cycle_column ( ',' cycle_column )*
    +
    + referenced by: + + cycle_clause + + cycle_column: + + + + + + + + column_name + + + + +
             ::= column_name
    +
    + referenced by: + + cycle_column_list + + cycle_mark_column: + + + + + + + + column_name + + + + +
             ::= column_name
    +
    + referenced by: + + cycle_clause + + path_column: + + + + + + + + column_name + + + + +
             ::= column_name
    +
    + referenced by: + + cycle_clause + + cycle_mark_value: + + + + + + + + value_expression + + + + +
             ::= value_expression
    +
    + referenced by: + + cycle_clause + + non_cycle_mark_value: + + + + + + + + value_expression + + + + +
             ::= value_expression
    +
    + referenced by: + + cycle_clause + + scalar_subquery: + + + + + + + + subquery + + + + +
             ::= subquery
    +
    + referenced by: + + nonparenthesized_value_expression_primary + + row_subquery: + + + + + + + + subquery + + + + +
             ::= subquery
    +
    + referenced by: + + explicit_row_value_constructor + + table_subquery: + + + + + + + + subquery + + + + +
             ::= subquery
    +
    + referenced by: + + array_value_constructor_by_query + as_subquery_clause + derived_table + exists_predicate + in_predicate_value + lateral_derived_table + match_predicate_part_2 + multiset_value_constructor_by_query + quantified_comparison_predicate_part_2 + table_argument_proper + table_value_constructor_by_query + unique_predicate + with_list_element + + subquery: + + + + + + + + ( + + + query_expression + + ) + + + + + + + referenced by: + + row_subquery + scalar_subquery + table_subquery + + predicate: + + + + + + + + comparison_predicate + + + between_predicate + + + in_predicate + + + like_predicate + + + similar_predicate + + + regex_like_predicate + + + null_predicate + + + quantified_comparison_predicate + + + exists_predicate + + + unique_predicate + + + normalized_predicate + + + match_predicate + + + overlaps_predicate + + + distinct_predicate + + + member_predicate + + + submultiset_predicate + + + set_predicate + + + type_predicate + + + period_predicate + + + JSON_predicate + + + JSON_exists_predicate + + + + +
             ::= comparison_predicate
    +
               | between_predicate
    +
               | in_predicate
    +
               | like_predicate
    +
               | similar_predicate
    +
               | regex_like_predicate
    +
               | null_predicate
    +
               | quantified_comparison_predicate
    +
               | exists_predicate
    +
               | unique_predicate
    +
               | normalized_predicate
    +
               | match_predicate
    +
               | overlaps_predicate
    +
               | distinct_predicate
    +
               | member_predicate
    +
               | submultiset_predicate
    +
               | set_predicate
    +
               | type_predicate
    +
               | period_predicate
    +
               | JSON_predicate
    +
               | JSON_exists_predicate
    +
    + referenced by: + + boolean_primary + + comparison_predicate: + + + + + + + + row_value_predicand + + + comparison_predicate_part_2 + + + + + + + referenced by: + + predicate + + comparison_predicate_part_2: + + + + + + + + comp_op + + + row_value_predicand + + + + +
             ::= comp_op row_value_predicand
    +
    + referenced by: + + comparison_predicate + when_operand + + comp_op: + + + + + + + + = + + + <> + + + < + + + > + + + <= + + + >= + + + + +
    comp_op  ::= '='
    +
               | '<>'
    +
               | '<'
    +
               | '>'
    +
               | '<='
    +
               | '>='
    +
    + referenced by: + + comparison_predicate_part_2 + quantified_comparison_predicate_part_2 + + between_predicate: + + + + + + + + row_value_predicand + + + between_predicate_part_2 + + + + + + + referenced by: + + predicate + + between_predicate_part_2: + + + + + + + + NOT + + + BETWEEN + + + ASYMMETRIC + + + SYMMETRIC + + + row_value_predicand + + AND + + + row_value_predicand + + + + +
             ::= 'NOT'? 'BETWEEN' ( 'ASYMMETRIC' | 'SYMMETRIC' )? row_value_predicand 'AND' row_value_predicand
    +
    + referenced by: + + between_predicate + when_operand + + in_predicate: + + + + + + + + row_value_predicand + + + in_predicate_part_2 + + + + + + + referenced by: + + predicate + + in_predicate_part_2: + + + + + + + + NOT + + + IN + + + in_predicate_value + + + + +
             ::= 'NOT'? 'IN' in_predicate_value
    +
    + referenced by: + + in_predicate + when_operand + + in_predicate_value: + + + + + + + + table_subquery + + ( + + + in_value_list + + ) + + + + + +
             ::= table_subquery
    +
               | '(' in_value_list ')'
    +
    + referenced by: + + in_predicate_part_2 + + in_value_list: + + + + + + + + row_value_expression + + , + + + + + +
             ::= row_value_expression ( ',' row_value_expression )*
    +
    + referenced by: + + in_predicate_value + + like_predicate: + + + + + + + + character_like_predicate + + + octet_like_predicate + + + + +
             ::= character_like_predicate
    +
               | octet_like_predicate
    +
    + referenced by: + + predicate + + character_like_predicate: + + + + + + + + row_value_predicand + + + character_like_predicate_part_2 + + + + + + + referenced by: + + like_predicate + + character_like_predicate_part_2: + + + + + + + + NOT + + + LIKE + + + character_pattern + + ESCAPE + + + escape_character + + + + +
             ::= 'NOT'? 'LIKE' character_pattern ( 'ESCAPE' escape_character )?
    +
    + referenced by: + + character_like_predicate + when_operand + + character_pattern: + + + + + + + + character_value_expression + + + + +
             ::= character_value_expression
    +
    + referenced by: + + character_like_predicate_part_2 + + escape_character: + + + + + + + + character_value_expression + + + + +
             ::= character_value_expression
    +
    + referenced by: + + character_like_predicate_part_2 + regular_expression_substring_function + similar_predicate_part_2 + + octet_like_predicate: + + + + + + + + row_value_predicand + + + octet_like_predicate_part_2 + + + + + + + referenced by: + + like_predicate + + octet_like_predicate_part_2: + + + + + + + + NOT + + + LIKE + + + octet_pattern + + ESCAPE + + + escape_octet + + + + +
             ::= 'NOT'? 'LIKE' octet_pattern ( 'ESCAPE' escape_octet )?
    +
    + referenced by: + + octet_like_predicate + when_operand + + octet_pattern: + + + + + + + + binary_value_expression + + + + +
             ::= binary_value_expression
    +
    + referenced by: + + octet_like_predicate_part_2 + + escape_octet: + + + + + + + + binary_value_expression + + + + +
             ::= binary_value_expression
    +
    + referenced by: + + octet_like_predicate_part_2 + + similar_predicate: + + + + + + + + row_value_predicand + + + similar_predicate_part_2 + + + + + + + referenced by: + + predicate + + similar_predicate_part_2: + + + + + + + + NOT + + + SIMILAR + + + TO + + + similar_pattern + + ESCAPE + + + escape_character + + + + +
             ::= 'NOT'? 'SIMILAR' 'TO' similar_pattern ( 'ESCAPE' escape_character )?
    +
    + referenced by: + + similar_predicate + when_operand + + similar_pattern: + + + + + + + + character_value_expression + + + + +
             ::= character_value_expression
    +
    + referenced by: + + similar_predicate_part_2 + + regular_term: + + + + + + + + regular_factor + + + + +
             ::= regular_factor+
    +
    + referenced by: + + regular_primary + + regular_factor: + + + + + + + + regular_primary + + * + + + + + + + ? + + + repeat_factor + + + + +
             ::= regular_primary ( '*' | '+' | '?' | repeat_factor )?
    +
    + referenced by: + + regular_term + + repeat_factor: + + + + + + + + { + + + low_value + + + upper_limit + + } + + + + + +
             ::= '{' low_value upper_limit? '}'
    +
    + referenced by: + + regular_factor + + upper_limit: + + + + + + + + , + + + high_value + + + + +
             ::= ',' high_value?
    +
    + referenced by: + + repeat_factor + + low_value: + + + + + + + + unsigned_integer + + + + +
             ::= unsigned_integer
    +
    + referenced by: + + repeat_factor + + high_value: + + + + + + + + unsigned_integer + + + + +
             ::= unsigned_integer
    +
    + referenced by: + + upper_limit + + regular_primary: + + + + + + + + character_specifier + + % + + + regular_character_set + + ( + + + regular_term + + | + + + ) + + + + + +
             ::= character_specifier
    +
               | '%'
    +
               | regular_character_set
    +
               | '(' regular_term ( '|' regular_term )* ')'
    +
    + referenced by: + + regular_factor + + character_specifier: + + + + + + + + !! See the Syntax Rules. + + + + + +
             ::= '!! See the Syntax Rules.'
    +
    + referenced by: + + character_enumeration + regular_primary + + regular_character_set: + + + + + + + + _ + + + [ + + + ^ + + + character_enumeration + + + character_enumeration_include + + ^ + + + character_enumeration_exclude + + ] + + + + + +
             ::= '_'
    +
    +
    + referenced by: + + regular_primary + + character_enumeration_include: + + + + + + + + character_enumeration + + + + +
             ::= character_enumeration
    +
    + referenced by: + + regular_character_set + + character_enumeration_exclude: + + + + + + + + character_enumeration + + + + +
             ::= character_enumeration
    +
    + referenced by: + + regular_character_set + + character_enumeration: + + + + + + + + character_specifier + + - + + + character_specifier + + [ + + + : + + + regular_character_set_identifier + + : + + + ] + + + + + +
             ::= character_specifier ( '-' character_specifier )?
    +
               | '[' ':' regular_character_set_identifier ':' ']'
    +
    + referenced by: + + character_enumeration_exclude + character_enumeration_include + regular_character_set + + regular_character_set_identifier: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + character_enumeration + + regex_like_predicate: + + + + + + + + row_value_predicand + + + regex_like_predicate_part_2 + + + + + + + referenced by: + + predicate + + regex_like_predicate_part_2: + + + + + + + + NOT + + + LIKE_REGEX + + + XQuery_pattern + + FLAG* + + + XQuery_option_flag + + + + +
             ::= 'NOT'? 'LIKE_REGEX' XQuery_pattern ( 'FLAG*' XQuery_option_flag )?
    +
    + referenced by: + + regex_like_predicate + when_operand + + null_predicate: + + + + + + + + row_value_predicand + + + null_predicate_part_2 + + + + + + + referenced by: + + predicate + + null_predicate_part_2: + + + + + + + + IS + + + NOT + + + NULL + + + + + +
             ::= 'IS' 'NOT'? 'NULL'
    +
    + referenced by: + + null_predicate + when_operand + + quantified_comparison_predicate: + + + + + + + + row_value_predicand + + + quantified_comparison_predicate_part_2 + + + + + + + referenced by: + + predicate + + quantified_comparison_predicate_part_2: + + + + + + + + comp_op + + + quantifier + + + table_subquery + + + + +
             ::= comp_op quantifier table_subquery
    +
    + referenced by: + + quantified_comparison_predicate + when_operand + + quantifier: + + + + + + + + ALL + + + some + + + + +
             ::= 'ALL'
    +
               | some
    +
    + referenced by: + + quantified_comparison_predicate_part_2 + + some: + + + + + + + + SOME + + + ANY + + + + +
    some     ::= 'SOME'
    +
               | 'ANY'
    +
    + referenced by: + + quantifier + + exists_predicate: + + + + + + + + EXISTS + + + table_subquery + + + + +
             ::= 'EXISTS' table_subquery
    +
    + referenced by: + + predicate + + unique_predicate: + + + + + + + + UNIQUE + + + table_subquery + + + + +
             ::= 'UNIQUE' table_subquery
    +
    + referenced by: + + predicate + + normalized_predicate: + + + + + + + + row_value_predicand + + + normalized_predicate_part_2 + + + + + + + referenced by: + + predicate + + normalized_predicate_part_2: + + + + + + + + IS + + + NOT + + + normal_form + + NORMALIZED* + + + + + +
             ::= 'IS' 'NOT'? normal_form? 'NORMALIZED*'
    +
    + referenced by: + + normalized_predicate + when_operand + + match_predicate: + + + + + + + + row_value_predicand + + + match_predicate_part_2 + + + + + + + referenced by: + + predicate + + match_predicate_part_2: + + + + + + + + MATCH + + + UNIQUE + + + SIMPLE* + + + PARTIAL* + + + FULL + + + table_subquery + + + + +
             ::= 'MATCH' 'UNIQUE'? ( 'SIMPLE*' | 'PARTIAL*' | 'FULL' )? table_subquery
    +
    + referenced by: + + match_predicate + when_operand + + overlaps_predicate: + + + + + + + + overlaps_predicate_part_1 + + + overlaps_predicate_part_2 + + + + + + + referenced by: + + predicate + + overlaps_predicate_part_1: + + + + + + + + row_value_predicand_1 + + + + +
             ::= row_value_predicand_1
    +
    + referenced by: + + case_operand + overlaps_predicate + + overlaps_predicate_part_2: + + + + + + + + OVERLAPS + + + row_value_predicand_2 + + + + +
             ::= 'OVERLAPS' row_value_predicand_2
    +
    + referenced by: + + overlaps_predicate + when_operand + + row_value_predicand_1: + + + + + + + + row_value_predicand + + + + +
             ::= row_value_predicand
    +
    + referenced by: + + overlaps_predicate_part_1 + + row_value_predicand_2: + + + + + + + + row_value_predicand + + + + +
             ::= row_value_predicand
    +
    + referenced by: + + overlaps_predicate_part_2 + + distinct_predicate: + + + + + + + + row_value_predicand_3 + + + distinct_predicate_part_2 + + + + + + + referenced by: + + predicate + + distinct_predicate_part_2: + + + + + + + + IS + + + NOT + + + DISTINCT + + + FROM + + + row_value_predicand_4 + + + + +
             ::= 'IS' 'NOT'? 'DISTINCT' 'FROM' row_value_predicand_4
    +
    + referenced by: + + distinct_predicate + when_operand + + row_value_predicand_3: + + + + + + + + row_value_predicand + + + + +
             ::= row_value_predicand
    +
    + referenced by: + + distinct_predicate + + row_value_predicand_4: + + + + + + + + row_value_predicand + + + + +
             ::= row_value_predicand
    +
    + referenced by: + + distinct_predicate_part_2 + + member_predicate: + + + + + + + + row_value_predicand + + + member_predicate_part_2 + + + + + + + referenced by: + + predicate + + member_predicate_part_2: + + + + + + + + NOT + + + MEMBER + + + OF + + + multiset_value_expression + + + + +
             ::= 'NOT'? 'MEMBER' 'OF'? multiset_value_expression
    +
    + referenced by: + + member_predicate + when_operand + + submultiset_predicate: + + + + + + + + row_value_predicand + + + submultiset_predicate_part_2 + + + + + + + referenced by: + + predicate + + submultiset_predicate_part_2: + + + + + + + + NOT + + + SUBMULTISET + + + OF + + + multiset_value_expression + + + + +
             ::= 'NOT'? 'SUBMULTISET' 'OF'? multiset_value_expression
    +
    + referenced by: + + submultiset_predicate + when_operand + + set_predicate: + + + + + + + + row_value_predicand + + + set_predicate_part_2 + + + + + + + referenced by: + + predicate + + set_predicate_part_2: + + + + + + + + IS + + + NOT + + + A + + + SET + + + + + +
             ::= 'IS' 'NOT'? 'A' 'SET'
    +
    + referenced by: + + set_predicate + when_operand + + type_predicate: + + + + + + + + row_value_predicand + + + type_predicate_part_2 + + + + + + + referenced by: + + predicate + + type_predicate_part_2: + + + + + + + + IS + + + NOT + + + OF + + + ( + + + type_list + + ) + + + + + +
             ::= 'IS' 'NOT'? 'OF' '(' type_list ')'
    +
    + referenced by: + + type_predicate + when_operand + + type_list: + + + + + + + + user_defined_type_specification + + , + + + + + + + + referenced by: + + type_predicate_part_2 + + user_defined_type_specification: + + + + + + + + inclusive_user_defined_type_specification + + + exclusive_user_defined_type_specification + + + + + + + + referenced by: + + type_list + + inclusive_user_defined_type_specification: + + + + + + + + path_resolved_user_defined_type_name + + + + + + + referenced by: + + user_defined_type_specification + + exclusive_user_defined_type_specification: + + + + + + + + ONLY + + + path_resolved_user_defined_type_name + + + + +
             ::= 'ONLY' path_resolved_user_defined_type_name
    +
    + referenced by: + + user_defined_type_specification + + period_predicate: + + + + + + + + period_overlaps_predicate + + + period_equals_predicate + + + period_contains_predicate + + + period_precedes_predicate + + + period_succeeds_predicate + + + period_immediately_precedes_predicate + + + period_immediately_succeeds_predicate + + + + +
             ::= period_overlaps_predicate
    +
               | period_equals_predicate
    +
               | period_contains_predicate
    +
               | period_precedes_predicate
    +
               | period_succeeds_predicate
    + +
    +
    + referenced by: + + predicate + + period_overlaps_predicate: + + + + + + + + period_predicand_1 + + + period_overlaps_predicate_part_2 + + + + + + + referenced by: + + period_predicate + + period_overlaps_predicate_part_2: + + + + + + + + OVERLAPS + + + period_predicand_2 + + + + +
             ::= 'OVERLAPS' period_predicand_2
    +
    + referenced by: + + period_overlaps_predicate + + period_predicand_1: + + + + + + + + period_predicand + + + + +
             ::= period_predicand
    +
    + referenced by: + + period_contains_predicate + period_equals_predicate + period_immediately_precedes_predicate + period_immediately_succeeds_predicate + period_overlaps_predicate + period_precedes_predicate + period_succeeds_predicate + + period_predicand_2: + + + + + + + + period_predicand + + + + +
             ::= period_predicand
    +
    + referenced by: + + period_equals_predicate_part_2 + period_immediately_precedes_predicate_part_2 + period_immediately_succeeds_predicate_part_2 + period_overlaps_predicate_part_2 + period_precedes_predicate_part_2 + period_succeeds_predicate_part_2 + + period_predicand: + + + + + + + + period_reference + + PERIOD + + + ( + + + period_start_value + + , + + + period_end_value + + ) + + + + + +
             ::= period_reference
    +
               | 'PERIOD' '(' period_start_value ',' period_end_value ')'
    +
    + referenced by: + + period_or_point_in_time_predicand + period_predicand_1 + period_predicand_2 + + period_reference: + + + + + + + + basic_identifier_chain + + + + +
             ::= basic_identifier_chain
    +
    + referenced by: + + period_predicand + + period_start_value: + + + + + + + + datetime_value_expression + + + + +
             ::= datetime_value_expression
    +
    + referenced by: + + period_predicand + + period_end_value: + + + + + + + + datetime_value_expression + + + + +
             ::= datetime_value_expression
    +
    + referenced by: + + period_predicand + + period_equals_predicate: + + + + + + + + period_predicand_1 + + + period_equals_predicate_part_2 + + + + + + + referenced by: + + period_predicate + + period_equals_predicate_part_2: + + + + + + + + EQUALS + + + period_predicand_2 + + + + +
             ::= 'EQUALS' period_predicand_2
    +
    + referenced by: + + period_equals_predicate + + period_contains_predicate: + + + + + + + + period_predicand_1 + + + period_contains_predicate_part_2 + + + + + + + referenced by: + + period_predicate + + period_contains_predicate_part_2: + + + + + + + + CONTAINS + + + period_or_point_in_time_predicand + + + + +
             ::= 'CONTAINS' period_or_point_in_time_predicand
    +
    + referenced by: + + period_contains_predicate + + period_or_point_in_time_predicand: + + + + + + + + period_predicand + + + datetime_value_expression + + + + +
             ::= period_predicand
    +
               | datetime_value_expression
    +
    + referenced by: + + period_contains_predicate_part_2 + + period_precedes_predicate: + + + + + + + + period_predicand_1 + + + period_precedes_predicate_part_2 + + + + + + + referenced by: + + period_predicate + + period_precedes_predicate_part_2: + + + + + + + + PRECEDES + + + period_predicand_2 + + + + +
             ::= 'PRECEDES' period_predicand_2
    +
    + referenced by: + + period_precedes_predicate + + period_succeeds_predicate: + + + + + + + + period_predicand_1 + + + period_succeeds_predicate_part_2 + + + + + + + referenced by: + + period_predicate + + period_succeeds_predicate_part_2: + + + + + + + + SUCCEEDS + + + period_predicand_2 + + + + +
             ::= 'SUCCEEDS' period_predicand_2
    +
    + referenced by: + + period_succeeds_predicate + + period_immediately_precedes_predicate: + + + + + + + + period_predicand_1 + + + period_immediately_precedes_predicate_part_2 + + + + + + + referenced by: + + period_predicate + + period_immediately_precedes_predicate_part_2: + + + + + + + + IMMEDIATELY* + + + PRECEDES + + + period_predicand_2 + + + + +
             ::= 'IMMEDIATELY*' 'PRECEDES' period_predicand_2
    +
    + referenced by: + + period_immediately_precedes_predicate + + period_immediately_succeeds_predicate: + + + + + + + + period_predicand_1 + + + period_immediately_succeeds_predicate_part_2 + + + + + + + referenced by: + + period_predicate + + period_immediately_succeeds_predicate_part_2: + + + + + + + + IMMEDIATELY* + + + SUCCEEDS + + + period_predicand_2 + + + + +
             ::= 'IMMEDIATELY*' 'SUCCEEDS' period_predicand_2
    +
    + referenced by: + + period_immediately_succeeds_predicate + + search_condition: + + + + + + + + boolean_value_expression + + + + +
             ::= boolean_value_expression
    +
    + referenced by: + + assertion_definition + check_constraint_definition + delete_statement__searched + filter_clause + having_clause + join_condition + merge_statement + merge_when_matched_clause + merge_when_not_matched_clause + row_pattern_definition_search_condition + searched_when_clause + triggered_when_clause + update_statement__searched + where_clause + + JSON_predicate: + + + + + + + + string_value_expression + + + JSON_input_clause + + IS + + + NOT + + + JSON* + + + JSON_predicate_type_constraint + + + JSON_key_uniqueness_constraint + + + + + + + referenced by: + + predicate + + JSON_predicate_type_constraint: + + + + + + + + VALUE + + + ARRAY + + + OBJECT* + + + SCALAR* + + + + + +
             ::= 'VALUE'
    +
               | 'ARRAY'
    +
               | 'OBJECT*'
    +
               | 'SCALAR*'
    +
    + referenced by: + + JSON_predicate + + JSON_key_uniqueness_constraint: + + + + + + + + WITH + + + WITHOUT + + + UNIQUE + + + KEYS* + + + + + +
             ::= ( 'WITH' | 'WITHOUT' ) 'UNIQUE' 'KEYS*'?
    +
    + referenced by: + + JSON_object_aggregate_constructor + JSON_object_constructor + JSON_predicate + + JSON_exists_predicate: + + + + + + + + JSON_EXISTS + + + ( + + + JSON_API_common_syntax + + + JSON_exists_error_behavior + + ON + + + ERROR* + + + ) + + + + + +
             ::= 'JSON_EXISTS' '(' JSON_API_common_syntax ( JSON_exists_error_behavior 'ON' 'ERROR*' )? ')'
    +
    + referenced by: + + predicate + + JSON_exists_error_behavior: + + + + + + + + TRUE + + + FALSE + + + UNKNOWN + + + ERROR* + + + + + +
             ::= 'TRUE'
    +
               | 'FALSE'
    +
               | 'UNKNOWN'
    +
               | 'ERROR*'
    +
    + referenced by: + + JSON_exists_predicate + + SQL_JSON_special_symbol: + + + + + + + + * + + + @ + + + , + + + $ + + + && + + + == + + + || + + + ! + + + > + + + >= + + + [ + + + ( + + + < + + + <= + + + - + + + <> + + + % + + + . + + + + + + + ? + + + ] + + + ) + + + / + + + + + +
             ::= '*'
    +
               | '@'
    +
               | ','
    +
               | '$'
    +
               | '&&'
    +
               | '=='
    +
               | '||'
    +
               | '!'
    +
               | '>'
    +
               | '>='
    +
               | '['
    +
               | '('
    +
               | '<'
    +
               | '<='
    +
               | '-'
    +
               | '<>'
    +
               | '%'
    +
               | '.'
    +
               | '+'
    +
               | '?'
    +
               | ']'
    +
               | ')'
    +
               | '/'
    +
    + no referencesSQL_JSON_key_word: + + + + + + + + abs + + + ceiling + + + datetime + + + double + + + exists + + + false + + + flag + + + floor + + + is + + + keyvalue + + + last + + + lax + + + like_regex + + + null + + + size + + + starts + + + strict + + + to + + + true + + + type + + + unknown + + + with + + + + + +
             ::= 'abs'
    +
               | 'ceiling'
    +
               | 'datetime'
    +
               | 'double'
    +
               | 'exists'
    +
               | 'false'
    +
               | 'flag'
    +
               | 'floor'
    +
               | 'is'
    +
               | 'keyvalue'
    +
               | 'last'
    +
               | 'lax'
    +
               | 'like_regex'
    +
               | 'null'
    +
               | 'size'
    +
               | 'starts'
    +
               | 'strict'
    +
               | 'to'
    +
               | 'true'
    +
               | 'type'
    +
               | 'unknown'
    +
               | 'with'
    +
    + no referencesJSON_path_context_variable: + + + + + + + + !! See the Syntax Rules. + + + $ + + + + + +
             ::= '!! See the Syntax Rules.'
    +
               | '$'
    +
    + referenced by: + + JSON_path_variable + + JSON_path_named_variable: + + + + + + + + $ + + + !! See the Syntax Rules. + + + + + +
             ::= '$'? '!! See the Syntax Rules.'
    +
    + referenced by: + + JSON_path_variable + JSON_starts_with_initial + + JSON_path_expression: + + + + + + + + JSON_path_mode + + + JSON_path_wff + + + + +
             ::= JSON_path_mode JSON_path_wff
    +
    + no referencesJSON_path_mode: + + + + + + + + strict + + + lax + + + + + +
             ::= 'strict'
    +
               | 'lax'
    +
    + referenced by: + + JSON_path_expression + + JSON_path_primary: + + + + + + + + !! See the Syntax Rules. + + + JSON_path_variable + + ( + + + JSON_path_wff + + ) + + + + + +
             ::= '!! See the Syntax Rules.'
    +
               | JSON_path_variable
    +
               | '(' JSON_path_wff ')'
    +
    + referenced by: + + JSON_unary_expression + + JSON_path_variable: + + + + + + + + JSON_path_context_variable + + + JSON_path_named_variable + + @ + + + last + + + + + +
             ::= JSON_path_context_variable
    +
               | JSON_path_named_variable
    +
               | '@'
    +
               | 'last'
    +
    + referenced by: + + JSON_path_primary + + JSON_accessor_op: + + + + + + + + JSON____member_accessor + + + JSON____wildcard_member_accessor + + + JSON____array_accessor + + + JSON____wildcard_array_accessor + + + JSON____filter_expression + + + JSON____item_method + + + + +
             ::= JSON____member_accessor
    +
               | JSON____wildcard_member_accessor
    +
               | JSON____array_accessor
    +
               | JSON____wildcard_array_accessor
    +
               | JSON____filter_expression
    +
               | JSON____item_method
    +
    + referenced by: + + JSON_unary_expression + + JSON_member_accessor: + + + + + + + + . + + + !! See the Syntax Rules. + + + + + +
             ::= '.' '!! See the Syntax Rules.'
    +
    + no referencesJSON_wildcard_member_accessor: + + + + + + + + . + + + * + + + + + +
             ::= '.' '*'
    +
    + no referencesJSON_array_accessor: + + + + + + + + [ + + + JSON_subscript_list + + ] + + + + + +
             ::= '[' JSON_subscript_list ']'
    +
    + no referencesJSON_subscript_list: + + + + + + + + JSON_subscript + + , + + + + + +
             ::= JSON_subscript ( ',' JSON_subscript )*
    +
    + referenced by: + + JSON_array_accessor + + JSON_subscript: + + + + + + + + JSON_path_wff_1 + + + JSON_path_wff_2 + + to + + + JSON_path_wff_3 + + + + +
             ::= JSON_path_wff_1
    +
               | JSON_path_wff_2 'to' JSON_path_wff_3
    +
    + referenced by: + + JSON_subscript_list + + JSON_path_wff_1: + + + + + + + + JSON_path_wff + + + + +
             ::= JSON_path_wff
    +
    + referenced by: + + JSON_subscript + + JSON_path_wff_2: + + + + + + + + JSON_path_wff + + + + +
             ::= JSON_path_wff
    +
    + referenced by: + + JSON_subscript + + JSON_path_wff_3: + + + + + + + + JSON_path_wff + + + + +
             ::= JSON_path_wff
    +
    + referenced by: + + JSON_subscript + + JSON_wildcard_array_accessor: + + + + + + + + [ + + + * + + + ] + + + + + +
             ::= '[' '*' ']'
    +
    + no referencesJSON_filter_expression: + + + + + + + + ? + + + ( + + + JSON_path_predicate + + ) + + + + + +
             ::= '?' '(' JSON_path_predicate ')'
    +
    + no referencesJSON_item_method: + + + + + + + + . + + + JSON_method + + + + +
             ::= '.' JSON_method
    +
    + no referencesJSON_method: + + + + + + + + type + + + size + + + double + + + ceiling + + + floor + + + abs + + + keyvalue + + + ( + + + datetime + + + ( + + + !! See the Syntax Rules. + + + ) + + + + + +
             ::= ( ( 'type' | 'size' | 'double' | 'ceiling' | 'floor' | 'abs' | 'keyvalue' + ) '(' | 'datetime' '(' '!! See the Syntax Rules.'? ) ')'
    +
    + referenced by: + + JSON_item_method + + JSON_unary_expression: + + + + + + + + + + + + - + + + JSON_path_primary + + + JSON_accessor_op + + + + +
             ::= ( '+' | '-' )* JSON_path_primary JSON_accessor_op*
    +
    + referenced by: + + JSON_multiplicative_expression + + JSON_multiplicative_expression: + + + + + + + + JSON_unary_expression + + * + + + / + + + % + + + + + +
             ::= JSON_unary_expression ( ( '*' | '/' | '%' ) JSON_unary_expression )*
    +
    + referenced by: + + JSON_path_wff + + JSON_path_wff: + + + + + + + + JSON_multiplicative_expression + + + + + + - + + + + + +
             ::= JSON_multiplicative_expression ( ( '+' | '-' ) JSON_multiplicative_expression )*
    +
    + referenced by: + + JSON_comparison_predicate + JSON_exists_path_predicate + JSON_like_regex_predicate + JSON_path_expression + JSON_path_primary + JSON_path_wff_1 + JSON_path_wff_2 + JSON_path_wff_3 + JSON_starts_with_whole + + JSON_predicate_primary: + + + + + + + + JSON_delimited_predicate + + + JSON_non_delimited_predicate + + + + +
             ::= JSON_delimited_predicate
    +
               | JSON_non_delimited_predicate
    +
    + referenced by: + + JSON_boolean_negation + + JSON_delimited_predicate: + + + + + + + + JSON_exists_path_predicate + + ( + + + JSON_path_predicate + + ) + + + + + +
             ::= JSON_exists_path_predicate
    +
               | '(' JSON_path_predicate ')'
    +
    + referenced by: + + JSON_boolean_negation + JSON_predicate_primary + + JSON_non_delimited_predicate: + + + + + + + + JSON_comparison_predicate + + + JSON_like_regex_predicate + + + JSON_starts_with_predicate + + + JSON_unknown_predicate + + + + +
             ::= JSON_comparison_predicate
    +
               | JSON_like_regex_predicate
    +
               | JSON_starts_with_predicate
    +
               | JSON_unknown_predicate
    +
    + referenced by: + + JSON_predicate_primary + + JSON_exists_path_predicate: + + + + + + + + exists + + + ( + + + JSON_path_wff + + ) + + + + + +
             ::= 'exists' '(' JSON_path_wff ')'
    +
    + referenced by: + + JSON_delimited_predicate + + JSON_comparison_predicate: + + + + + + + + JSON_path_wff + + + JSON_comp_op + + + JSON_path_wff + + + + + + + referenced by: + + JSON_non_delimited_predicate + + JSON_comp_op: + + + + + + + + == + + + <> + + + < + + + > + + + <= + + + >= + + + + + +
             ::= '=='
    +
               | '<>'
    +
               | '<'
    +
               | '>'
    +
               | '<='
    +
               | '>='
    +
    + referenced by: + + JSON_comparison_predicate + + JSON_like_regex_predicate: + + + + + + + + JSON_path_wff + + like_regex + + + !! See the Syntax Rules. + + + flag + + + !! See the Syntax Rules. + + + + + +
             ::= JSON_path_wff 'like_regex' '!! See the Syntax Rules.' ( 'flag' '!! See the Syntax Rules.' )?
    +
    + referenced by: + + JSON_non_delimited_predicate + + JSON_starts_with_predicate: + + + + + + + + JSON_starts_with_whole + + starts + + + with + + + JSON_starts_with_initial + + + + +
             ::= JSON_starts_with_whole 'starts' 'with' JSON_starts_with_initial
    +
    + referenced by: + + JSON_non_delimited_predicate + + JSON_starts_with_whole: + + + + + + + + JSON_path_wff + + + + +
             ::= JSON_path_wff
    +
    + referenced by: + + JSON_starts_with_predicate + + JSON_starts_with_initial: + + + + + + + + !! See the Syntax Rules. + + + JSON_path_named_variable + + + + +
             ::= '!! See the Syntax Rules.'
    +
               | JSON_path_named_variable
    +
    + referenced by: + + JSON_starts_with_predicate + + JSON_unknown_predicate: + + + + + + + + ( + + + JSON_path_predicate + + ) + + + is + + + unknown + + + + + +
             ::= '(' JSON_path_predicate ')' 'is' 'unknown'
    +
    + referenced by: + + JSON_non_delimited_predicate + + JSON_boolean_negation: + + + + + + + + JSON_predicate_primary + + ! + + + JSON_delimited_predicate + + + + +
             ::= JSON_predicate_primary
    +
               | '!' JSON_delimited_predicate
    +
    + referenced by: + + JSON_boolean_conjunction + + JSON_boolean_conjunction: + + + + + + + + JSON_boolean_negation + + && + + + + + +
             ::= JSON_boolean_negation ( '&&' JSON_boolean_negation )*
    +
    + referenced by: + + JSON_path_predicate + + JSON_path_predicate: + + + + + + + + JSON_boolean_conjunction + + || + + + + + +
             ::= JSON_boolean_conjunction ( '||' JSON_boolean_conjunction )*
    +
    + referenced by: + + JSON_delimited_predicate + JSON_filter_expression + JSON_unknown_predicate + + datetime_template: + + + + + + + + datetime_template_part + + + + +
             ::= datetime_template_part+
    +
    + no referencesdatetime_template_part: + + + + + + + + datetime_template_field + + + datetime_template_delimiter + + + + +
             ::= datetime_template_field
    +
               | datetime_template_delimiter
    +
    + referenced by: + + datetime_template + + datetime_template_field: + + + + + + + + datetime_template_year + + + datetime_template_rounded_year + + + datetime_template_month + + + datetime_template_day_of_month + + + datetime_template_day_of_year + + + datetime_template_12_hour + + HH24 + + + datetime_template_minute + + + datetime_template_second_of_minute + + + datetime_template_second_of_day + + + datetime_template_fraction + + + datetime_template_am_pm + + + datetime_template_time_zone_hour + + + datetime_template_time_zone_minute + + + + +
             ::= datetime_template_year
    +
               | datetime_template_rounded_year
    +
               | datetime_template_month
    +
               | datetime_template_day_of_month
    +
               | datetime_template_day_of_year
    +
               | datetime_template_12_hour
    +
               | 'HH24'
    +
               | datetime_template_minute
    +
               | datetime_template_second_of_minute
    +
               | datetime_template_second_of_day
    +
               | datetime_template_fraction
    +
               | datetime_template_am_pm
    +
               | datetime_template_time_zone_hour
    +
               | datetime_template_time_zone_minute
    +
    + referenced by: + + datetime_template_part + + datetime_template_delimiter: + + + + + + + + - + + + . + + + / + + + , + + + ' + + + ; + + + : + + + !! See the Syntax Rules. + + + + + +
             ::= '-'
    +
               | '.'
    +
               | '/'
    +
               | ','
    +
               | "'"
    +
               | ';'
    +
               | ':'
    +
               | '!! See the Syntax Rules.'
    +
    + referenced by: + + datetime_template_part + + datetime_template_year: + + + + + + + + YYYY + + + YYY + + + YY + + Y + + + + + +
             ::= YYYY
    +
               | YYY
    +
               | YY
    +
               | 'Y'
    +
    + referenced by: + + datetime_template_field + + datetime_template_rounded_year: + + + + + + + + RRRR + + + RR + + + + +
             ::= RRRR
    +
               | RR
    +
    + referenced by: + + datetime_template_field + + datetime_template_month: + + + + + + + + MM + + + + +
             ::= MM
    +
    + referenced by: + + datetime_template_field + + datetime_template_day_of_month: + + + + + + + + DD + + + + +
             ::= DD
    +
    + referenced by: + + datetime_template_field + + datetime_template_day_of_year: + + + + + + + + DDD + + + + +
             ::= DDD
    +
    + referenced by: + + datetime_template_field + + datetime_template_12_hour: + + + + + + + + HH + + HH12 + + + + + +
             ::= HH
    +
               | 'HH12'
    +
    + referenced by: + + datetime_template_field + + datetime_template_minute: + + + + + + + + MI + + + + +
             ::= MI
    +
    + referenced by: + + datetime_template_field + + datetime_template_second_of_minute: + + + + + + + + SS + + + + +
             ::= SS
    +
    + referenced by: + + datetime_template_field + + datetime_template_second_of_day: + + + + + + + + SSSSS + + + + +
             ::= SSSSS
    +
    + referenced by: + + datetime_template_field + + datetime_template_fraction: + + + + + + + + FF1 + + + FF2 + + + FF3 + + + FF4 + + + FF5 + + + FF6 + + + FF7 + + + FF8 + + + FF9 + + + + + +
             ::= 'FF1'
    +
               | 'FF2'
    +
               | 'FF3'
    +
               | 'FF4'
    +
               | 'FF5'
    +
               | 'FF6'
    +
               | 'FF7'
    +
               | 'FF8'
    +
               | 'FF9'
    +
    + referenced by: + + datetime_template_field + + datetime_template_am_pm: + + + + + + + + A.M. + + + P.M. + + + + + +
             ::= 'A.M.'
    +
               | 'P.M.'
    +
    + referenced by: + + datetime_template_field + + datetime_template_time_zone_hour: + + + + + + + + TZH + + + + +
             ::= TZH
    +
    + referenced by: + + datetime_template_field + + datetime_template_time_zone_minute: + + + + + + + + TZM + + + + +
             ::= TZM
    +
    + referenced by: + + datetime_template_field + + interval_qualifier: + + + + + + + + start_field + + TO + + + end_field + + + single_datetime_field + + + + +
             ::= start_field 'TO' end_field
    +
               | single_datetime_field
    +
    + referenced by: + + interval_literal + interval_primary + interval_type + interval_value_expression + + start_field: + + + + + + + + non_second_primary_datetime_field + + ( + + + interval_leading_field_precision + + ) + + + + + + + + referenced by: + + interval_qualifier + + end_field: + + + + + + + + non_second_primary_datetime_field + + SECOND + + + ( + + + interval_fractional_seconds_precision + + ) + + + + + +
             ::= non_second_primary_datetime_field
    +
               | 'SECOND' ( '(' interval_fractional_seconds_precision ')' )?
    +
    + referenced by: + + interval_qualifier + + single_datetime_field: + + + + + + + + non_second_primary_datetime_field + + ( + + + interval_leading_field_precision + + ) + + + SECOND + + + ( + + + interval_leading_field_precision + + , + + + interval_fractional_seconds_precision + + ) + + + + + + +
               | 'SECOND' ( '(' interval_leading_field_precision ( ',' interval_fractional_seconds_precision )? ')' )?
    +
    + referenced by: + + interval_qualifier + + primary_datetime_field: + + + + + + + + non_second_primary_datetime_field + + SECOND + + + + + +
             ::= non_second_primary_datetime_field
    +
               | 'SECOND'
    +
    + referenced by: + + extract_field + + non_second_primary_datetime_field: + + + + + + + + YEAR + + + MONTH + + + DAY + + + HOUR + + + MINUTE + + + + + +
             ::= 'YEAR'
    +
               | 'MONTH'
    +
               | 'DAY'
    +
               | 'HOUR'
    +
               | 'MINUTE'
    +
    + referenced by: + + end_field + primary_datetime_field + single_datetime_field + start_field + + interval_fractional_seconds_precision: + + + + + + + + unsigned_integer + + + + +
             ::= unsigned_integer
    +
    + referenced by: + + end_field + single_datetime_field + + interval_leading_field_precision: + + + + + + + + unsigned_integer + + + + +
             ::= unsigned_integer
    +
    + referenced by: + + single_datetime_field + start_field + + language_clause: + + + + + + + + LANGUAGE + + + language_name + + + + +
             ::= 'LANGUAGE' language_name
    +
    + referenced by: + + SQL_client_module_definition + alter_routine_characteristic + method_characteristic + routine_characteristic + + language_name: + + + + + + + + ADA* + + + C + + + COBOL* + + + FORTRAN* + + + M + + + MUMPS* + + + PASCAL* + + + PLI* + + + SQL + + + + + +
             ::= 'ADA*'
    +
               | 'C'
    +
               | 'COBOL*'
    +
               | 'FORTRAN*'
    +
               | 'M'
    +
               | 'MUMPS*'
    +
               | 'PASCAL*'
    +
               | 'PLI*'
    +
               | 'SQL'
    +
    + referenced by: + + language_clause + + path_specification: + + + + + + + + PATH* + + + schema_name_list + + + + +
             ::= 'PATH*' schema_name_list
    +
    + referenced by: + + embedded_path_specification + module_path_specification + schema_path_specification + + schema_name_list: + + + + + + + + schema_name + + , + + + + + +
             ::= schema_name ( ',' schema_name )*
    +
    + referenced by: + + path_specification + + routine_invocation: + + + + + + + + routine_name + + + SQL_argument_list + + + + +
             ::= routine_name SQL_argument_list
    +
    + referenced by: + + PTF_derived_table + call_statement + constructor_method_selection + method_selection + new_invocation + nonparenthesized_value_expression_primary + static_method_selection + table_function_invocation + + routine_name: + + + + + + + + schema_name + + . + + + qualified_identifier + + + + +
             ::= schema_name '.'? qualified_identifier
    +
    + referenced by: + + routine_invocation + + SQL_argument_list: + + + + + + + + ( + + + SQL_argument + + , + + + copartition_clause + + ) + + + + + +
             ::= '(' ( SQL_argument ( ',' SQL_argument )* copartition_clause? )? ')'
    +
    + referenced by: + + attribute_or_method_reference + direct_invocation + generalized_invocation + method_reference + new_specification + routine_invocation + static_method_invocation + + SQL_argument: + + + + + + + + value_expression + + + generalized_expression + + + target_specification + + + contextually_typed_value_specification + + + named_argument_specification + + + table_argument + + + descriptor_argument + + + + +
             ::= value_expression
    +
               | generalized_expression
    +
               | target_specification
    + +
               | named_argument_specification
    +
               | table_argument
    +
               | descriptor_argument
    +
    + referenced by: + + SQL_argument_list + + generalized_expression: + + + + + + + + value_expression + + AS + + + path_resolved_user_defined_type_name + + + + + + + referenced by: + + SQL_argument + + named_argument_specification: + + + + + + + + SQL_parameter_name + + => + + + named_argument_SQL_argument + + + + + + + referenced by: + + SQL_argument + + named_argument_SQL_argument: + + + + + + + + value_expression + + + target_specification + + + contextually_typed_value_specification + + + table_argument + + + descriptor_argument + + + + +
             ::= value_expression
    +
               | target_specification
    + +
               | table_argument
    +
               | descriptor_argument
    +
    + referenced by: + + named_argument_specification + + table_argument: + + + + + + + + table_argument_proper + + AS + + + table_argument_correlation_name + + + table_argument_parenthesized_derived_column_list + + + table_argument_partitioning + + + table_argument_pruning + + + table_argument_ordering + + + + + + + referenced by: + + SQL_argument + named_argument_SQL_argument + + table_argument_correlation_name: + + + + + + + + correlation_name + + + + +
             ::= correlation_name
    +
    + referenced by: + + table_argument + + table_argument_parenthesized_derived_column_list: + + + + + + + + parenthesized_derived_column_list + + + + +
             ::= parenthesized_derived_column_list
    +
    + referenced by: + + table_argument + + table_argument_proper: + + + + + + + + TABLE + + + ( + + + table_or_query_name + + ) + + + table_subquery + + + table_function_invocation + + + + +
             ::= 'TABLE' ( '(' table_or_query_name ')' | table_subquery )
    +
               | table_function_invocation
    +
    + referenced by: + + table_argument + + table_function_invocation: + + + + + + + + routine_invocation + + + + +
             ::= routine_invocation
    +
    + referenced by: + + table_argument_proper + + table_argument_partitioning: + + + + + + + + PARTITION + + + BY + + + table_argument_partitioning_list + + + + +
             ::= 'PARTITION' 'BY' table_argument_partitioning_list
    +
    + referenced by: + + table_argument + + table_argument_partitioning_list: + + + + + + + + column_reference + + ( + + + column_reference + + , + + + ) + + + + + +
             ::= column_reference
    +
               | '(' ( column_reference ( ',' column_reference )* )? ')'
    +
    + referenced by: + + table_argument_partitioning + + table_argument_pruning: + + + + + + + + PRUNE* + + + KEEP* + + + WHEN + + + EMPTY + + + + + +
             ::= ( 'PRUNE*' | 'KEEP*' ) 'WHEN' 'EMPTY'
    +
    + referenced by: + + table_argument + + table_argument_ordering: + + + + + + + + ORDER + + + BY + + + table_argument_ordering_list + + + + +
             ::= 'ORDER' 'BY' table_argument_ordering_list
    +
    + referenced by: + + table_argument + + table_argument_ordering_list: + + + + + + + + table_argument_ordering_column + + ( + + + table_argument_ordering_column + + , + + + ) + + + + + +
             ::= table_argument_ordering_column
    +
               | '(' table_argument_ordering_column ( ',' table_argument_ordering_column )* ')'
    +
    + referenced by: + + table_argument_ordering + + table_argument_ordering_column: + + + + + + + + column_reference + + + ordering_specification + + + null_ordering + + + + + + + referenced by: + + table_argument_ordering_list + + copartition_clause: + + + + + + + + COPARTITION + + + copartition_list + + + + +
             ::= COPARTITION copartition_list
    +
    + referenced by: + + SQL_argument_list + + copartition_list: + + + + + + + + copartition_specification + + , + + + + + + + + referenced by: + + copartition_clause + + copartition_specification: + + + + + + + + ( + + + range_variable + + , + + + range_variable + + ) + + + + + +
             ::= '(' range_variable ( ',' range_variable )+ ')'
    +
    + referenced by: + + copartition_list + + range_variable: + + + + + + + + table_name + + + query_name + + + correlation_name + + + + +
             ::= table_name
    +
               | query_name
    +
               | correlation_name
    +
    + referenced by: + + copartition_specification + + descriptor_argument: + + + + + + + + descriptor_value_constructor + + CAST + + + ( + + + NULL + + + AS + + + DESCRIPTOR* + + + ) + + + + + +
             ::= descriptor_value_constructor
    +
               | 'CAST' '(' 'NULL' 'AS' 'DESCRIPTOR*' ')'
    +
    + referenced by: + + SQL_argument + named_argument_SQL_argument + + character_set_specification: + + + + + + + + standard_character_set_name + + + implementation_defined_character_set_name + + + user_defined_character_set_name + + + + +
             ::= standard_character_set_name
    + +
               | user_defined_character_set_name
    +
    + referenced by: + + Ada_CLOB_variable + Ada_qualified_type_specification + COBOL_CLOB_variable + COBOL_character_type + C_CLOB_variable + C_VARCHAR_variable + C_character_variable + Fortran_CLOB_variable + Fortran_type_specification + MUMPS_character_variable_specifier + PL_I_CLOB_variable + PL_I_type_specification + Pascal_CLOB_variable + Pascal_type_specification + Unicode_character_string_literal + character_set_source + character_set_specification_list + character_string_literal + collation_definition + embedded_character_set_declaration + module_character_set_specification + predefined_type + schema_character_set_specification + source_character_set_specification + target_character_set_specification + + standard_character_set_name: + + + + + + + + character_set_name + + + + +
             ::= character_set_name
    +
    + referenced by: + + character_set_specification + + implementation_defined_character_set_name: + + + + + + + + character_set_name + + + + +
             ::= character_set_name
    +
    + referenced by: + + character_set_specification + + user_defined_character_set_name: + + + + + + + + character_set_name + + + + +
             ::= character_set_name
    +
    + referenced by: + + character_set_specification + + specific_routine_designator: + + + + + + + + SPECIFIC + + + routine_type + + + specific_name + + + routine_type + + + member_name + + FOR + + + schema_resolved_user_defined_type_name + + + + +
             ::= 'SPECIFIC' routine_type specific_name
    +
    +
    + referenced by: + + PTF_describe_component_procedure + PTF_finish_component_procedure + PTF_fulfill_component_procedure + PTF_start_component_procedure + allocate_received_cursor_statement + alter_routine_statement + cast_function + drop_routine_statement + from_sql_function + map_function_specification + object_name + privilege_method_list + relative_function_specification + to_sql_function + transliteration_routine + + routine_type: + + + + + + + + ROUTINE* + + + FUNCTION + + + PROCEDURE + + + INSTANCE* + + + STATIC + + + CONSTRUCTOR* + + + METHOD + + + + + +
             ::= 'ROUTINE*'
    +
               | 'FUNCTION'
    +
               | 'PROCEDURE'
    +
               | ( 'INSTANCE*' | 'STATIC' | 'CONSTRUCTOR*' )? 'METHOD'
    +
    + referenced by: + + specific_routine_designator + + member_name: + + + + + + + + member_name_alternatives + + + data_type_list + + + + + + + referenced by: + + specific_routine_designator + + member_name_alternatives: + + + + + + + + schema_qualified_routine_name + + + method_name + + + + +
             ::= schema_qualified_routine_name
    +
               | method_name
    +
    + referenced by: + + member_name + + data_type_list: + + + + + + + + ( + + + data_type + + , + + + ) + + + + + +
             ::= '(' ( data_type ( ',' data_type )* )? ')'
    +
    + referenced by: + + member_name + specific_method_specification_designator + + collate_clause: + + + + + + + + COLLATE + + + collation_name + + + + +
             ::= 'COLLATE' collation_name
    +
    + referenced by: + + attribute_definition + character_factor + character_set_definition + column_definition + domain_definition + grouping_column_reference + predefined_type + row_pattern_partition_column + window_partition_column_reference + + constraint_name_definition: + + + + + + + + CONSTRAINT + + + constraint_name + + + + +
             ::= 'CONSTRAINT' constraint_name
    +
    + referenced by: + + column_constraint_definition + domain_constraint + table_constraint_definition + + constraint_characteristics: + + + + + + + + constraint_check_time + + NOT + + + DEFERRABLE* + + + NOT + + + DEFERRABLE* + + + constraint_check_time + + + constraint_enforcement + + + constraint_enforcement + + + + +
             ::= ( constraint_check_time ( 'NOT'? 'DEFERRABLE*' )? | 'NOT'? 'DEFERRABLE*' constraint_check_time? ) constraint_enforcement?
    +
               | constraint_enforcement
    +
    + referenced by: + + assertion_definition + column_constraint_definition + domain_constraint + table_constraint_definition + + constraint_check_time: + + + + + + + + INITIALLY* + + + DEFERRED* + + + IMMEDIATE* + + + + + +
             ::= 'INITIALLY*' ( 'DEFERRED*' | 'IMMEDIATE*' )
    +
    + referenced by: + + constraint_characteristics + + constraint_enforcement: + + + + + + + + NOT + + + ENFORCED* + + + + + +
             ::= 'NOT'? 'ENFORCED*'
    +
    + referenced by: + + alter_table_constraint_definition + constraint_characteristics + + aggregate_function: + + + + + + + + COUNT + + + ( + + + * + + + ) + + + general_set_function + + + binary_set_function + + + ordered_set_function + + + array_aggregate_function + + + row_pattern_count_function + + + JSON_aggregate_function + + + filter_clause + + + + + + + referenced by: + + set_function_specification + window_function_type + + general_set_function: + + + + + + + + set_function_type + + ( + + + set_quantifier + + + value_expression + + ) + + + + + +
             ::= set_function_type '(' set_quantifier? value_expression ')'
    +
    + referenced by: + + aggregate_function + + set_function_type: + + + + + + + + computational_operation + + + + +
             ::= computational_operation
    +
    + referenced by: + + general_set_function + + computational_operation: + + + + + + + + AVG + + + MAX + + + MIN + + + SUM + + + EVERY + + + ANY + + + SOME + + + COUNT + + + STDDEV_POP + + + STDDEV_SAMP + + + VAR_SAMP + + + VAR_POP + + + COLLECT + + + FUSION + + + INTERSECTION + + + + + +
             ::= 'AVG'
    +
               | 'MAX'
    +
               | 'MIN'
    +
               | 'SUM'
    +
               | 'EVERY'
    +
               | 'ANY'
    +
               | 'SOME'
    +
               | 'COUNT'
    +
               | 'STDDEV_POP'
    +
               | 'STDDEV_SAMP'
    +
               | 'VAR_SAMP'
    +
               | 'VAR_POP'
    +
               | 'COLLECT'
    +
               | 'FUSION'
    +
               | 'INTERSECTION'
    +
    + referenced by: + + set_function_type + + set_quantifier: + + + + + + + + DISTINCT + + + ALL + + + + + +
             ::= 'DISTINCT'
    +
               | 'ALL'
    +
    + referenced by: + + general_set_function + group_by_clause + listagg_set_function + query_specification + select_statement__single_row + + filter_clause: + + + + + + + + FILTER + + + ( + + + WHERE + + + search_condition + + ) + + + + + +
             ::= 'FILTER' '(' 'WHERE' search_condition ')'
    +
    + referenced by: + + aggregate_function + + binary_set_function: + + + + + + + + binary_set_function_type + + ( + + + dependent_variable_expression + + , + + + independent_variable_expression + + ) + + + + + + + + referenced by: + + aggregate_function + + binary_set_function_type: + + + + + + + + COVAR_POP + + + COVAR_SAMP + + + CORR + + + REGR_SLOPE + + + REGR_INTERCEPT + + + REGR_COUNT + + + REGR_R2 + + + REGR_AVGX + + + REGR_AVGY + + + REGR_SXX + + + REGR_SYY + + + REGR_SXY + + + + + +
             ::= 'COVAR_POP'
    +
               | 'COVAR_SAMP'
    +
               | 'CORR'
    +
               | 'REGR_SLOPE'
    +
               | 'REGR_INTERCEPT'
    +
               | 'REGR_COUNT'
    +
               | 'REGR_R2'
    +
               | 'REGR_AVGX'
    +
               | 'REGR_AVGY'
    +
               | 'REGR_SXX'
    +
               | 'REGR_SYY'
    +
               | 'REGR_SXY'
    +
    + referenced by: + + binary_set_function + + dependent_variable_expression: + + + + + + + + numeric_value_expression + + + + +
             ::= numeric_value_expression
    +
    + referenced by: + + binary_set_function + + independent_variable_expression: + + + + + + + + numeric_value_expression + + + + +
             ::= numeric_value_expression
    +
    + referenced by: + + binary_set_function + + ordered_set_function: + + + + + + + + hypothetical_set_function + + + inverse_distribution_function + + + listagg_set_function + + + + +
             ::= hypothetical_set_function
    +
               | inverse_distribution_function
    +
               | listagg_set_function
    +
    + referenced by: + + aggregate_function + + hypothetical_set_function: + + + + + + + + rank_function_type + + ( + + + hypothetical_set_function_value_expression_list + + ) + + + within_group_specification + + + + + + + referenced by: + + ordered_set_function + + within_group_specification: + + + + + + + + WITHIN + + + GROUP + + + ( + + + ORDER + + + BY + + + sort_specification_list + + ) + + + + + +
             ::= 'WITHIN' 'GROUP' '(' 'ORDER' 'BY' sort_specification_list ')'
    +
    + referenced by: + + hypothetical_set_function + inverse_distribution_function + listagg_set_function + + hypothetical_set_function_value_expression_list: + + + + + + + + value_expression + + , + + + + + +
             ::= value_expression ( ',' value_expression )*
    +
    + referenced by: + + hypothetical_set_function + + inverse_distribution_function: + + + + + + + + inverse_distribution_function_type + + ( + + + inverse_distribution_function_argument + + ) + + + within_group_specification + + + + + + + referenced by: + + ordered_set_function + + inverse_distribution_function_argument: + + + + + + + + numeric_value_expression + + + + +
             ::= numeric_value_expression
    +
    + referenced by: + + inverse_distribution_function + + inverse_distribution_function_type: + + + + + + + + PERCENTILE_CONT + + + PERCENTILE_DISC + + + + + +
             ::= 'PERCENTILE_CONT'
    +
               | 'PERCENTILE_DISC'
    +
    + referenced by: + + inverse_distribution_function + + listagg_set_function: + + + + + + + + LISTAGG + + + ( + + + set_quantifier + + + character_value_expression + + , + + + listagg_separator + + + listagg_overflow_clause + + ) + + + within_group_specification + + + + + + + referenced by: + + ordered_set_function + + listagg_separator: + + + + + + + + character_string_literal + + + + +
             ::= character_string_literal
    +
    + referenced by: + + listagg_set_function + + listagg_overflow_clause: + + + + + + + + ON + + + OVERFLOW* + + + overflow_behavior + + + + +
             ::= 'ON' 'OVERFLOW*' overflow_behavior
    +
    + referenced by: + + listagg_set_function + + overflow_behavior: + + + + + + + + ERROR* + + + TRUNCATE + + + listagg_truncation_filler + + + listagg_count_indication + + + + +
             ::= 'ERROR*'
    +
               | 'TRUNCATE' listagg_truncation_filler? listagg_count_indication
    +
    + referenced by: + + listagg_overflow_clause + + listagg_truncation_filler: + + + + + + + + character_string_literal + + + + +
             ::= character_string_literal
    +
    + referenced by: + + overflow_behavior + + listagg_count_indication: + + + + + + + + WITH + + + WITHOUT + + + COUNT + + + + + +
             ::= ( 'WITH' | 'WITHOUT' ) 'COUNT'
    +
    + referenced by: + + overflow_behavior + + array_aggregate_function: + + + + + + + + ARRAY_AGG + + + ( + + + value_expression + + ORDER + + + BY + + + sort_specification_list + + ) + + + + + +
             ::= 'ARRAY_AGG' '(' value_expression ( 'ORDER' 'BY' sort_specification_list )? ')'
    +
    + referenced by: + + aggregate_function + + row_pattern_count_function: + + + + + + + + COUNT + + + ( + + + row_pattern_variable_name + + . + + + * + + + ) + + + + + +
             ::= 'COUNT' '(' row_pattern_variable_name '.' '*' ')'
    +
    + referenced by: + + aggregate_function + + sort_specification_list: + + + + + + + + sort_specification + + , + + + + + +
             ::= sort_specification ( ',' sort_specification )*
    +
    + referenced by: + + JSON_array_aggregate_order_by_clause + array_aggregate_function + order_by_clause + row_pattern_order_by + window_order_clause + within_group_specification + + sort_specification: + + + + + + + + sort_key + + + ordering_specification + + + null_ordering + + + + + + + referenced by: + + sort_specification_list + + sort_key: + + + + + + + + value_expression + + + + + + referenced by: + + sort_specification + + ordering_specification: + + + + + + + + ASC* + + + DESC* + + + + + +
             ::= 'ASC*'
    +
               | 'DESC*'
    +
    + referenced by: + + sort_specification + table_argument_ordering_column + + null_ordering: + + + + + + + + NULLS* + + + FIRST* + + + LAST* + + + + + +
             ::= 'NULLS*' ( 'FIRST*' | 'LAST*' )
    +
    + referenced by: + + sort_specification + table_argument_ordering_column + + JSON_aggregate_function: + + + + + + + + JSON_object_aggregate_constructor + + + JSON_array_aggregate_constructor + + + + +
             ::= JSON_object_aggregate_constructor
    +
               | JSON_array_aggregate_constructor
    +
    + referenced by: + + aggregate_function + + JSON_object_aggregate_constructor: + + + + + + + + JSON_OBJECTAGG + + + ( + + + JSON_name_and_value + + + JSON_constructor_null_clause + + + JSON_key_uniqueness_constraint + + + JSON_output_clause + + ) + + + + + + + + referenced by: + + JSON_aggregate_function + + JSON_array_aggregate_constructor: + + + + + + + + JSON_ARRAYAGG + + + ( + + + JSON_value_expression + + + JSON_array_aggregate_order_by_clause + + + JSON_constructor_null_clause + + + JSON_output_clause + + ) + + + + + + + + referenced by: + + JSON_aggregate_function + + JSON_array_aggregate_order_by_clause: + + + + + + + + ORDER + + + BY + + + sort_specification_list + + + + +
             ::= 'ORDER' 'BY' sort_specification_list
    +
    + referenced by: + + JSON_array_aggregate_constructor + + JSON_value_expression: + + + + + + + + value_expression + + + JSON_input_clause + + + + +
             ::= value_expression JSON_input_clause?
    +
    + referenced by: + + JSON_argument + JSON_array_aggregate_constructor + JSON_array_constructor_by_enumeration + JSON_context_item + JSON_name_and_value + + JSON_input_clause: + + + + + + + + FORMAT* + + + JSON_representation + + + + +
             ::= 'FORMAT*' JSON_representation
    +
    + referenced by: + + JSON_array_constructor_by_query + JSON_predicate + JSON_value_expression + + JSON_output_clause: + + + + + + + + RETURNING* + + + data_type + + FORMAT* + + + JSON_representation + + + + +
             ::= 'RETURNING*' data_type ( 'FORMAT*' JSON_representation )?
    +
    + referenced by: + + JSON_array_aggregate_constructor + JSON_array_constructor_by_enumeration + JSON_array_constructor_by_query + JSON_object_aggregate_constructor + JSON_object_constructor + JSON_query + + JSON_representation: + + + + + + + + JSON* + + + ENCODING* + + + UTF8 + + + UTF16 + + + UTF32 + + + !! See the Syntax Rules. + + + + + +
             ::= 'JSON*' ( 'ENCODING*' ( 'UTF8' | 'UTF16' | 'UTF32' ) )?
    +
               | '!! See the Syntax Rules.'
    +
    + referenced by: + + JSON_input_clause + JSON_output_clause + JSON_table_formatted_column_definition + + JSON_API_common_syntax: + + + + + + + + JSON_context_item + + , + + + JSON_path_specification + + AS + + + JSON_table_path_name + + + JSON_passing_clause + + + + + + + referenced by: + + JSON_exists_predicate + JSON_query + JSON_table + JSON_table_primitive + JSON_value_function + + JSON_context_item: + + + + + + + + JSON_value_expression + + + + +
             ::= JSON_value_expression
    +
    + referenced by: + + JSON_API_common_syntax + + JSON_path_specification: + + + + + + + + character_string_literal + + + + +
             ::= character_string_literal
    +
    + referenced by: + + JSON_API_common_syntax + JSON_table_column_path_specification + JSON_table_nested_path_specification + + JSON_passing_clause: + + + + + + + + PASSING* + + + JSON_argument + + , + + + + + +
             ::= 'PASSING*' JSON_argument ( ',' JSON_argument )*
    +
    + referenced by: + + JSON_API_common_syntax + + JSON_argument: + + + + + + + + JSON_value_expression + + AS + + + identifier + + + + +
             ::= JSON_value_expression 'AS' identifier
    +
    + referenced by: + + JSON_passing_clause + + schema_definition: + + + + + + + + CREATE + + + SCHEMA* + + + schema_name_clause + + + schema_character_set_or_path + + + schema_element + + + + +
             ::= 'CREATE' 'SCHEMA*' schema_name_clause schema_character_set_or_path? schema_element*
    +
    + referenced by: + + SQL_schema_definition_statement + + schema_character_set_or_path: + + + + + + + + schema_character_set_specification + + + schema_path_specification + + + schema_path_specification + + + schema_character_set_specification + + + + + + + + referenced by: + + schema_definition + + schema_name_clause: + + + + + + + + schema_name + + AUTHORIZATION + + + schema_authorization_identifier + + AUTHORIZATION + + + schema_authorization_identifier + + + + +
             ::= schema_name ( 'AUTHORIZATION' schema_authorization_identifier )?
    +
               | 'AUTHORIZATION' schema_authorization_identifier
    +
    + referenced by: + + schema_definition + + schema_authorization_identifier: + + + + + + + + authorization_identifier + + + + +
             ::= authorization_identifier
    +
    + referenced by: + + schema_name_clause + + schema_character_set_specification: + + + + + + + + DEFAULT + + + CHARACTER + + + SET + + + character_set_specification + + + + +
             ::= 'DEFAULT' 'CHARACTER' 'SET' character_set_specification
    +
    + referenced by: + + schema_character_set_or_path + + schema_path_specification: + + + + + + + + path_specification + + + + +
             ::= path_specification
    +
    + referenced by: + + schema_character_set_or_path + + schema_element: + + + + + + + + table_definition + + + view_definition + + + domain_definition + + + character_set_definition + + + collation_definition + + + transliteration_definition + + + assertion_definition + + + trigger_definition + + + user_defined_type_definition + + + user_defined_cast_definition + + + user_defined_ordering_definition + + + transform_definition + + + schema_routine + + + sequence_generator_definition + + + grant_statement + + + role_definition + + + + +
             ::= table_definition
    +
               | view_definition
    +
               | domain_definition
    +
               | character_set_definition
    +
               | collation_definition
    +
               | transliteration_definition
    +
               | assertion_definition
    +
               | trigger_definition
    +
               | user_defined_type_definition
    +
               | user_defined_cast_definition
    +
               | user_defined_ordering_definition
    +
               | transform_definition
    +
               | schema_routine
    +
               | sequence_generator_definition
    +
               | grant_statement
    +
               | role_definition
    +
    + referenced by: + + schema_definition + + drop_schema_statement: + + + + + + + + DROP + + + SCHEMA* + + + schema_name + + + drop_behavior + + + + +
             ::= 'DROP' 'SCHEMA*' schema_name drop_behavior
    +
    + referenced by: + + SQL_schema_manipulation_statement + + drop_behavior: + + + + + + + + CASCADE* + + + RESTRICT* + + + + + +
             ::= 'CASCADE*'
    +
               | 'RESTRICT*'
    +
    + referenced by: + + drop_assertion_statement + drop_collation_statement + drop_column_definition + drop_column_scope_clause + drop_data_type_statement + drop_domain_statement + drop_routine_statement + drop_schema_statement + drop_sequence_generator_statement + drop_system_versioning_clause + drop_table_constraint_definition + drop_table_period_definition + drop_table_statement + drop_transform_element_list + drop_transform_statement + drop_user_defined_cast_statement + drop_user_defined_ordering_statement + drop_view_statement + revoke_privilege_statement + revoke_role_statement + + table_definition: + + + + + + + + CREATE + + + table_scope + + TABLE + + + table_name + + + table_contents_source + + WITH + + + system_versioning_clause + + ON + + + COMMIT + + + table_commit_action + + ROWS + + + + + +
             ::= 'CREATE' table_scope? 'TABLE' table_name table_contents_source ( 'WITH' system_versioning_clause )? ( 'ON' 'COMMIT' table_commit_action 'ROWS' )?
    +
    + referenced by: + + SQL_schema_definition_statement + schema_element + + table_contents_source: + + + + + + + + table_element_list + + + typed_table_clause + + + as_subquery_clause + + + + +
             ::= table_element_list
    +
               | typed_table_clause
    +
               | as_subquery_clause
    +
    + referenced by: + + table_definition + + table_scope: + + + + + + + + global_or_local + + TEMPORARY* + + + + + +
             ::= global_or_local 'TEMPORARY*'
    +
    + referenced by: + + table_definition + + global_or_local: + + + + + + + + GLOBAL + + + LOCAL + + + + + +
             ::= 'GLOBAL'
    +
               | 'LOCAL'
    +
    + referenced by: + + table_scope + + system_versioning_clause: + + + + + + + + SYSTEM + + + VERSIONING + + + + + +
             ::= 'SYSTEM' 'VERSIONING'
    +
    + referenced by: + + add_system_versioning_clause + table_definition + + table_commit_action: + + + + + + + + PRESERVE* + + + DELETE + + + + + +
             ::= 'PRESERVE*'
    +
               | 'DELETE'
    +
    + referenced by: + + table_definition + temporary_table_declaration + + table_element_list: + + + + + + + + ( + + + table_element + + , + + + ) + + + + + +
             ::= '(' table_element ( ',' table_element )* ')'
    +
    + referenced by: + + table_contents_source + temporary_table_declaration + + table_element: + + + + + + + + column_definition + + + table_period_definition + + + table_constraint_definition + + + like_clause + + + + +
             ::= column_definition
    +
               | table_period_definition
    +
               | table_constraint_definition
    +
               | like_clause
    +
    + referenced by: + + table_element_list + + typed_table_clause: + + + + + + + + OF + + + path_resolved_user_defined_type_name + + + subtable_clause + + + typed_table_element_list + + + + + + + referenced by: + + table_contents_source + + typed_table_element_list: + + + + + + + + ( + + + typed_table_element + + , + + + ) + + + + + +
             ::= '(' typed_table_element ( ',' typed_table_element )* ')'
    +
    + referenced by: + + typed_table_clause + + typed_table_element: + + + + + + + + column_options + + + table_constraint_definition + + + self_referencing_column_specification + + + + +
             ::= column_options
    +
               | table_constraint_definition
    +
    +
    + referenced by: + + typed_table_element_list + + self_referencing_column_specification: + + + + + + + + REF + + + IS + + + self_referencing_column_name + + + reference_generation + + + + +
             ::= 'REF' 'IS' self_referencing_column_name reference_generation?
    +
    + referenced by: + + typed_table_element + view_element + + reference_generation: + + + + + + + + SYSTEM + + + USER + + + GENERATED* + + + DERIVED* + + + + + +
             ::= ( 'SYSTEM' | 'USER' ) 'GENERATED*'
    +
               | 'DERIVED*'
    +
    + referenced by: + + self_referencing_column_specification + + self_referencing_column_name: + + + + + + + + column_name + + + + +
             ::= column_name
    +
    + referenced by: + + self_referencing_column_specification + + column_options: + + + + + + + + column_name + + WITH + + + OPTIONS* + + + column_option_list + + + + +
             ::= column_name 'WITH' 'OPTIONS*' column_option_list
    +
    + referenced by: + + typed_table_element + + column_option_list: + + + + + + + + scope_clause + + + default_clause + + + column_constraint_definition + + + + + + + referenced by: + + column_options + + subtable_clause: + + + + + + + + UNDER* + + + supertable_clause + + + + +
             ::= 'UNDER*' supertable_clause
    +
    + referenced by: + + typed_table_clause + + supertable_clause: + + + + + + + + supertable_name + + + + +
             ::= supertable_name
    +
    + referenced by: + + subtable_clause + + supertable_name: + + + + + + + + table_name + + + + +
             ::= table_name
    +
    + referenced by: + + supertable_clause + + like_clause: + + + + + + + + LIKE + + + table_name + + + like_options + + + + +
             ::= 'LIKE' table_name like_options?
    +
    + referenced by: + + table_element + + like_options: + + + + + + + + like_option + + + + +
             ::= like_option+
    +
    + referenced by: + + like_clause + + like_option: + + + + + + + + identity_option + + + column_default_option + + + generation_option + + + + +
             ::= identity_option
    +
               | column_default_option
    +
               | generation_option
    +
    + referenced by: + + like_options + + identity_option: + + + + + + + + INCLUDING* + + + EXCLUDING* + + + IDENTITY + + + + + +
             ::= ( 'INCLUDING*' | 'EXCLUDING*' ) 'IDENTITY'
    +
    + referenced by: + + like_option + + column_default_option: + + + + + + + + INCLUDING* + + + EXCLUDING* + + + DEFAULTS* + + + + + +
             ::= ( 'INCLUDING*' | 'EXCLUDING*' ) 'DEFAULTS*'
    +
    + referenced by: + + like_option + + generation_option: + + + + + + + + INCLUDING* + + + EXCLUDING* + + + GENERATED* + + + + + +
             ::= ( 'INCLUDING*' | 'EXCLUDING*' ) 'GENERATED*'
    +
    + referenced by: + + like_option + + as_subquery_clause: + + + + + + + + ( + + + column_name_list + + ) + + + AS + + + table_subquery + + + with_or_without_data + + + + +
             ::= ( '(' column_name_list ')' )? 'AS' table_subquery with_or_without_data
    +
    + referenced by: + + table_contents_source + + with_or_without_data: + + + + + + + + WITH + + + NO + + + DATA* + + + + + +
             ::= 'WITH' 'NO'? 'DATA*'
    +
    + referenced by: + + as_subquery_clause + + table_period_definition: + + + + + + + + system_or_application_time_period_specification + + ( + + + period_begin_column_name + + , + + + period_end_column_name + + ) + + + + + + + + referenced by: + + add_table_period_definition + table_element + + system_or_application_time_period_specification: + + + + + + + + system_time_period_specification + + + application_time_period_specification + + + + +
             ::= system_time_period_specification
    +
    +
    + referenced by: + + drop_table_period_definition + table_period_definition + + system_time_period_specification: + + + + + + + + PERIOD + + + FOR + + + SYSTEM_TIME + + + + + +
             ::= 'PERIOD' 'FOR' 'SYSTEM_TIME'
    +
    + referenced by: + + system_or_application_time_period_specification + + application_time_period_specification: + + + + + + + + PERIOD + + + FOR + + + application_time_period_name + + + + +
             ::= 'PERIOD' 'FOR' application_time_period_name
    +
    + referenced by: + + system_or_application_time_period_specification + + application_time_period_name: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + application_time_period_specification + delete_statement__searched + referenced_period_specification + referencing_period_specification + update_statement__searched + without_overlap_specification + + period_begin_column_name: + + + + + + + + column_name + + + + +
             ::= column_name
    +
    + referenced by: + + table_period_definition + + period_end_column_name: + + + + + + + + column_name + + + + +
             ::= column_name
    +
    + referenced by: + + table_period_definition + + column_definition: + + + + + + + + column_name + + + data_type_or_domain_name + + + default_clause + + + identity_column_specification + + + generation_clause + + + system_time_period_start_column_specification + + + system_time_period_end_column_specification + + + column_constraint_definition + + + collate_clause + + + + + + + referenced by: + + add_column_definition + column_definition_1 + column_definition_2 + table_element + + data_type_or_domain_name: + + + + + + + + data_type + + + domain_name + + + + +
             ::= data_type
    +
               | domain_name
    +
    + referenced by: + + column_definition + + system_time_period_start_column_specification: + + + + + + + + timestamp_generation_rule + + AS + + + ROW + + + START + + + + + +
             ::= timestamp_generation_rule 'AS' 'ROW' 'START'
    +
    + referenced by: + + column_definition + + system_time_period_end_column_specification: + + + + + + + + timestamp_generation_rule + + AS + + + ROW + + + END + + + + + +
             ::= timestamp_generation_rule 'AS' 'ROW' 'END'
    +
    + referenced by: + + column_definition + + timestamp_generation_rule: + + + + + + + + GENERATED* + + + ALWAYS* + + + + + +
             ::= 'GENERATED*' 'ALWAYS*'
    +
    + referenced by: + + system_time_period_end_column_specification + system_time_period_start_column_specification + + column_constraint_definition: + + + + + + + + constraint_name_definition + + + column_constraint + + + constraint_characteristics + + + + + + + referenced by: + + column_definition + column_option_list + + column_constraint: + + + + + + + + NOT + + + NULL + + + unique_specification + + + references_specification + + + check_constraint_definition + + + + +
             ::= 'NOT' 'NULL'
    +
               | unique_specification
    +
               | references_specification
    +
               | check_constraint_definition
    +
    + referenced by: + + column_constraint_definition + + identity_column_specification: + + + + + + + + GENERATED* + + + ALWAYS* + + + BY + + + DEFAULT + + + AS + + + IDENTITY + + + ( + + + common_sequence_generator_options + + ) + + + + + +
             ::= 'GENERATED*' ( 'ALWAYS*' | 'BY' 'DEFAULT' ) 'AS' 'IDENTITY' ( '(' common_sequence_generator_options ')' )?
    +
    + referenced by: + + column_definition + + generation_clause: + + + + + + + + generation_rule + + AS + + + generation_expression + + + + +
             ::= generation_rule 'AS' generation_expression
    +
    + referenced by: + + column_definition + + generation_rule: + + + + + + + + GENERATED* + + + ALWAYS* + + + + + +
             ::= 'GENERATED*' 'ALWAYS*'
    +
    + referenced by: + + generation_clause + + generation_expression: + + + + + + + + ( + + + value_expression + + ) + + + + + +
             ::= '(' value_expression ')'
    +
    + referenced by: + + generation_clause + + default_clause: + + + + + + + + DEFAULT + + + default_option + + + + +
             ::= 'DEFAULT' default_option
    +
    + referenced by: + + attribute_default + column_definition + column_option_list + domain_definition + set_column_default_clause + set_domain_default_clause + + default_option: + + + + + + + + literal + + + datetime_value_function + + USER + + + CURRENT_USER + + + CURRENT_ROLE + + SESSION_USER + + + SYSTEM_USER + + + CURRENT_CATALOG + + + CURRENT_SCHEMA + + + CURRENT_PATH + + + implicitly_typed_value_specification + + + + +
             ::= literal
    +
               | datetime_value_function
    +
               | 'USER'
    +
               | 'CURRENT_USER'
    +
               | CURRENT_ROLE
    +
               | 'SESSION_USER'
    +
               | 'SYSTEM_USER'
    +
               | 'CURRENT_CATALOG'
    +
               | 'CURRENT_SCHEMA'
    +
               | CURRENT_PATH
    +
               | implicitly_typed_value_specification
    +
    + referenced by: + + default_clause + + table_constraint_definition: + + + + + + + + constraint_name_definition + + + table_constraint + + + constraint_characteristics + + + + + + + referenced by: + + add_table_constraint_definition + table_element + typed_table_element + + table_constraint: + + + + + + + + unique_constraint_definition + + + referential_constraint_definition + + + check_constraint_definition + + + + +
             ::= unique_constraint_definition
    +
               | referential_constraint_definition
    +
               | check_constraint_definition
    +
    + referenced by: + + table_constraint_definition + + unique_constraint_definition: + + + + + + + + unique_specification + + ( + + + unique_column_list + + , + + + without_overlap_specification + + ) + + + UNIQUE + + + VALUE + + + + + + +
               | 'UNIQUE' 'VALUE'?
    +
    + referenced by: + + table_constraint + + unique_specification: + + + + + + + + UNIQUE + + + PRIMARY + + + KEY* + + + + + +
             ::= 'UNIQUE'
    +
               | 'PRIMARY' 'KEY*'
    +
    + referenced by: + + column_constraint + unique_constraint_definition + + unique_column_list: + + + + + + + + column_name_list + + + + +
             ::= column_name_list
    +
    + referenced by: + + unique_constraint_definition + + without_overlap_specification: + + + + + + + + application_time_period_name + + WITHOUT + + + OVERLAPS + + + + + +
             ::= application_time_period_name 'WITHOUT' 'OVERLAPS'
    +
    + referenced by: + + unique_constraint_definition + + referential_constraint_definition: + + + + + + + + FOREIGN + + + KEY* + + + ( + + + referencing_column_list + + , + + + referencing_period_specification + + ) + + + references_specification + + + + +
             ::= 'FOREIGN' 'KEY*' '(' referencing_column_list ( ',' referencing_period_specification )? ')' references_specification
    +
    + referenced by: + + table_constraint + + references_specification: + + + + + + + + REFERENCES + + + referenced_table_and_columns + + MATCH + + + match_type + + + referential_triggered_action + + + + +
             ::= 'REFERENCES' referenced_table_and_columns ( 'MATCH' match_type )? referential_triggered_action?
    +
    + referenced by: + + column_constraint + referential_constraint_definition + + match_type: + + + + + + + + FULL + + + PARTIAL* + + + SIMPLE* + + + + + +
             ::= 'FULL'
    +
               | 'PARTIAL*'
    +
               | 'SIMPLE*'
    +
    + referenced by: + + references_specification + + referencing_column_list: + + + + + + + + column_name_list + + + + +
             ::= column_name_list
    +
    + referenced by: + + referential_constraint_definition + + referencing_period_specification: + + + + + + + + PERIOD + + + application_time_period_name + + + + +
             ::= 'PERIOD' application_time_period_name
    +
    + referenced by: + + referential_constraint_definition + + referenced_table_and_columns: + + + + + + + + table_name + + ( + + + referenced_column_list + + , + + + referenced_period_specification + + ) + + + + + +
             ::= table_name ( '(' referenced_column_list ( ',' referenced_period_specification )? ')' )?
    +
    + referenced by: + + references_specification + + referenced_column_list: + + + + + + + + column_name_list + + + + +
             ::= column_name_list
    +
    + referenced by: + + referenced_table_and_columns + + referenced_period_specification: + + + + + + + + PERIOD + + + application_time_period_name + + + + +
             ::= 'PERIOD' application_time_period_name
    +
    + referenced by: + + referenced_table_and_columns + + referential_triggered_action: + + + + + + + + update_rule + + + delete_rule + + + delete_rule + + + update_rule + + + + +
             ::= update_rule delete_rule?
    +
               | delete_rule update_rule?
    +
    + referenced by: + + references_specification + + update_rule: + + + + + + + + ON + + + UPDATE + + + referential_action + + + + +
             ::= 'ON' 'UPDATE' referential_action
    +
    + referenced by: + + referential_triggered_action + + delete_rule: + + + + + + + + ON + + + DELETE + + + referential_action + + + + +
             ::= 'ON' 'DELETE' referential_action
    +
    + referenced by: + + referential_triggered_action + + referential_action: + + + + + + + + CASCADE* + + + SET + + + NULL + + + DEFAULT + + + RESTRICT* + + + NO + + + ACTION* + + + + + +
             ::= 'CASCADE*'
    +
               | 'SET' ( 'NULL' | 'DEFAULT' )
    +
               | 'RESTRICT*'
    +
               | 'NO' 'ACTION*'
    +
    + referenced by: + + delete_rule + update_rule + + check_constraint_definition: + + + + + + + + CHECK + + + ( + + + search_condition + + ) + + + + + +
             ::= 'CHECK' '(' search_condition ')'
    +
    + referenced by: + + column_constraint + domain_constraint + table_constraint + + alter_table_statement: + + + + + + + + ALTER + + + TABLE + + + table_name + + + alter_table_action + + + + +
             ::= 'ALTER' 'TABLE' table_name alter_table_action
    +
    + referenced by: + + SQL_schema_manipulation_statement + + alter_table_action: + + + + + + + + add_column_definition + + + alter_column_definition + + + drop_column_definition + + + add_table_constraint_definition + + + alter_table_constraint_definition + + + drop_table_constraint_definition + + + add_table_period_definition + + + drop_table_period_definition + + + add_system_versioning_clause + + + drop_system_versioning_clause + + + + +
             ::= add_column_definition
    +
               | alter_column_definition
    +
               | drop_column_definition
    +
               | add_table_constraint_definition
    +
               | alter_table_constraint_definition
    +
               | drop_table_constraint_definition
    +
               | add_table_period_definition
    +
               | drop_table_period_definition
    +
               | add_system_versioning_clause
    +
               | drop_system_versioning_clause
    +
    + referenced by: + + alter_table_statement + + add_column_definition: + + + + + + + + ADD* + + + COLUMN + + + column_definition + + + + +
             ::= 'ADD*' 'COLUMN'? column_definition
    +
    + referenced by: + + alter_table_action + + alter_column_definition: + + + + + + + + ALTER + + + COLUMN + + + column_name + + + alter_column_action + + + + +
             ::= 'ALTER' 'COLUMN'? column_name alter_column_action
    +
    + referenced by: + + alter_table_action + + alter_column_action: + + + + + + + + set_column_default_clause + + + drop_column_default_clause + + + set_column_not_null_clause + + + drop_column_not_null_clause + + + add_column_scope_clause + + + drop_column_scope_clause + + + alter_column_data_type_clause + + + alter_identity_column_specification + + + drop_identity_property_clause + + + drop_column_generation_expression_clause + + + + +
             ::= set_column_default_clause
    +
               | drop_column_default_clause
    +
               | set_column_not_null_clause
    +
               | drop_column_not_null_clause
    +
               | add_column_scope_clause
    +
               | drop_column_scope_clause
    +
               | alter_column_data_type_clause
    +
               | alter_identity_column_specification
    +
               | drop_identity_property_clause
    +
    +
    + referenced by: + + alter_column_definition + + set_column_default_clause: + + + + + + + + SET + + + default_clause + + + + +
             ::= 'SET' default_clause
    +
    + referenced by: + + alter_column_action + + drop_column_default_clause: + + + + + + + + DROP + + + DEFAULT + + + + + +
             ::= 'DROP' 'DEFAULT'
    +
    + referenced by: + + alter_column_action + + set_column_not_null_clause: + + + + + + + + SET + + + NOT + + + NULL + + + + + +
             ::= 'SET' 'NOT' 'NULL'
    +
    + referenced by: + + alter_column_action + + drop_column_not_null_clause: + + + + + + + + DROP + + + NOT + + + NULL + + + + + +
             ::= 'DROP' 'NOT' 'NULL'
    +
    + referenced by: + + alter_column_action + + add_column_scope_clause: + + + + + + + + ADD* + + + scope_clause + + + + +
             ::= 'ADD*' scope_clause
    +
    + referenced by: + + alter_column_action + + drop_column_scope_clause: + + + + + + + + DROP + + + SCOPE + + + drop_behavior + + + + +
             ::= 'DROP' 'SCOPE' drop_behavior
    +
    + referenced by: + + alter_column_action + + alter_column_data_type_clause: + + + + + + + + SET + + + DATA* + + + TYPE* + + + data_type + + + + +
             ::= 'SET' 'DATA*' 'TYPE*' data_type
    +
    + referenced by: + + alter_column_action + + alter_identity_column_specification: + + + + + + + + set_identity_column_generation_clause + + + alter_identity_column_option + + + alter_identity_column_option + + + + + + + referenced by: + + alter_column_action + + set_identity_column_generation_clause: + + + + + + + + SET + + + GENERATED* + + + ALWAYS* + + + BY + + + DEFAULT + + + + + +
             ::= 'SET' 'GENERATED*' ( 'ALWAYS*' | 'BY' 'DEFAULT' )
    +
    + referenced by: + + alter_identity_column_specification + + alter_identity_column_option: + + + + + + + + alter_sequence_generator_restart_option + + SET + + + basic_sequence_generator_option + + + + + +
               | 'SET' basic_sequence_generator_option
    +
    + referenced by: + + alter_identity_column_specification + + drop_identity_property_clause: + + + + + + + + DROP + + + IDENTITY + + + + + +
             ::= 'DROP' 'IDENTITY'
    +
    + referenced by: + + alter_column_action + + drop_column_generation_expression_clause: + + + + + + + + DROP + + + EXPRESSION* + + + + + +
             ::= 'DROP' 'EXPRESSION*'
    +
    + referenced by: + + alter_column_action + + drop_column_definition: + + + + + + + + DROP + + + COLUMN + + + column_name + + + drop_behavior + + + + +
             ::= 'DROP' 'COLUMN'? column_name drop_behavior
    +
    + referenced by: + + alter_table_action + + add_table_constraint_definition: + + + + + + + + ADD* + + + table_constraint_definition + + + + +
             ::= 'ADD*' table_constraint_definition
    +
    + referenced by: + + alter_table_action + + alter_table_constraint_definition: + + + + + + + + ALTER + + + CONSTRAINT + + + constraint_name + + + constraint_enforcement + + + + +
             ::= 'ALTER' 'CONSTRAINT' constraint_name constraint_enforcement
    +
    + referenced by: + + alter_table_action + + drop_table_constraint_definition: + + + + + + + + DROP + + + CONSTRAINT + + + constraint_name + + + drop_behavior + + + + +
             ::= 'DROP' 'CONSTRAINT' constraint_name drop_behavior
    +
    + referenced by: + + alter_table_action + + add_table_period_definition: + + + + + + + + ADD* + + + table_period_definition + + + add_system_time_period_column_list + + + + + + + referenced by: + + alter_table_action + + add_system_time_period_column_list: + + + + + + + + ADD* + + + COLUMN + + + column_definition_1 + + ADD* + + + COLUMN + + + column_definition_2 + + + + +
             ::= 'ADD*' 'COLUMN'? column_definition_1 'ADD*' 'COLUMN'? column_definition_2
    +
    + referenced by: + + add_table_period_definition + + column_definition_1: + + + + + + + + column_definition + + + + +
             ::= column_definition
    +
    + referenced by: + + add_system_time_period_column_list + + column_definition_2: + + + + + + + + column_definition + + + + +
             ::= column_definition
    +
    + referenced by: + + add_system_time_period_column_list + + drop_table_period_definition: + + + + + + + + DROP + + + system_or_application_time_period_specification + + + drop_behavior + + + + + + + referenced by: + + alter_table_action + + add_system_versioning_clause: + + + + + + + + ADD* + + + system_versioning_clause + + + + +
             ::= 'ADD*' system_versioning_clause
    +
    + referenced by: + + alter_table_action + + drop_system_versioning_clause: + + + + + + + + DROP + + + SYSTEM + + + VERSIONING + + + drop_behavior + + + + +
             ::= 'DROP' 'SYSTEM' 'VERSIONING' drop_behavior
    +
    + referenced by: + + alter_table_action + + drop_table_statement: + + + + + + + + DROP + + + TABLE + + + table_name + + + drop_behavior + + + + +
             ::= 'DROP' 'TABLE' table_name drop_behavior
    +
    + referenced by: + + SQL_schema_manipulation_statement + + view_definition: + + + + + + + + CREATE + + + RECURSIVE + + + VIEW* + + + table_name + + + view_specification + + AS + + + query_expression + + WITH + + + levels_clause + + CHECK + + + OPTION* + + + + + +
             ::= 'CREATE' 'RECURSIVE'? 'VIEW*' table_name view_specification 'AS' query_expression ( 'WITH' levels_clause? 'CHECK' 'OPTION*' )?
    +
    + referenced by: + + SQL_schema_definition_statement + schema_element + + view_specification: + + + + + + + + regular_view_specification + + + referenceable_view_specification + + + + +
             ::= regular_view_specification
    +
               | referenceable_view_specification
    +
    + referenced by: + + view_definition + + regular_view_specification: + + + + + + + + ( + + + view_column_list + + ) + + + + + +
             ::= ( '(' view_column_list ')' )?
    +
    + referenced by: + + view_specification + + referenceable_view_specification: + + + + + + + + OF + + + path_resolved_user_defined_type_name + + + subview_clause + + + view_element_list + + + + + + + referenced by: + + view_specification + + subview_clause: + + + + + + + + UNDER* + + + table_name + + + + +
             ::= 'UNDER*' table_name
    +
    + referenced by: + + referenceable_view_specification + + view_element_list: + + + + + + + + ( + + + view_element + + , + + + ) + + + + + +
             ::= '(' view_element ( ',' view_element )* ')'
    +
    + referenced by: + + referenceable_view_specification + + view_element: + + + + + + + + self_referencing_column_specification + + + view_column_option + + + + + +
               | view_column_option
    +
    + referenced by: + + view_element_list + + view_column_option: + + + + + + + + column_name + + WITH + + + OPTIONS* + + + scope_clause + + + + +
             ::= column_name 'WITH' 'OPTIONS*' scope_clause
    +
    + referenced by: + + view_element + + levels_clause: + + + + + + + + CASCADED + + + LOCAL + + + + + +
             ::= 'CASCADED'
    +
               | 'LOCAL'
    +
    + referenced by: + + view_definition + + view_column_list: + + + + + + + + column_name_list + + + + +
             ::= column_name_list
    +
    + referenced by: + + regular_view_specification + + drop_view_statement: + + + + + + + + DROP + + + VIEW* + + + table_name + + + drop_behavior + + + + +
             ::= 'DROP' 'VIEW*' table_name drop_behavior
    +
    + referenced by: + + SQL_schema_manipulation_statement + + domain_definition: + + + + + + + + CREATE + + + DOMAIN* + + + domain_name + + AS + + + predefined_type + + + default_clause + + + domain_constraint + + + collate_clause + + + + +
             ::= 'CREATE' 'DOMAIN*' domain_name 'AS'? predefined_type default_clause? domain_constraint* collate_clause?
    +
    + referenced by: + + SQL_schema_definition_statement + schema_element + + domain_constraint: + + + + + + + + constraint_name_definition + + + check_constraint_definition + + + constraint_characteristics + + + + + + + referenced by: + + add_domain_constraint_definition + domain_definition + + alter_domain_statement: + + + + + + + + ALTER + + + DOMAIN* + + + domain_name + + + alter_domain_action + + + + +
             ::= 'ALTER' 'DOMAIN*' domain_name alter_domain_action
    +
    + referenced by: + + SQL_schema_manipulation_statement + + alter_domain_action: + + + + + + + + set_domain_default_clause + + + drop_domain_default_clause + + + add_domain_constraint_definition + + + drop_domain_constraint_definition + + + + +
             ::= set_domain_default_clause
    +
               | drop_domain_default_clause
    +
               | add_domain_constraint_definition
    +
               | drop_domain_constraint_definition
    +
    + referenced by: + + alter_domain_statement + + set_domain_default_clause: + + + + + + + + SET + + + default_clause + + + + +
             ::= 'SET' default_clause
    +
    + referenced by: + + alter_domain_action + + drop_domain_default_clause: + + + + + + + + DROP + + + DEFAULT + + + + + +
             ::= 'DROP' 'DEFAULT'
    +
    + referenced by: + + alter_domain_action + + add_domain_constraint_definition: + + + + + + + + ADD* + + + domain_constraint + + + + +
             ::= 'ADD*' domain_constraint
    +
    + referenced by: + + alter_domain_action + + drop_domain_constraint_definition: + + + + + + + + DROP + + + CONSTRAINT + + + constraint_name + + + + +
             ::= 'DROP' 'CONSTRAINT' constraint_name
    +
    + referenced by: + + alter_domain_action + + drop_domain_statement: + + + + + + + + DROP + + + DOMAIN* + + + domain_name + + + drop_behavior + + + + +
             ::= 'DROP' 'DOMAIN*' domain_name drop_behavior
    +
    + referenced by: + + SQL_schema_manipulation_statement + + character_set_definition: + + + + + + + + CREATE + + + CHARACTER + + + SET + + + character_set_name + + AS + + + character_set_source + + + collate_clause + + + + +
             ::= 'CREATE' 'CHARACTER' 'SET' character_set_name 'AS'? character_set_source collate_clause?
    +
    + referenced by: + + SQL_schema_definition_statement + schema_element + + character_set_source: + + + + + + + + GET + + + character_set_specification + + + + +
             ::= 'GET' character_set_specification
    +
    + referenced by: + + character_set_definition + + drop_character_set_statement: + + + + + + + + DROP + + + CHARACTER + + + SET + + + character_set_name + + + + +
             ::= 'DROP' 'CHARACTER' 'SET' character_set_name
    +
    + referenced by: + + SQL_schema_manipulation_statement + + collation_definition: + + + + + + + + CREATE + + + COLLATION* + + + collation_name + + FOR + + + character_set_specification + + FROM + + + existing_collation_name + + + pad_characteristic + + + + +
             ::= 'CREATE' 'COLLATION*' collation_name 'FOR' character_set_specification 'FROM' existing_collation_name pad_characteristic?
    +
    + referenced by: + + SQL_schema_definition_statement + schema_element + + existing_collation_name: + + + + + + + + collation_name + + + + +
             ::= collation_name
    +
    + referenced by: + + collation_definition + + pad_characteristic: + + + + + + + + NO + + + PAD* + + + PAD* + + + SPACE* + + + + + +
             ::= 'NO' 'PAD*'
    +
               | 'PAD*' 'SPACE*'
    +
    + referenced by: + + collation_definition + + drop_collation_statement: + + + + + + + + DROP + + + COLLATION* + + + collation_name + + + drop_behavior + + + + +
             ::= 'DROP' 'COLLATION*' collation_name drop_behavior
    +
    + referenced by: + + SQL_schema_manipulation_statement + + transliteration_definition: + + + + + + + + CREATE + + + TRANSLATION + + + transliteration_name + + FOR + + + source_character_set_specification + + TO + + + target_character_set_specification + + FROM + + + transliteration_source + + + + + + + referenced by: + + SQL_schema_definition_statement + schema_element + + source_character_set_specification: + + + + + + + + character_set_specification + + + + +
             ::= character_set_specification
    +
    + referenced by: + + transliteration_definition + + target_character_set_specification: + + + + + + + + character_set_specification + + + + +
             ::= character_set_specification
    +
    + referenced by: + + transliteration_definition + + transliteration_source: + + + + + + + + existing_transliteration_name + + + transliteration_routine + + + + +
             ::= existing_transliteration_name
    +
               | transliteration_routine
    +
    + referenced by: + + transliteration_definition + + existing_transliteration_name: + + + + + + + + transliteration_name + + + + +
             ::= transliteration_name
    +
    + referenced by: + + transliteration_source + + transliteration_routine: + + + + + + + + specific_routine_designator + + + + +
             ::= specific_routine_designator
    +
    + referenced by: + + transliteration_source + + drop_transliteration_statement: + + + + + + + + DROP + + + TRANSLATION + + + transliteration_name + + + + +
             ::= 'DROP' 'TRANSLATION' transliteration_name
    +
    + referenced by: + + SQL_schema_manipulation_statement + + assertion_definition: + + + + + + + + CREATE + + + ASSERTION* + + + constraint_name + + CHECK + + + ( + + + search_condition + + ) + + + constraint_characteristics + + + + +
             ::= 'CREATE' 'ASSERTION*' constraint_name 'CHECK' '(' search_condition ')' constraint_characteristics?
    +
    + referenced by: + + SQL_schema_definition_statement + schema_element + + drop_assertion_statement: + + + + + + + + DROP + + + ASSERTION* + + + constraint_name + + + drop_behavior + + + + +
             ::= 'DROP' 'ASSERTION*' constraint_name drop_behavior?
    +
    + referenced by: + + SQL_schema_manipulation_statement + + trigger_definition: + + + + + + + + CREATE + + + TRIGGER + + + trigger_name + + + trigger_action_time + + + trigger_event + + ON + + + table_name + + REFERENCING + + + transition_table_or_variable_list + + + triggered_action + + + + +
             ::= 'CREATE' 'TRIGGER' trigger_name trigger_action_time trigger_event 'ON' table_name ( 'REFERENCING' transition_table_or_variable_list )? triggered_action
    +
    + referenced by: + + SQL_schema_definition_statement + schema_element + + trigger_action_time: + + + + + + + + BEFORE* + + + AFTER* + + + INSTEAD* + + + OF + + + + + +
             ::= 'BEFORE*'
    +
               | 'AFTER*'
    +
               | 'INSTEAD*' 'OF'
    +
    + referenced by: + + trigger_definition + + trigger_event: + + + + + + + + INSERT + + + DELETE + + + UPDATE + + + OF + + + trigger_column_list + + + + +
             ::= 'INSERT'
    +
               | 'DELETE'
    +
               | 'UPDATE' ( 'OF' trigger_column_list )?
    +
    + referenced by: + + trigger_definition + + trigger_column_list: + + + + + + + + column_name_list + + + + +
             ::= column_name_list
    +
    + referenced by: + + trigger_event + + triggered_action: + + + + + + + + FOR + + + EACH + + + ROW + + + STATEMENT* + + + triggered_when_clause + + + triggered_SQL_statement + + + + +
             ::= ( 'FOR' 'EACH' ( 'ROW' | 'STATEMENT*' ) )? triggered_when_clause? triggered_SQL_statement
    +
    + referenced by: + + trigger_definition + + triggered_when_clause: + + + + + + + + WHEN + + + ( + + + search_condition + + ) + + + + + +
             ::= 'WHEN' '(' search_condition ')'
    +
    + referenced by: + + triggered_action + + triggered_SQL_statement: + + + + + + + + SQL_procedure_statement + + BEGIN + + + ATOMIC + + + SQL_procedure_statement + + ; + + + END + + + + + +
             ::= SQL_procedure_statement
    +
               | 'BEGIN' 'ATOMIC' ( SQL_procedure_statement ';' )+ 'END'
    +
    + referenced by: + + triggered_action + + transition_table_or_variable_list: + + + + + + + + transition_table_or_variable + + + + +
             ::= transition_table_or_variable+
    +
    + referenced by: + + trigger_definition + + transition_table_or_variable: + + + + + + + + OLD + + + ROW + + + AS + + + old_transition_variable_name + + TABLE + + + AS + + + old_transition_table_name + + NEW + + + ROW + + + AS + + + new_transition_variable_name + + TABLE + + + AS + + + new_transition_table_name + + + + +
             ::= 'OLD' ( 'ROW'? 'AS'? old_transition_variable_name | 'TABLE' 'AS'? old_transition_table_name )
    +
               | 'NEW' ( 'ROW'? 'AS'? new_transition_variable_name | 'TABLE' 'AS'? new_transition_table_name )
    +
    + referenced by: + + transition_table_or_variable_list + + old_transition_table_name: + + + + + + + + transition_table_name + + + + +
             ::= transition_table_name
    +
    + referenced by: + + transition_table_or_variable + + new_transition_table_name: + + + + + + + + transition_table_name + + + + +
             ::= transition_table_name
    +
    + referenced by: + + transition_table_or_variable + + transition_table_name: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + new_transition_table_name + old_transition_table_name + table_or_query_name + + old_transition_variable_name: + + + + + + + + correlation_name + + + + +
             ::= correlation_name
    +
    + referenced by: + + transition_table_or_variable + + new_transition_variable_name: + + + + + + + + correlation_name + + + + +
             ::= correlation_name
    +
    + referenced by: + + transition_table_or_variable + + drop_trigger_statement: + + + + + + + + DROP + + + TRIGGER + + + trigger_name + + + + +
             ::= 'DROP' 'TRIGGER' trigger_name
    +
    + referenced by: + + SQL_schema_manipulation_statement + + user_defined_type_definition: + + + + + + + + CREATE + + + TYPE* + + + user_defined_type_body + + + + +
             ::= 'CREATE' 'TYPE*' user_defined_type_body
    +
    + referenced by: + + SQL_schema_definition_statement + schema_element + + user_defined_type_body: + + + + + + + + schema_resolved_user_defined_type_name + + + subtype_clause + + AS + + + representation + + + user_defined_type_option_list + + + method_specification_list + + + + + + + referenced by: + + user_defined_type_definition + + user_defined_type_option_list: + + + + + + + + user_defined_type_option + + + + +
             ::= user_defined_type_option+
    +
    + referenced by: + + user_defined_type_body + + user_defined_type_option: + + + + + + + + instantiable_clause + + + finality + + + reference_type_specification + + + cast_to_ref + + + cast_to_type + + + cast_to_distinct + + + cast_to_source + + + + +
             ::= instantiable_clause
    +
               | finality
    +
               | reference_type_specification
    +
               | cast_to_ref
    +
               | cast_to_type
    +
               | cast_to_distinct
    +
               | cast_to_source
    +
    + referenced by: + + user_defined_type_option_list + + subtype_clause: + + + + + + + + UNDER* + + + supertype_name + + + + +
             ::= 'UNDER*' supertype_name
    +
    + referenced by: + + user_defined_type_body + + supertype_name: + + + + + + + + path_resolved_user_defined_type_name + + + + + + + referenced by: + + subtype_clause + + representation: + + + + + + + + predefined_type + + + collection_type + + + member_list + + + + +
             ::= predefined_type
    +
               | collection_type
    +
               | member_list
    +
    + referenced by: + + user_defined_type_body + + member_list: + + + + + + + + ( + + + member + + , + + + ) + + + + + +
             ::= '(' member ( ',' member )* ')'
    +
    + referenced by: + + representation + + member: + + + + + + + + attribute_definition + + + + + + referenced by: + + member_list + + instantiable_clause: + + + + + + + + NOT + + + INSTANTIABLE* + + + + + +
             ::= 'NOT'? 'INSTANTIABLE*'
    +
    + referenced by: + + user_defined_type_option + + finality: + + + + + + + + NOT + + + FINAL* + + + + +
    finality ::= 'NOT'? 'FINAL*'
    +
    + referenced by: + + user_defined_type_option + + reference_type_specification: + + + + + + + + user_defined_representation + + + derived_representation + + + system_generated_representation + + + + +
             ::= user_defined_representation
    +
               | derived_representation
    +
               | system_generated_representation
    +
    + referenced by: + + user_defined_type_option + + user_defined_representation: + + + + + + + + REF + + + USING + + + predefined_type + + + + +
             ::= 'REF' 'USING' predefined_type
    +
    + referenced by: + + reference_type_specification + + derived_representation: + + + + + + + + REF + + + FROM + + + list_of_attributes + + + + +
             ::= 'REF' 'FROM' list_of_attributes
    +
    + referenced by: + + reference_type_specification + + system_generated_representation: + + + + + + + + REF + + + IS + + + SYSTEM + + + GENERATED* + + + + + +
             ::= 'REF' 'IS' 'SYSTEM' 'GENERATED*'
    +
    + referenced by: + + reference_type_specification + + cast_to_ref: + + + + + + + + CAST + + + ( + + + SOURCE* + + + AS + + + REF + + + ) + + + WITH + + + cast_to_ref_identifier + + + + +
             ::= 'CAST' '(' 'SOURCE*' 'AS' 'REF' ')' 'WITH' cast_to_ref_identifier
    +
    + referenced by: + + user_defined_type_option + + cast_to_ref_identifier: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + cast_to_ref + + cast_to_type: + + + + + + + + CAST + + + ( + + + REF + + + AS + + + SOURCE* + + + ) + + + WITH + + + cast_to_type_identifier + + + + +
             ::= 'CAST' '(' 'REF' 'AS' 'SOURCE*' ')' 'WITH' cast_to_type_identifier
    +
    + referenced by: + + user_defined_type_option + + cast_to_type_identifier: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + cast_to_type + + list_of_attributes: + + + + + + + + ( + + + attribute_name + + , + + + ) + + + + + +
             ::= '(' attribute_name ( ',' attribute_name )* ')'
    +
    + referenced by: + + derived_representation + + cast_to_distinct: + + + + + + + + CAST + + + ( + + + SOURCE* + + + AS + + + DISTINCT + + + ) + + + WITH + + + cast_to_distinct_identifier + + + + +
             ::= 'CAST' '(' 'SOURCE*' 'AS' 'DISTINCT' ')' 'WITH' cast_to_distinct_identifier
    +
    + referenced by: + + user_defined_type_option + + cast_to_distinct_identifier: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + cast_to_distinct + + cast_to_source: + + + + + + + + CAST + + + ( + + + DISTINCT + + + AS + + + SOURCE* + + + ) + + + WITH + + + cast_to_source_identifier + + + + +
             ::= 'CAST' '(' 'DISTINCT' 'AS' 'SOURCE*' ')' 'WITH' cast_to_source_identifier
    +
    + referenced by: + + user_defined_type_option + + cast_to_source_identifier: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + cast_to_source + + method_specification_list: + + + + + + + + method_specification + + , + + + + + +
             ::= method_specification ( ',' method_specification )*
    +
    + referenced by: + + user_defined_type_body + + method_specification: + + + + + + + + original_method_specification + + + overriding_method_specification + + + + +
             ::= original_method_specification
    +
               | overriding_method_specification
    +
    + referenced by: + + method_specification_list + + original_method_specification: + + + + + + + + partial_method_specification + + SELF* + + + AS + + + RESULT + + + SELF* + + + AS + + + LOCATOR* + + + method_characteristics + + + + +
             ::= partial_method_specification 'SELF*' 'AS' 'RESULT' 'SELF*' 'AS' 'LOCATOR*' method_characteristics?
    +
    + referenced by: + + add_original_method_specification + method_specification + + overriding_method_specification: + + + + + + + + OVERRIDING* + + + partial_method_specification + + + + +
             ::= 'OVERRIDING*' partial_method_specification
    +
    + referenced by: + + add_overriding_method_specification + method_specification + + partial_method_specification: + + + + + + + + INSTANCE* + + + STATIC + + + CONSTRUCTOR* + + + METHOD + + + method_name + + + SQL_parameter_declaration_list + + + returns_clause + + SPECIFIC + + + specific_method_name + + + + +
             ::= ( 'INSTANCE*' | 'STATIC' | 'CONSTRUCTOR*' ) 'METHOD' method_name SQL_parameter_declaration_list returns_clause 'SPECIFIC' specific_method_name
    +
    + referenced by: + + original_method_specification + overriding_method_specification + + specific_method_name: + + + + + + + + schema_name + + . + + + qualified_identifier + + + + +
             ::= ( schema_name '.' )? qualified_identifier
    +
    + referenced by: + + method_specification_designator + partial_method_specification + + method_characteristics: + + + + + + + + method_characteristic + + + + +
             ::= method_characteristic+
    +
    + referenced by: + + original_method_specification + + method_characteristic: + + + + + + + + language_clause + + + parameter_style_clause + + + deterministic_characteristic + + + SQL_data_access_indication + + + null_call_clause + + + + +
             ::= language_clause
    +
               | parameter_style_clause
    +
               | deterministic_characteristic
    +
               | SQL_data_access_indication
    +
               | null_call_clause
    +
    + referenced by: + + method_characteristics + + attribute_definition: + + + + + + + + attribute_name + + + data_type + + + attribute_default + + + collate_clause + + + + + + + referenced by: + + add_attribute_definition + member + + attribute_default: + + + + + + + + default_clause + + + + +
             ::= default_clause
    +
    + referenced by: + + attribute_definition + + alter_type_statement: + + + + + + + + ALTER + + + TYPE* + + + schema_resolved_user_defined_type_name + + + alter_type_action + + + + +
             ::= 'ALTER' 'TYPE*' schema_resolved_user_defined_type_name alter_type_action
    +
    + referenced by: + + SQL_schema_manipulation_statement + + alter_type_action: + + + + + + + + add_attribute_definition + + + drop_attribute_definition + + + add_original_method_specification + + + add_overriding_method_specification + + + drop_method_specification + + + + +
             ::= add_attribute_definition
    +
               | drop_attribute_definition
    +
               | add_original_method_specification
    +
               | add_overriding_method_specification
    +
               | drop_method_specification
    +
    + referenced by: + + alter_type_statement + + add_attribute_definition: + + + + + + + + ADD* + + + ATTRIBUTE* + + + attribute_definition + + + + +
             ::= 'ADD*' 'ATTRIBUTE*' attribute_definition
    +
    + referenced by: + + alter_type_action + + drop_attribute_definition: + + + + + + + + DROP + + + ATTRIBUTE* + + + attribute_name + + RESTRICT* + + + + + +
             ::= 'DROP' 'ATTRIBUTE*' attribute_name 'RESTRICT*'
    +
    + referenced by: + + alter_type_action + + add_original_method_specification: + + + + + + + + ADD* + + + original_method_specification + + + + +
             ::= 'ADD*' original_method_specification
    +
    + referenced by: + + alter_type_action + + add_overriding_method_specification: + + + + + + + + ADD* + + + overriding_method_specification + + + + +
             ::= 'ADD*' overriding_method_specification
    +
    + referenced by: + + alter_type_action + + drop_method_specification: + + + + + + + + DROP + + + specific_method_specification_designator + + RESTRICT* + + + + + +
             ::= 'DROP' specific_method_specification_designator 'RESTRICT*'
    +
    + referenced by: + + alter_type_action + + specific_method_specification_designator: + + + + + + + + INSTANCE* + + + STATIC + + + CONSTRUCTOR* + + + METHOD + + + method_name + + + data_type_list + + + + +
             ::= ( 'INSTANCE*' | 'STATIC' | 'CONSTRUCTOR*' )? 'METHOD' method_name data_type_list
    +
    + referenced by: + + drop_method_specification + + drop_data_type_statement: + + + + + + + + DROP + + + TYPE* + + + schema_resolved_user_defined_type_name + + + drop_behavior + + + + +
             ::= 'DROP' 'TYPE*' schema_resolved_user_defined_type_name drop_behavior
    +
    + referenced by: + + SQL_schema_manipulation_statement + + SQL_invoked_routine: + + + + + + + + schema_routine + + + + +
             ::= schema_routine
    +
    + referenced by: + + SQL_schema_definition_statement + + schema_routine: + + + + + + + + schema_procedure + + + schema_function + + + + +
             ::= schema_procedure
    +
               | schema_function
    +
    + referenced by: + + SQL_invoked_routine + schema_element + + schema_procedure: + + + + + + + + CREATE + + + SQL_invoked_procedure + + + + +
             ::= 'CREATE' SQL_invoked_procedure
    +
    + referenced by: + + schema_routine + + schema_function: + + + + + + + + CREATE + + + SQL_invoked_function + + + + +
             ::= 'CREATE' SQL_invoked_function
    +
    + referenced by: + + schema_routine + + SQL_invoked_procedure: + + + + + + + + PROCEDURE + + + schema_qualified_routine_name + + + SQL_parameter_declaration_list + + + routine_characteristics + + + routine_body + + + + + + + referenced by: + + schema_procedure + + SQL_invoked_function: + + + + + + + + function_specification + + + method_specification_designator + + + routine_body + + + + + + + referenced by: + + schema_function + + SQL_parameter_declaration_list: + + + + + + + + ( + + + SQL_parameter_declaration + + , + + + ) + + + + + +
             ::= '(' ( SQL_parameter_declaration ( ',' SQL_parameter_declaration )* )? ')'
    +
    + referenced by: + + SQL_invoked_procedure + function_specification + method_specification_designator + partial_method_specification + + SQL_parameter_declaration: + + + + + + + + parameter_mode + + + SQL_parameter_name + + + parameter_type + + RESULT + + + DEFAULT + + + parameter_default + + + + +
             ::= parameter_mode? SQL_parameter_name? parameter_type 'RESULT'? ( 'DEFAULT' parameter_default )?
    +
    + referenced by: + + SQL_parameter_declaration_list + private_parameter_declaration_list + + parameter_default: + + + + + + + + value_expression + + + contextually_typed_value_specification + + + descriptor_value_constructor + + + + +
             ::= value_expression
    + +
               | descriptor_value_constructor
    +
    + referenced by: + + SQL_parameter_declaration + + parameter_mode: + + + + + + + + IN + + + OUT + + + INOUT + + + + + +
             ::= 'IN'
    +
               | 'OUT'
    +
               | 'INOUT'
    +
    + referenced by: + + SQL_parameter_declaration + + parameter_type: + + + + + + + + data_type + + + locator_indication + + + generic_table_parameter_type + + DESCRIPTOR* + + + + + +
             ::= data_type locator_indication?
    +
               | generic_table_parameter_type
    +
               | 'DESCRIPTOR*'
    +
    + referenced by: + + SQL_parameter_declaration + + generic_table_parameter_type: + + + + + + + + TABLE + + + pass_through_option + + + generic_table_semantics + + + + +
             ::= 'TABLE' pass_through_option? generic_table_semantics?
    +
    + referenced by: + + parameter_type + + pass_through_option: + + + + + + + + NO + + + PASS* + + + THROUGH* + + + + + +
             ::= 'NO'? 'PASS*' 'THROUGH*'
    +
    + referenced by: + + generic_table_parameter_type + + generic_table_semantics: + + + + + + + + WITH + + + ROW + + + SEMANTICS + + SET + + + SEMANTICS + + + generic_table_pruning + + + + +
             ::= 'WITH' ( 'ROW' SEMANTICS | 'SET' SEMANTICS generic_table_pruning? )
    +
    + referenced by: + + generic_table_parameter_type + + generic_table_pruning: + + + + + + + + PRUNE* + + + KEEP* + + + ON + + + EMPTY + + + + + +
             ::= ( 'PRUNE*' | 'KEEP*' ) 'ON' 'EMPTY'
    +
    + referenced by: + + generic_table_semantics + + locator_indication: + + + + + + + + AS + + + LOCATOR* + + + + + +
             ::= 'AS' 'LOCATOR*'
    +
    + referenced by: + + host_parameter_data_type + parameter_type + result_cast_from_type + returns_data_type + + function_specification: + + + + + + + + FUNCTION + + + schema_qualified_routine_name + + + SQL_parameter_declaration_list + + + returns_clause + + + routine_characteristics + + + dispatch_clause + + + + + + + referenced by: + + SQL_invoked_function + + method_specification_designator: + + + + + + + + SPECIFIC + + + METHOD + + + specific_method_name + + INSTANCE* + + + STATIC + + + CONSTRUCTOR* + + + METHOD + + + method_name + + + SQL_parameter_declaration_list + + + returns_clause + + FOR + + + schema_resolved_user_defined_type_name + + + + +
             ::= 'SPECIFIC' 'METHOD' specific_method_name
    +
               | ( 'INSTANCE*' | 'STATIC' | 'CONSTRUCTOR*' ) 'METHOD' method_name SQL_parameter_declaration_list returns_clause? 'FOR' schema_resolved_user_defined_type_name
    +
    + referenced by: + + SQL_invoked_function + + routine_characteristics: + + + + + + + + routine_characteristic + + + + +
             ::= routine_characteristic*
    +
    + referenced by: + + SQL_invoked_procedure + function_specification + + routine_characteristic: + + + + + + + + language_clause + + + parameter_style_clause + + SPECIFIC + + + specific_name + + + deterministic_characteristic + + + SQL_data_access_indication + + + null_call_clause + + + returned_result_sets_characteristic + + + savepoint_level_indication + + + + +
             ::= language_clause
    +
               | parameter_style_clause
    +
               | 'SPECIFIC' specific_name
    +
               | deterministic_characteristic
    +
               | SQL_data_access_indication
    +
               | null_call_clause
    +
               | returned_result_sets_characteristic
    +
               | savepoint_level_indication
    +
    + referenced by: + + routine_characteristics + + savepoint_level_indication: + + + + + + + + NEW + + + OLD + + + SAVEPOINT + + + LEVEL* + + + + + +
             ::= ( 'NEW' | 'OLD' ) 'SAVEPOINT' 'LEVEL*'
    +
    + referenced by: + + routine_characteristic + + returned_result_sets_characteristic: + + + + + + + + DYNAMIC + + + RESULT + + + SETS* + + + maximum_returned_result_sets + + + + +
             ::= 'DYNAMIC' 'RESULT' 'SETS*' maximum_returned_result_sets
    +
    + referenced by: + + alter_routine_characteristic + routine_characteristic + + parameter_style_clause: + + + + + + + + PARAMETER + + + STYLE* + + + parameter_style + + + + +
             ::= 'PARAMETER' 'STYLE*' parameter_style
    +
    + referenced by: + + alter_routine_characteristic + external_body_reference + method_characteristic + routine_characteristic + + dispatch_clause: + + + + + + + + STATIC + + + DISPATCH* + + + + + +
             ::= 'STATIC' 'DISPATCH*'
    +
    + referenced by: + + function_specification + + returns_clause: + + + + + + + + RETURNS + + + returns_type + + + + +
             ::= 'RETURNS' returns_type
    +
    + referenced by: + + function_specification + method_specification_designator + partial_method_specification + + returns_type: + + + + + + + + returns_data_type + + + result_cast + + + returns_table_type + + + + +
             ::= returns_data_type result_cast?
    +
               | returns_table_type
    +
    + referenced by: + + returns_clause + + returns_table_type: + + + + + + + + TABLE + + + table_function_column_list + + ONLY + + + PASS* + + + THROUGH* + + + + + +
             ::= 'TABLE' table_function_column_list?
    +
               | 'ONLY' 'PASS*' 'THROUGH*'
    +
    + referenced by: + + returns_type + + table_function_column_list: + + + + + + + + ( + + + table_function_column_list_element + + , + + + ) + + + + + + + + referenced by: + + returns_table_type + + table_function_column_list_element: + + + + + + + + column_name + + + data_type + + + + +
             ::= column_name data_type
    +
    + referenced by: + + table_function_column_list + + result_cast: + + + + + + + + CAST + + + FROM + + + result_cast_from_type + + + + +
             ::= 'CAST' 'FROM' result_cast_from_type
    +
    + referenced by: + + returns_type + + result_cast_from_type: + + + + + + + + data_type + + + locator_indication + + + + +
             ::= data_type locator_indication?
    +
    + referenced by: + + result_cast + + returns_data_type: + + + + + + + + data_type + + + locator_indication + + + + +
             ::= data_type locator_indication?
    +
    + referenced by: + + returns_type + + routine_body: + + + + + + + + SQL_routine_spec + + + external_body_reference + + + polymorphic_table_function_body + + + + +
             ::= SQL_routine_spec
    +
               | external_body_reference
    +
               | polymorphic_table_function_body
    +
    + referenced by: + + SQL_invoked_function + SQL_invoked_procedure + + SQL_routine_spec: + + + + + + + + rights_clause + + + SQL_routine_body + + + + +
             ::= rights_clause? SQL_routine_body
    +
    + referenced by: + + routine_body + + rights_clause: + + + + + + + + SQL + + + SECURITY* + + + INVOKER* + + + DEFINER* + + + + + +
             ::= 'SQL' 'SECURITY*' ( 'INVOKER*' | 'DEFINER*' )
    +
    + referenced by: + + SQL_routine_spec + + SQL_routine_body: + + + + + + + + SQL_procedure_statement + + + + +
             ::= SQL_procedure_statement
    +
    + referenced by: + + SQL_routine_spec + + external_body_reference: + + + + + + + + EXTERNAL + + + NAME* + + + external_routine_name + + + parameter_style_clause + + + transform_group_specification + + + external_security_clause + + + + + + + referenced by: + + routine_body + + polymorphic_table_function_body: + + + + + + + + PTF_private_parameters + + DESCRIBE + + + WITH + + + PTF_describe_component_procedure + + START + + + WITH + + + PTF_start_component_procedure + + FULFILL* + + + WITH + + + PTF_fulfill_component_procedure + + FINISH* + + + WITH + + + PTF_finish_component_procedure + + + + +
             ::= PTF_private_parameters? ( 'DESCRIBE' 'WITH' PTF_describe_component_procedure )? ( 'START' 'WITH' PTF_start_component_procedure )? 'FULFILL*' 'WITH' PTF_fulfill_component_procedure ( 'FINISH*' 'WITH' PTF_finish_component_procedure )?
    +
    + referenced by: + + routine_body + + PTF_private_parameters: + + + + + + + + PRIVATE* + + + DATA* + + + private_parameter_declaration_list + + + + +
             ::= 'PRIVATE*' 'DATA*'? private_parameter_declaration_list
    +
    + referenced by: + + polymorphic_table_function_body + + private_parameter_declaration_list: + + + + + + + + ( + + + SQL_parameter_declaration + + , + + + ) + + + + + +
             ::= '(' ( SQL_parameter_declaration ( ',' SQL_parameter_declaration )* )? ')'
    +
    + referenced by: + + PTF_private_parameters + + PTF_describe_component_procedure: + + + + + + + + specific_routine_designator + + + + +
             ::= specific_routine_designator
    +
    + referenced by: + + polymorphic_table_function_body + + PTF_start_component_procedure: + + + + + + + + specific_routine_designator + + + + +
             ::= specific_routine_designator
    +
    + referenced by: + + polymorphic_table_function_body + + PTF_fulfill_component_procedure: + + + + + + + + specific_routine_designator + + + + +
             ::= specific_routine_designator
    +
    + referenced by: + + polymorphic_table_function_body + + PTF_finish_component_procedure: + + + + + + + + specific_routine_designator + + + + +
             ::= specific_routine_designator
    +
    + referenced by: + + polymorphic_table_function_body + + external_security_clause: + + + + + + + + EXTERNAL + + + SECURITY* + + + DEFINER* + + + INVOKER* + + + IMPLEMENTATION* + + + DEFINED* + + + + + +
             ::= 'EXTERNAL' 'SECURITY*' ( 'DEFINER*' | 'INVOKER*' | 'IMPLEMENTATION*' + 'DEFINED*' )
    +
    + referenced by: + + external_body_reference + + parameter_style: + + + + + + + + SQL + + + GENERAL* + + + + + +
             ::= 'SQL'
    +
               | 'GENERAL*'
    +
    + referenced by: + + parameter_style_clause + + deterministic_characteristic: + + + + + + + + NOT + + + DETERMINISTIC + + + + + +
             ::= 'NOT'? 'DETERMINISTIC'
    +
    + referenced by: + + method_characteristic + routine_characteristic + + SQL_data_access_indication: + + + + + + + + NO + + + CONTAINS + + + SQL + + + READS + + + MODIFIES + + + SQL + + + DATA* + + + + + +
             ::= ( 'NO' | 'CONTAINS' ) 'SQL'
    +
               | ( 'READS' | 'MODIFIES' ) 'SQL' 'DATA*'
    +
    + referenced by: + + alter_routine_characteristic + method_characteristic + routine_characteristic + + null_call_clause: + + + + + + + + RETURNS + + + NULL + + + CALLED + + + ON + + + NULL + + + INPUT* + + + + + +
             ::= ( 'RETURNS' 'NULL' | 'CALLED' ) 'ON' 'NULL' 'INPUT*'
    +
    + referenced by: + + alter_routine_characteristic + method_characteristic + routine_characteristic + + maximum_returned_result_sets: + + + + + + + + unsigned_integer + + + + +
             ::= unsigned_integer
    +
    + referenced by: + + returned_result_sets_characteristic + + transform_group_specification: + + + + + + + + TRANSFORM* + + + GROUP + + + single_group_specification + + + multiple_group_specification + + + + +
             ::= 'TRANSFORM*' 'GROUP' ( single_group_specification | multiple_group_specification )
    +
    + referenced by: + + embedded_transform_group_specification + external_body_reference + module_transform_group_specification + + single_group_specification: + + + + + + + + group_name + + + + +
             ::= group_name
    +
    + referenced by: + + transform_group_specification + + multiple_group_specification: + + + + + + + + group_specification + + , + + + + + +
             ::= group_specification ( ',' group_specification )*
    +
    + referenced by: + + transform_group_specification + + group_specification: + + + + + + + + group_name + + FOR + + + TYPE* + + + path_resolved_user_defined_type_name + + + + +
             ::= group_name 'FOR' 'TYPE*' path_resolved_user_defined_type_name
    +
    + referenced by: + + multiple_group_specification + + alter_routine_statement: + + + + + + + + ALTER + + + specific_routine_designator + + + alter_routine_characteristics + + RESTRICT* + + + + + +
             ::= 'ALTER' specific_routine_designator alter_routine_characteristics 'RESTRICT*'
    +
    + referenced by: + + SQL_schema_manipulation_statement + + alter_routine_characteristics: + + + + + + + + alter_routine_characteristic + + + + +
             ::= alter_routine_characteristic+
    +
    + referenced by: + + alter_routine_statement + + alter_routine_characteristic: + + + + + + + + language_clause + + + parameter_style_clause + + + SQL_data_access_indication + + + null_call_clause + + + returned_result_sets_characteristic + + NAME* + + + external_routine_name + + + + +
             ::= language_clause
    +
               | parameter_style_clause
    +
               | SQL_data_access_indication
    +
               | null_call_clause
    +
               | returned_result_sets_characteristic
    +
               | 'NAME*' external_routine_name
    +
    + referenced by: + + alter_routine_characteristics + + drop_routine_statement: + + + + + + + + DROP + + + specific_routine_designator + + + drop_behavior + + + + +
             ::= 'DROP' specific_routine_designator drop_behavior
    +
    + referenced by: + + SQL_schema_manipulation_statement + + user_defined_cast_definition: + + + + + + + + CREATE + + + CAST + + + ( + + + source_data_type + + AS + + + target_data_type + + ) + + + WITH + + + cast_function + + AS + + + ASSIGNMENT* + + + + + +
             ::= 'CREATE' 'CAST' '(' source_data_type 'AS' target_data_type ')' 'WITH' cast_function ( 'AS' 'ASSIGNMENT*' )?
    +
    + referenced by: + + SQL_schema_definition_statement + schema_element + + cast_function: + + + + + + + + specific_routine_designator + + + + +
             ::= specific_routine_designator
    +
    + referenced by: + + user_defined_cast_definition + + source_data_type: + + + + + + + + data_type + + + + +
             ::= data_type
    +
    + referenced by: + + drop_user_defined_cast_statement + user_defined_cast_definition + + target_data_type: + + + + + + + + data_type + + + + +
             ::= data_type
    +
    + referenced by: + + drop_user_defined_cast_statement + user_defined_cast_definition + + drop_user_defined_cast_statement: + + + + + + + + DROP + + + CAST + + + ( + + + source_data_type + + AS + + + target_data_type + + ) + + + drop_behavior + + + + +
             ::= 'DROP' 'CAST' '(' source_data_type 'AS' target_data_type ')' drop_behavior
    +
    + referenced by: + + SQL_schema_manipulation_statement + + user_defined_ordering_definition: + + + + + + + + CREATE + + + ORDERING* + + + FOR + + + schema_resolved_user_defined_type_name + + + ordering_form + + + + +
             ::= 'CREATE' 'ORDERING*' 'FOR' schema_resolved_user_defined_type_name ordering_form
    +
    + referenced by: + + SQL_schema_definition_statement + schema_element + + ordering_form: + + + + + + + + equals_ordering_form + + + full_ordering_form + + + + +
             ::= equals_ordering_form
    +
               | full_ordering_form
    +
    + referenced by: + + user_defined_ordering_definition + + equals_ordering_form: + + + + + + + + EQUALS + + + ONLY + + + BY + + + ordering_category + + + + +
             ::= 'EQUALS' 'ONLY' 'BY' ordering_category
    +
    + referenced by: + + ordering_form + + full_ordering_form: + + + + + + + + ORDER + + + FULL + + + BY + + + ordering_category + + + + +
             ::= 'ORDER' 'FULL' 'BY' ordering_category
    +
    + referenced by: + + ordering_form + + ordering_category: + + + + + + + + relative_category + + + map_category + + + state_category + + + + +
             ::= relative_category
    +
               | map_category
    +
               | state_category
    +
    + referenced by: + + equals_ordering_form + full_ordering_form + + relative_category: + + + + + + + + RELATIVE* + + + WITH + + + relative_function_specification + + + + +
             ::= 'RELATIVE*' 'WITH' relative_function_specification
    +
    + referenced by: + + ordering_category + + map_category: + + + + + + + + MAP* + + + WITH + + + map_function_specification + + + + +
             ::= 'MAP*' 'WITH' map_function_specification
    +
    + referenced by: + + ordering_category + + state_category: + + + + + + + + STATE* + + + specific_name + + + + +
             ::= 'STATE*' specific_name?
    +
    + referenced by: + + ordering_category + + relative_function_specification: + + + + + + + + specific_routine_designator + + + + +
             ::= specific_routine_designator
    +
    + referenced by: + + relative_category + + map_function_specification: + + + + + + + + specific_routine_designator + + + + +
             ::= specific_routine_designator
    +
    + referenced by: + + map_category + + drop_user_defined_ordering_statement: + + + + + + + + DROP + + + ORDERING* + + + FOR + + + schema_resolved_user_defined_type_name + + + drop_behavior + + + + +
             ::= 'DROP' 'ORDERING*' 'FOR' schema_resolved_user_defined_type_name drop_behavior
    +
    + referenced by: + + SQL_schema_manipulation_statement + + transform_definition: + + + + + + + + CREATE + + + TRANSFORM* + + + TRANSFORMS* + + + FOR + + + schema_resolved_user_defined_type_name + + + transform_group + + + + +
             ::= 'CREATE' ( 'TRANSFORM*' | 'TRANSFORMS*' ) 'FOR' schema_resolved_user_defined_type_name transform_group+
    +
    + referenced by: + + SQL_schema_definition_statement + schema_element + + transform_group: + + + + + + + + group_name + + ( + + + transform_element_list + + ) + + + + + +
             ::= group_name '(' transform_element_list ')'
    +
    + referenced by: + + transform_definition + + group_name: + + + + + + + + identifier + + + + +
             ::= identifier
    +
    + referenced by: + + alter_group + group_specification + single_group_specification + transform_group + transform_group_element + + transform_element_list: + + + + + + + + transform_element + + , + + + transform_element + + + + +
             ::= transform_element ( ',' transform_element )?
    +
    + referenced by: + + add_transform_element_list + transform_group + + transform_element: + + + + + + + + to_sql + + + from_sql + + + + +
             ::= to_sql
    +
               | from_sql
    +
    + referenced by: + + transform_element_list + + to_sql: + + + + + + + + TO + + + SQL + + + WITH + + + to_sql_function + + + +
    to_sql   ::= 'TO' 'SQL' 'WITH' to_sql_function
    +
    + referenced by: + + transform_element + + from_sql: + + + + + + + + FROM + + + SQL + + + WITH + + + from_sql_function + + + +
    from_sql ::= 'FROM' 'SQL' 'WITH' from_sql_function
    +
    + referenced by: + + transform_element + + to_sql_function: + + + + + + + + specific_routine_designator + + + + +
             ::= specific_routine_designator
    +
    + referenced by: + + to_sql + + from_sql_function: + + + + + + + + specific_routine_designator + + + + +
             ::= specific_routine_designator
    +
    + referenced by: + + from_sql + + alter_transform_statement: + + + + + + + + ALTER + + + TRANSFORM* + + + TRANSFORMS* + + + FOR + + + schema_resolved_user_defined_type_name + + + alter_group + + + + +
             ::= 'ALTER' ( 'TRANSFORM*' | 'TRANSFORMS*' ) 'FOR' schema_resolved_user_defined_type_name alter_group+
    +
    + referenced by: + + SQL_schema_manipulation_statement + + alter_group: + + + + + + + + group_name + + ( + + + alter_transform_action_list + + ) + + + + + +
             ::= group_name '(' alter_transform_action_list ')'
    +
    + referenced by: + + alter_transform_statement + + alter_transform_action_list: + + + + + + + + alter_transform_action + + , + + + + + +
             ::= alter_transform_action ( ',' alter_transform_action )*
    +
    + referenced by: + + alter_group + + alter_transform_action: + + + + + + + + add_transform_element_list + + + drop_transform_element_list + + + + +
             ::= add_transform_element_list
    +
               | drop_transform_element_list
    +
    + referenced by: + + alter_transform_action_list + + add_transform_element_list: + + + + + + + + ADD* + + + ( + + + transform_element_list + + ) + + + + + +
             ::= 'ADD*' '(' transform_element_list ')'
    +
    + referenced by: + + alter_transform_action + + drop_transform_element_list: + + + + + + + + DROP + + + ( + + + transform_kind + + , + + + transform_kind + + + drop_behavior + + ) + + + + + +
             ::= 'DROP' '(' transform_kind ( ',' transform_kind )? drop_behavior ')'
    +
    + referenced by: + + alter_transform_action + + transform_kind: + + + + + + + + TO + + + FROM + + + SQL + + + + + +
             ::= ( 'TO' | 'FROM' ) 'SQL'
    +
    + referenced by: + + drop_transform_element_list + + drop_transform_statement: + + + + + + + + DROP + + + TRANSFORM* + + + TRANSFORMS* + + + transforms_to_be_dropped + + FOR + + + schema_resolved_user_defined_type_name + + + drop_behavior + + + + +
             ::= 'DROP' ( 'TRANSFORM*' | 'TRANSFORMS*' ) transforms_to_be_dropped 'FOR' schema_resolved_user_defined_type_name drop_behavior
    +
    + referenced by: + + SQL_schema_manipulation_statement + + transforms_to_be_dropped: + + + + + + + + ALL + + + transform_group_element + + + + +
             ::= 'ALL'
    +
               | transform_group_element
    +
    + referenced by: + + drop_transform_statement + + transform_group_element: + + + + + + + + group_name + + + + +
             ::= group_name
    +
    + referenced by: + + transforms_to_be_dropped + + sequence_generator_definition: + + + + + + + + CREATE + + + SEQUENCE* + + + sequence_generator_name + + + sequence_generator_options + + + + +
             ::= 'CREATE' 'SEQUENCE*' sequence_generator_name sequence_generator_options?
    +
    + referenced by: + + SQL_schema_definition_statement + schema_element + + sequence_generator_options: + + + + + + + + sequence_generator_option + + + + +
             ::= sequence_generator_option+
    +
    + referenced by: + + sequence_generator_definition + + sequence_generator_option: + + + + + + + + sequence_generator_data_type_option + + + common_sequence_generator_options + + + + + +
               | common_sequence_generator_options
    +
    + referenced by: + + sequence_generator_options + + common_sequence_generator_options: + + + + + + + + common_sequence_generator_option + + + + +
             ::= common_sequence_generator_option+
    +
    + referenced by: + + identity_column_specification + sequence_generator_option + + common_sequence_generator_option: + + + + + + + + sequence_generator_start_with_option + + + basic_sequence_generator_option + + + + + +
               | basic_sequence_generator_option
    +
    + referenced by: + + common_sequence_generator_options + + basic_sequence_generator_option: + + + + + + + + sequence_generator_increment_by_option + + + sequence_generator_maxvalue_option + + + sequence_generator_minvalue_option + + + sequence_generator_cycle_option + + + + + +
               | sequence_generator_maxvalue_option
    +
               | sequence_generator_minvalue_option
    +
               | sequence_generator_cycle_option
    +
    + referenced by: + + alter_identity_column_option + alter_sequence_generator_option + common_sequence_generator_option + + sequence_generator_data_type_option: + + + + + + + + AS + + + data_type + + + + +
             ::= 'AS' data_type
    +
    + referenced by: + + sequence_generator_option + + sequence_generator_start_with_option: + + + + + + + + START + + + WITH + + + sequence_generator_start_value + + + + +
             ::= 'START' 'WITH' sequence_generator_start_value
    +
    + referenced by: + + common_sequence_generator_option + + sequence_generator_start_value: + + + + + + + + signed_numeric_literal + + + + +
             ::= signed_numeric_literal
    +
    + referenced by: + + sequence_generator_start_with_option + + sequence_generator_increment_by_option: + + + + + + + + INCREMENT* + + + BY + + + sequence_generator_increment + + + + +
             ::= 'INCREMENT*' 'BY' sequence_generator_increment
    +
    + referenced by: + + basic_sequence_generator_option + + sequence_generator_increment: + + + + + + + + signed_numeric_literal + + + + +
             ::= signed_numeric_literal
    +
    + referenced by: + + sequence_generator_increment_by_option + + sequence_generator_maxvalue_option: + + + + + + + + MAXVALUE* + + + sequence_generator_max_value + + NO + + + MAXVALUE* + + + + + +
             ::= 'MAXVALUE*' sequence_generator_max_value
    +
               | 'NO' 'MAXVALUE*'
    +
    + referenced by: + + basic_sequence_generator_option + + sequence_generator_max_value: + + + + + + + + signed_numeric_literal + + + + +
             ::= signed_numeric_literal
    +
    + referenced by: + + sequence_generator_maxvalue_option + + sequence_generator_minvalue_option: + + + + + + + + MINVALUE* + + + sequence_generator_min_value + + NO + + + MINVALUE* + + + + + +
             ::= 'MINVALUE*' sequence_generator_min_value
    +
               | 'NO' 'MINVALUE*'
    +
    + referenced by: + + basic_sequence_generator_option + + sequence_generator_min_value: + + + + + + + + signed_numeric_literal + + + + +
             ::= signed_numeric_literal
    +
    + referenced by: + + sequence_generator_minvalue_option + + sequence_generator_cycle_option: + + + + + + + + NO + + + CYCLE + + + + + +
             ::= 'NO'? 'CYCLE'
    +
    + referenced by: + + basic_sequence_generator_option + + alter_sequence_generator_statement: + + + + + + + + ALTER + + + SEQUENCE* + + + sequence_generator_name + + + alter_sequence_generator_options + + + + +
             ::= 'ALTER' 'SEQUENCE*' sequence_generator_name alter_sequence_generator_options
    +
    + referenced by: + + SQL_schema_manipulation_statement + + alter_sequence_generator_options: + + + + + + + + alter_sequence_generator_option + + + + +
             ::= alter_sequence_generator_option+
    +
    + referenced by: + + alter_sequence_generator_statement + + alter_sequence_generator_option: + + + + + + + + alter_sequence_generator_restart_option + + + basic_sequence_generator_option + + + + + +
               | basic_sequence_generator_option
    +
    + referenced by: + + alter_sequence_generator_options + + alter_sequence_generator_restart_option: + + + + + + + + RESTART* + + + WITH + + + sequence_generator_restart_value + + + + +
             ::= 'RESTART*' ( 'WITH' sequence_generator_restart_value )?
    +
    + referenced by: + + alter_identity_column_option + alter_sequence_generator_option + + sequence_generator_restart_value: + + + + + + + + signed_numeric_literal + + + + +
             ::= signed_numeric_literal
    +
    + referenced by: + + alter_sequence_generator_restart_option + + drop_sequence_generator_statement: + + + + + + + + DROP + + + SEQUENCE* + + + sequence_generator_name + + + drop_behavior + + + + +
             ::= 'DROP' 'SEQUENCE*' sequence_generator_name drop_behavior
    +
    + referenced by: + + SQL_schema_manipulation_statement + + grant_statement: + + + + + + + + grant_privilege_statement + + + grant_role_statement + + + + +
             ::= grant_privilege_statement
    +
               | grant_role_statement
    +
    + referenced by: + + SQL_schema_definition_statement + schema_element + + grant_privilege_statement: + + + + + + + + GRANT + + + privileges + + TO + + + grantee + + , + + + WITH + + + HIERARCHY* + + + OPTION* + + + WITH + + + GRANT + + + OPTION* + + + GRANTED* + + + BY + + + grantor + + + + +
             ::= 'GRANT' privileges 'TO' grantee ( ',' grantee )* ( 'WITH' 'HIERARCHY*' 'OPTION*' )? ( 'WITH' 'GRANT' 'OPTION*' )? ( 'GRANTED*' + 'BY' grantor )?
    +
    + referenced by: + + grant_statement + + privileges: + + + + + + + + object_privileges + + ON + + + object_name + + + + +
             ::= object_privileges 'ON' object_name
    +
    + referenced by: + + grant_privilege_statement + revoke_privilege_statement + + object_name: + + + + + + + + TABLE + + + table_name + + DOMAIN* + + + domain_name + + COLLATION* + + + collation_name + + CHARACTER + + + SET + + + character_set_name + + TRANSLATION + + + transliteration_name + + TYPE* + + + schema_resolved_user_defined_type_name + + SEQUENCE* + + + sequence_generator_name + + + specific_routine_designator + + + + +
             ::= 'TABLE'? table_name
    +
               | 'DOMAIN*' domain_name
    +
               | 'COLLATION*' collation_name
    +
               | 'CHARACTER' 'SET' character_set_name
    +
               | 'TRANSLATION' transliteration_name
    +
               | 'TYPE*' schema_resolved_user_defined_type_name
    +
               | 'SEQUENCE*' sequence_generator_name
    +
               | specific_routine_designator
    +
    + referenced by: + + privileges + + object_privileges: + + + + + + + + ALL + + + PRIVILEGES* + + + action + + , + + + + + +
             ::= 'ALL' 'PRIVILEGES*'
    +
               | action ( ',' action )*
    +
    + referenced by: + + privileges + + action: + + + + + + + + SELECT + + + ( + + + privilege_column_list + + + privilege_method_list + + ) + + + DELETE + + + INSERT + + + UPDATE + + + REFERENCES + + + ( + + + privilege_column_list + + ) + + + USAGE* + + + TRIGGER + + + UNDER* + + + EXECUTE + + + + +
    action   ::= 'SELECT' ( '(' ( privilege_column_list | privilege_method_list ) ')' )?
    +
               | 'DELETE'
    +
               | ( 'INSERT' | 'UPDATE' | 'REFERENCES' ) ( '(' privilege_column_list ')' )?
    +
               | 'USAGE*'
    +
               | 'TRIGGER'
    +
               | 'UNDER*'
    +
               | 'EXECUTE'
    +
    + referenced by: + + object_privileges + + privilege_method_list: + + + + + + + + specific_routine_designator + + , + + + + + + + + referenced by: + + action + + privilege_column_list: + + + + + + + + column_name_list + + + + +
             ::= column_name_list
    +
    + referenced by: + + action + + grantee: + + + + + + + + PUBLIC* + + + authorization_identifier + + + +
    grantee  ::= 'PUBLIC*'
    +
               | authorization_identifier
    +
    + referenced by: + + grant_privilege_statement + grant_role_statement + revoke_privilege_statement + revoke_role_statement + + grantor: + + + + + + + + CURRENT_USER + + + CURRENT_ROLE + + + +
    grantor  ::= 'CURRENT_USER'
    +
               | CURRENT_ROLE
    +
    + referenced by: + + grant_privilege_statement + grant_role_statement + revoke_privilege_statement + revoke_role_statement + role_definition + + role_definition: + + + + + + + + CREATE + + + ROLE* + + + role_name + + WITH + + + ADMIN* + + + grantor + + + + +
             ::= 'CREATE' 'ROLE*' role_name ( 'WITH' 'ADMIN*' grantor )?
    +
    + referenced by: + + SQL_schema_definition_statement + schema_element + + grant_role_statement: + + + + + + + + GRANT + + + role_granted + + , + + + TO + + + grantee + + , + + + WITH + + + ADMIN* + + + OPTION* + + + GRANTED* + + + BY + + + grantor + + + + +
             ::= 'GRANT' role_granted ( ',' role_granted )* 'TO' grantee ( ',' grantee )* ( 'WITH' 'ADMIN*' 'OPTION*' )? ( 'GRANTED*' 'BY' grantor )?
    +
    + referenced by: + + grant_statement + + role_granted: + + + + + + + + role_name + + + + +
             ::= role_name
    +
    + referenced by: + + grant_role_statement + + drop_role_statement: + + + + + + + + DROP + + + ROLE* + + + role_name + + + + +
             ::= 'DROP' 'ROLE*' role_name
    +
    + referenced by: + + SQL_schema_manipulation_statement + + revoke_statement: + + + + + + + + revoke_privilege_statement + + + revoke_role_statement + + + + +
             ::= revoke_privilege_statement
    +
               | revoke_role_statement
    +
    + referenced by: + + SQL_schema_manipulation_statement + + revoke_privilege_statement: + + + + + + + + REVOKE + + + revoke_option_extension + + + privileges + + FROM + + + grantee + + , + + + GRANTED* + + + BY + + + grantor + + + drop_behavior + + + + +
             ::= 'REVOKE' revoke_option_extension? privileges 'FROM' grantee ( ',' grantee )* ( 'GRANTED*' 'BY' grantor )? drop_behavior
    +
    + referenced by: + + revoke_statement + + revoke_option_extension: + + + + + + + + GRANT + + + HIERARCHY* + + + OPTION* + + + FOR + + + + + +
             ::= ( 'GRANT' | 'HIERARCHY*' ) 'OPTION*' 'FOR'
    +
    + referenced by: + + revoke_privilege_statement + + revoke_role_statement: + + + + + + + + REVOKE + + + ADMIN* + + + OPTION* + + + FOR + + + role_revoked + + , + + + FROM + + + grantee + + , + + + GRANTED* + + + BY + + + grantor + + + drop_behavior + + + + +
             ::= 'REVOKE' ( 'ADMIN*' 'OPTION*' 'FOR' )? role_revoked ( ',' role_revoked )* 'FROM' grantee ( ',' grantee )* ( 'GRANTED*' 'BY' grantor )? drop_behavior
    +
    + referenced by: + + revoke_statement + + role_revoked: + + + + + + + + role_name + + + + +
             ::= role_name
    +
    + referenced by: + + revoke_role_statement + + SQL_client_module_definition: + + + + + + + + module_name_clause + + + language_clause + + + module_authorization_clause + + + module_path_specification + + + module_transform_group_specification + + + module_collations + + + temporary_table_declaration + + + module_contents + + + + + + + no referencesmodule_authorization_clause: + + + + + + + + SCHEMA* + + + schema_name + + AUTHORIZATION + + + module_authorization_identifier + + FOR + + + STATIC + + + ONLY + + + AND + + + DYNAMIC + + + AUTHORIZATION + + + module_authorization_identifier + + FOR + + + STATIC + + + ONLY + + + AND + + + DYNAMIC + + + + + +
             ::= 'SCHEMA*' schema_name ( 'AUTHORIZATION' module_authorization_identifier ( 'FOR' 'STATIC' ( 'ONLY' | 'AND' 'DYNAMIC' ) )? )?
    +
               | 'AUTHORIZATION' module_authorization_identifier ( 'FOR' 'STATIC' ( 'ONLY' | 'AND' 'DYNAMIC' ) )?
    +
    + referenced by: + + SQL_client_module_definition + + module_authorization_identifier: + + + + + + + + authorization_identifier + + + + +
             ::= authorization_identifier
    +
    + referenced by: + + embedded_authorization_identifier + module_authorization_clause + + module_path_specification: + + + + + + + + path_specification + + + + +
             ::= path_specification
    +
    + referenced by: + + SQL_client_module_definition + + module_transform_group_specification: + + + + + + + + transform_group_specification + + + + +
             ::= transform_group_specification
    +
    + referenced by: + + SQL_client_module_definition + + module_collations: + + + + + + + + module_collation_specification + + + + +
             ::= module_collation_specification+
    +
    + referenced by: + + SQL_client_module_definition + embedded_collation_specification + + module_collation_specification: + + + + + + + + COLLATION* + + + collation_name + + FOR + + + character_set_specification_list + + + + +
             ::= 'COLLATION*' collation_name ( 'FOR' character_set_specification_list )?
    +
    + referenced by: + + module_collations + + character_set_specification_list: + + + + + + + + character_set_specification + + , + + + + + + + + referenced by: + + module_collation_specification + set_session_collation_statement + + module_contents: + + + + + + + + declare_cursor + + + dynamic_declare_cursor + + + externally_invoked_procedure + + + + +
             ::= declare_cursor
    +
               | dynamic_declare_cursor
    +
               | externally_invoked_procedure
    +
    + referenced by: + + SQL_client_module_definition + + module_name_clause: + + + + + + + + MODULE + + + SQL_client_module_name + + + module_character_set_specification + + + + + + + referenced by: + + SQL_client_module_definition + + module_character_set_specification: + + + + + + + + NAMES* + + + ARE + + + character_set_specification + + + + +
             ::= 'NAMES*' 'ARE' character_set_specification
    +
    + referenced by: + + module_name_clause + + externally_invoked_procedure: + + + + + + + + PROCEDURE + + + procedure_name + + + host_parameter_declaration_list + + ; + + + SQL_procedure_statement + + ; + + + + + + + + referenced by: + + module_contents + + host_parameter_declaration_list: + + + + + + + + ( + + + host_parameter_declaration + + , + + + host_parameter_declaration + + ) + + + + + +
             ::= '(' host_parameter_declaration ( ',' host_parameter_declaration )? ')'
    +
    + referenced by: + + externally_invoked_procedure + + host_parameter_declaration: + + + + + + + + host_parameter_name + + + host_parameter_data_type + + SQLSTATE + + + + + + +
               | 'SQLSTATE'
    +
    + referenced by: + + host_parameter_declaration_list + + host_parameter_data_type: + + + + + + + + data_type + + + locator_indication + + + + +
             ::= data_type locator_indication?
    +
    + referenced by: + + host_parameter_declaration + + SQL_procedure_statement: + + + + + + + + SQL_executable_statement + + + + +
             ::= SQL_executable_statement
    +
    + referenced by: + + SQL_routine_body + externally_invoked_procedure + statement_or_declaration + triggered_SQL_statement + + SQL_executable_statement: + + + + + + + + SQL_schema_statement + + + SQL_data_statement + + + SQL_control_statement + + + SQL_transaction_statement + + + SQL_connection_statement + + + SQL_session_statement + + + SQL_diagnostics_statement + + + SQL_dynamic_statement + + + + +
             ::= SQL_schema_statement
    +
               | SQL_data_statement
    +
               | SQL_control_statement
    +
               | SQL_transaction_statement
    +
               | SQL_connection_statement
    +
               | SQL_session_statement
    +
               | SQL_diagnostics_statement
    +
               | SQL_dynamic_statement
    +
    + referenced by: + + SQL_procedure_statement + + SQL_schema_statement: + + + + + + + + SQL_schema_definition_statement + + + SQL_schema_manipulation_statement + + + + +
             ::= SQL_schema_definition_statement
    +
               | SQL_schema_manipulation_statement
    +
    + referenced by: + + SQL_executable_statement + directly_executable_statement + preparable_SQL_schema_statement + + SQL_schema_definition_statement: + + + + + + + + schema_definition + + + table_definition + + + view_definition + + + SQL_invoked_routine + + + grant_statement + + + role_definition + + + domain_definition + + + character_set_definition + + + collation_definition + + + transliteration_definition + + + assertion_definition + + + trigger_definition + + + user_defined_type_definition + + + user_defined_cast_definition + + + user_defined_ordering_definition + + + transform_definition + + + sequence_generator_definition + + + + +
             ::= schema_definition
    +
               | table_definition
    +
               | view_definition
    +
               | SQL_invoked_routine
    +
               | grant_statement
    +
               | role_definition
    +
               | domain_definition
    +
               | character_set_definition
    +
               | collation_definition
    +
               | transliteration_definition
    +
               | assertion_definition
    +
               | trigger_definition
    +
               | user_defined_type_definition
    +
               | user_defined_cast_definition
    +
               | user_defined_ordering_definition
    +
               | transform_definition
    +
               | sequence_generator_definition
    +
    + referenced by: + + SQL_schema_statement + + SQL_schema_manipulation_statement: + + + + + + + + drop_schema_statement + + + alter_table_statement + + + drop_table_statement + + + drop_view_statement + + + alter_routine_statement + + + drop_routine_statement + + + drop_user_defined_cast_statement + + + revoke_statement + + + drop_role_statement + + + alter_domain_statement + + + drop_domain_statement + + + drop_character_set_statement + + + drop_collation_statement + + + drop_transliteration_statement + + + drop_assertion_statement + + + drop_trigger_statement + + + alter_type_statement + + + drop_data_type_statement + + + drop_user_defined_ordering_statement + + + alter_transform_statement + + + drop_transform_statement + + + alter_sequence_generator_statement + + + drop_sequence_generator_statement + + + + +
             ::= drop_schema_statement
    +
               | alter_table_statement
    +
               | drop_table_statement
    +
               | drop_view_statement
    +
               | alter_routine_statement
    +
               | drop_routine_statement
    +
               | drop_user_defined_cast_statement
    +
               | revoke_statement
    +
               | drop_role_statement
    +
               | alter_domain_statement
    +
               | drop_domain_statement
    +
               | drop_character_set_statement
    +
               | drop_collation_statement
    +
               | drop_transliteration_statement
    +
               | drop_assertion_statement
    +
               | drop_trigger_statement
    +
               | alter_type_statement
    +
               | drop_data_type_statement
    +
               | drop_user_defined_ordering_statement
    +
               | alter_transform_statement
    +
               | drop_transform_statement
    +
               | alter_sequence_generator_statement
    +
               | drop_sequence_generator_statement
    +
    + referenced by: + + SQL_schema_statement + + SQL_data_statement: + + + + + + + + open_statement + + + fetch_statement + + + close_statement + + + select_statement__single_row + + + free_locator_statement + + + hold_locator_statement + + + SQL_data_change_statement + + + + +
             ::= open_statement
    +
               | fetch_statement
    +
               | close_statement
    +
               | select_statement__single_row
    +
               | free_locator_statement
    +
               | hold_locator_statement
    +
               | SQL_data_change_statement
    +
    + referenced by: + + SQL_executable_statement + + SQL_data_change_statement: + + + + + + + + delete_statement__positioned + + + delete_statement__searched + + + insert_statement + + + update_statement__positioned + + + update_statement__searched + + + truncate_table_statement + + + merge_statement + + + + +
             ::= delete_statement__positioned
    +
               | delete_statement__searched
    +
               | insert_statement
    +
               | update_statement__positioned
    +
               | update_statement__searched
    +
               | truncate_table_statement
    +
               | merge_statement
    +
    + referenced by: + + SQL_data_statement + + SQL_control_statement: + + + + + + + + call_statement + + + return_statement + + + + +
             ::= call_statement
    +
               | return_statement
    +
    + referenced by: + + SQL_executable_statement + preparable_SQL_control_statement + + SQL_transaction_statement: + + + + + + + + start_transaction_statement + + + set_transaction_statement + + + set_constraints_mode_statement + + + savepoint_statement + + + release_savepoint_statement + + + commit_statement + + + rollback_statement + + + + +
             ::= start_transaction_statement
    +
               | set_transaction_statement
    +
               | set_constraints_mode_statement
    +
               | savepoint_statement
    +
               | release_savepoint_statement
    +
               | commit_statement
    +
               | rollback_statement
    +
    + referenced by: + + SQL_executable_statement + directly_executable_statement + preparable_SQL_transaction_statement + + SQL_connection_statement: + + + + + + + + connect_statement + + + set_connection_statement + + + disconnect_statement + + + + +
             ::= connect_statement
    +
               | set_connection_statement
    +
               | disconnect_statement
    +
    + referenced by: + + SQL_executable_statement + directly_executable_statement + + SQL_session_statement: + + + + + + + + set_session_user_identifier_statement + + + set_role_statement + + + set_local_time_zone_statement + + + set_session_characteristics_statement + + + set_catalog_statement + + + set_schema_statement + + + set_names_statement + + + set_path_statement + + + set_transform_group_statement + + + set_session_collation_statement + + + + + +
               | set_role_statement
    +
               | set_local_time_zone_statement
    + +
               | set_catalog_statement
    +
               | set_schema_statement
    +
               | set_names_statement
    +
               | set_path_statement
    +
               | set_transform_group_statement
    +
               | set_session_collation_statement
    +
    + referenced by: + + SQL_executable_statement + directly_executable_statement + preparable_SQL_session_statement + + SQL_diagnostics_statement: + + + + + + + + get_diagnostics_statement + + + + +
             ::= get_diagnostics_statement
    +
    + referenced by: + + SQL_executable_statement + + SQL_dynamic_statement: + + + + + + + + SQL_descriptor_statement + + + prepare_statement + + + deallocate_prepared_statement + + + describe_statement + + + execute_statement + + + execute_immediate_statement + + + SQL_dynamic_data_statement + + + copy_descriptor_statement + + + pipe_row_statement + + + + +
             ::= SQL_descriptor_statement
    +
               | prepare_statement
    +
               | deallocate_prepared_statement
    +
               | describe_statement
    +
               | execute_statement
    +
               | execute_immediate_statement
    +
               | SQL_dynamic_data_statement
    +
               | copy_descriptor_statement
    +
               | pipe_row_statement
    +
    + referenced by: + + SQL_executable_statement + + SQL_dynamic_data_statement: + + + + + + + + allocate_extended_dynamic_cursor_statement + + + allocate_received_cursor_statement + + + dynamic_open_statement + + + dynamic_fetch_statement + + + dynamic_close_statement + + + dynamic_delete_statement__positioned + + + dynamic_update_statement__positioned + + + + + +
               | allocate_received_cursor_statement
    +
               | dynamic_open_statement
    +
               | dynamic_fetch_statement
    +
               | dynamic_close_statement
    +
               | dynamic_delete_statement__positioned
    +
               | dynamic_update_statement__positioned
    +
    + referenced by: + + SQL_dynamic_statement + + SQL_descriptor_statement: + + + + + + + + allocate_descriptor_statement + + + deallocate_descriptor_statement + + + set_descriptor_statement + + + get_descriptor_statement + + + + +
             ::= allocate_descriptor_statement
    +
               | deallocate_descriptor_statement
    +
               | set_descriptor_statement
    +
               | get_descriptor_statement
    +
    + referenced by: + + SQL_dynamic_statement + + declare_cursor: + + + + + + + + DECLARE + + + cursor_name + + + cursor_properties + + FOR + + + cursor_specification + + + + +
             ::= 'DECLARE' cursor_name cursor_properties 'FOR' cursor_specification
    +
    + referenced by: + + module_contents + statement_or_declaration + + cursor_properties: + + + + + + + + cursor_sensitivity + + + cursor_scrollability + + CURSOR + + + cursor_holdability + + + cursor_returnability + + + + + + + referenced by: + + allocate_extended_dynamic_cursor_statement + declare_cursor + dynamic_declare_cursor + + cursor_sensitivity: + + + + + + + + SENSITIVE + + + INSENSITIVE + + + ASENSITIVE + + + + + +
             ::= 'SENSITIVE'
    +
               | 'INSENSITIVE'
    +
               | 'ASENSITIVE'
    +
    + referenced by: + + cursor_attribute + cursor_properties + + cursor_scrollability: + + + + + + + + NO + + + SCROLL + + + + + +
             ::= 'NO'? 'SCROLL'
    +
    + referenced by: + + cursor_attribute + cursor_properties + + cursor_holdability: + + + + + + + + WITH + + + WITHOUT + + + HOLD + + + + + +
             ::= ( 'WITH' | 'WITHOUT' ) 'HOLD'
    +
    + referenced by: + + cursor_attribute + cursor_properties + + cursor_returnability: + + + + + + + + WITH + + + WITHOUT + + + RETURN + + + + + +
             ::= ( 'WITH' | 'WITHOUT' ) 'RETURN'
    +
    + referenced by: + + cursor_attribute + cursor_properties + + cursor_specification: + + + + + + + + query_expression + + + updatability_clause + + + + +
             ::= query_expression updatability_clause?
    +
    + referenced by: + + declare_cursor + direct_select_statement__multiple_rows + dynamic_select_statement + + updatability_clause: + + + + + + + + FOR + + + READ* + + + ONLY + + + UPDATE + + + OF + + + column_name_list + + + + +
             ::= 'FOR' ( 'READ*' 'ONLY' | 'UPDATE' ( 'OF' column_name_list )? )
    +
    + referenced by: + + cursor_specification + + open_statement: + + + + + + + + OPEN + + + cursor_name + + + + +
             ::= 'OPEN' cursor_name
    +
    + referenced by: + + SQL_data_statement + + fetch_statement: + + + + + + + + FETCH + + + fetch_orientation + + FROM + + + cursor_name + + INTO + + + fetch_target_list + + + + +
             ::= 'FETCH' ( fetch_orientation? 'FROM' )? cursor_name 'INTO' fetch_target_list
    +
    + referenced by: + + SQL_data_statement + + fetch_orientation: + + + + + + + + NEXT* + + + PRIOR* + + + FIRST* + + + LAST* + + + ABSOLUTE* + + + RELATIVE* + + + simple_value_specification + + + + +
             ::= 'NEXT*'
    +
               | 'PRIOR*'
    +
               | 'FIRST*'
    +
               | 'LAST*'
    +
               | ( 'ABSOLUTE*' | 'RELATIVE*' ) simple_value_specification
    +
    + referenced by: + + dynamic_fetch_statement + fetch_statement + + fetch_target_list: + + + + + + + + target_specification + + , + + + target_specification + + + + +
             ::= target_specification ( ',' target_specification )?
    +
    + referenced by: + + fetch_statement + + close_statement: + + + + + + + + CLOSE + + + cursor_name + + + + +
             ::= 'CLOSE' cursor_name
    +
    + referenced by: + + SQL_data_statement + + select_statement__single_row: + + + + + + + + SELECT + + + set_quantifier + + + select_list + + INTO + + + select_target_list + + + table_expression + + + + +
             ::= 'SELECT' set_quantifier? select_list 'INTO' select_target_list table_expression
    +
    + referenced by: + + SQL_data_statement + + select_target_list: + + + + + + + + target_specification + + , + + + + + +
             ::= target_specification ( ',' target_specification )*
    +
    + referenced by: + + select_statement__single_row + + delete_statement__positioned: + + + + + + + + DELETE + + + FROM + + + target_table + + AS + + + correlation_name + + WHERE + + + CURRENT + + + OF + + + cursor_name + + + + +
             ::= 'DELETE' 'FROM' target_table ( 'AS'? correlation_name )? 'WHERE' 'CURRENT' 'OF' cursor_name
    +
    + referenced by: + + SQL_data_change_statement + + target_table: + + + + + + + + table_name + + ONLY + + + ( + + + table_name + + ) + + + + + +
             ::= table_name
    +
               | 'ONLY' '(' table_name ')'
    +
    + referenced by: + + delete_statement__positioned + delete_statement__searched + dynamic_delete_statement__positioned + dynamic_update_statement__positioned + merge_statement + preparable_dynamic_delete_statement__positioned + preparable_dynamic_update_statement__positioned + truncate_table_statement + update_statement__positioned + update_statement__searched + + delete_statement__searched: + + + + + + + + DELETE + + + FROM + + + target_table + + FOR + + + PORTION + + + OF + + + application_time_period_name + + FROM + + + point_in_time_1 + + TO + + + point_in_time_2 + + AS + + + correlation_name + + WHERE + + + search_condition + + + + +
             ::= 'DELETE' 'FROM' target_table ( 'FOR' 'PORTION' 'OF' application_time_period_name 'FROM' point_in_time_1 'TO' point_in_time_2 )? ( 'AS'? correlation_name )? ( 'WHERE' search_condition )?
    +
    + referenced by: + + SQL_data_change_statement + data_change_statement + direct_SQL_data_statement + preparable_SQL_data_statement + + truncate_table_statement: + + + + + + + + TRUNCATE + + + TABLE + + + target_table + + + identity_column_restart_option + + + + +
             ::= 'TRUNCATE' 'TABLE' target_table identity_column_restart_option?
    +
    + referenced by: + + SQL_data_change_statement + direct_SQL_data_statement + preparable_SQL_data_statement + + identity_column_restart_option: + + + + + + + + CONTINUE* + + + RESTART* + + + IDENTITY + + + + + +
             ::= ( 'CONTINUE*' | 'RESTART*' ) 'IDENTITY'
    +
    + referenced by: + + truncate_table_statement + + insert_statement: + + + + + + + + INSERT + + + INTO + + + insertion_target + + + insert_columns_and_source + + + + +
             ::= 'INSERT' 'INTO' insertion_target insert_columns_and_source
    +
    + referenced by: + + SQL_data_change_statement + data_change_statement + direct_SQL_data_statement + preparable_SQL_data_statement + + insertion_target: + + + + + + + + table_name + + + + +
             ::= table_name
    +
    + referenced by: + + insert_statement + + insert_columns_and_source: + + + + + + + + from_subquery + + + from_constructor + + + from_default + + + + +
             ::= from_subquery
    +
               | from_constructor
    +
               | from_default
    +
    + referenced by: + + insert_statement + + from_subquery: + + + + + + + + ( + + + insert_column_list + + ) + + + override_clause + + + query_expression + + + + +
             ::= ( '(' insert_column_list ')' )? override_clause? query_expression
    +
    + referenced by: + + insert_columns_and_source + + from_constructor: + + + + + + + + ( + + + insert_column_list + + ) + + + override_clause + + + contextually_typed_table_value_constructor + + + + + + + referenced by: + + insert_columns_and_source + + override_clause: + + + + + + + + OVERRIDING* + + + USER + + + SYSTEM + + + VALUE + + + + + +
             ::= 'OVERRIDING*' ( 'USER' | 'SYSTEM' ) 'VALUE'
    +
    + referenced by: + + from_constructor + from_subquery + merge_insert_specification + + from_default: + + + + + + + + DEFAULT + + + VALUES + + + + + +
             ::= 'DEFAULT' 'VALUES'
    +
    + referenced by: + + insert_columns_and_source + + insert_column_list: + + + + + + + + column_name_list + + + + +
             ::= column_name_list
    +
    + referenced by: + + from_constructor + from_subquery + merge_insert_specification + + merge_statement: + + + + + + + + MERGE + + + INTO + + + target_table + + AS + + + merge_correlation_name + + USING + + + table_reference + + ON + + + search_condition + + + merge_operation_specification + + + + + + + referenced by: + + SQL_data_change_statement + data_change_statement + direct_SQL_data_statement + preparable_SQL_data_statement + + merge_correlation_name: + + + + + + + + correlation_name + + + + +
             ::= correlation_name
    +
    + referenced by: + + merge_statement + + merge_operation_specification: + + + + + + + + merge_when_clause + + + + +
             ::= merge_when_clause+
    +
    + referenced by: + + merge_statement + + merge_when_clause: + + + + + + + + merge_when_matched_clause + + + merge_when_not_matched_clause + + + + +
             ::= merge_when_matched_clause
    +
               | merge_when_not_matched_clause
    +
    + referenced by: + + merge_operation_specification + + merge_when_matched_clause: + + + + + + + + WHEN + + + MATCHED* + + + AND + + + search_condition + + THEN + + + merge_update_or_delete_specification + + + + +
             ::= 'WHEN' 'MATCHED*' ( 'AND' search_condition )? 'THEN' merge_update_or_delete_specification
    +
    + referenced by: + + merge_when_clause + + merge_update_or_delete_specification: + + + + + + + + merge_update_specification + + DELETE + + + + + +
             ::= merge_update_specification
    +
               | 'DELETE'
    +
    + referenced by: + + merge_when_matched_clause + + merge_when_not_matched_clause: + + + + + + + + WHEN + + + NOT + + + MATCHED* + + + AND + + + search_condition + + THEN + + + merge_insert_specification + + + + +
             ::= 'WHEN' 'NOT' 'MATCHED*' ( 'AND' search_condition )? 'THEN' merge_insert_specification
    +
    + referenced by: + + merge_when_clause + + merge_update_specification: + + + + + + + + UPDATE + + + SET + + + set_clause_list + + + + +
             ::= 'UPDATE' 'SET' set_clause_list
    +
    + referenced by: + + merge_update_or_delete_specification + + merge_insert_specification: + + + + + + + + INSERT + + + ( + + + insert_column_list + + ) + + + override_clause + + VALUES + + + merge_insert_value_list + + + + +
             ::= 'INSERT' ( '(' insert_column_list ')' )? override_clause? 'VALUES' merge_insert_value_list
    +
    + referenced by: + + merge_when_not_matched_clause + + merge_insert_value_list: + + + + + + + + ( + + + merge_insert_value_element + + , + + + ) + + + + + +
             ::= '(' merge_insert_value_element ( ',' merge_insert_value_element )* ')'
    +
    + referenced by: + + merge_insert_specification + + merge_insert_value_element: + + + + + + + + value_expression + + + contextually_typed_value_specification + + + + +
             ::= value_expression
    +
    +
    + referenced by: + + merge_insert_value_list + + update_statement__positioned: + + + + + + + + UPDATE + + + target_table + + AS + + + correlation_name + + SET + + + set_clause_list + + WHERE + + + CURRENT + + + OF + + + cursor_name + + + + +
             ::= 'UPDATE' target_table ( 'AS'? correlation_name )? 'SET' set_clause_list 'WHERE' 'CURRENT' 'OF' cursor_name
    +
    + referenced by: + + SQL_data_change_statement + + update_statement__searched: + + + + + + + + UPDATE + + + target_table + + FOR + + + PORTION + + + OF + + + application_time_period_name + + FROM + + + point_in_time_1 + + TO + + + point_in_time_2 + + AS + + + correlation_name + + SET + + + set_clause_list + + WHERE + + + search_condition + + + + +
             ::= 'UPDATE' target_table ( 'FOR' 'PORTION' 'OF' application_time_period_name 'FROM' point_in_time_1 'TO' point_in_time_2 )? ( 'AS'? correlation_name )? 'SET' set_clause_list ( 'WHERE' search_condition )?
    +
    + referenced by: + + SQL_data_change_statement + data_change_statement + direct_SQL_data_statement + preparable_SQL_data_statement + + set_clause_list: + + + + + + + + set_clause + + , + + + + + +
             ::= set_clause ( ',' set_clause )*
    +
    + referenced by: + + dynamic_update_statement__positioned + merge_update_specification + preparable_dynamic_update_statement__positioned + update_statement__positioned + update_statement__searched + + set_clause: + + + + + + + + multiple_column_assignment + + + set_target + + = + + + update_source + + + + +
             ::= multiple_column_assignment
    +
               | set_target '=' update_source
    +
    + referenced by: + + set_clause_list + + set_target: + + + + + + + + update_target + + + mutated_set_clause + + + + +
             ::= update_target
    +
               | mutated_set_clause
    +
    + referenced by: + + set_clause + set_target_list + + multiple_column_assignment: + + + + + + + + set_target_list + + = + + + assigned_row + + + + +
             ::= set_target_list '=' assigned_row
    +
    + referenced by: + + set_clause + + set_target_list: + + + + + + + + ( + + + set_target + + , + + + ) + + + + + +
             ::= '(' set_target ( ',' set_target )* ')'
    +
    + referenced by: + + multiple_column_assignment + + assigned_row: + + + + + + + + contextually_typed_row_value_expression + + + + + + + referenced by: + + multiple_column_assignment + + update_target: + + + + + + + + object_column + + + left_bracket_or_trigraph + + + simple_value_specification + + + right_bracket_or_trigraph + + + + + + + referenced by: + + set_target + + object_column: + + + + + + + + column_name + + + + +
             ::= column_name
    +
    + referenced by: + + mutated_target + update_target + + mutated_set_clause: + + + + + + + + mutated_target + + . + + + method_name + + + + +
             ::= mutated_target '.' method_name
    +
    + referenced by: + + mutated_target + set_target + + mutated_target: + + + + + + + + object_column + + + mutated_set_clause + + + + +
             ::= object_column
    +
               | mutated_set_clause
    +
    + referenced by: + + mutated_set_clause + + update_source: + + + + + + + + value_expression + + + contextually_typed_value_specification + + + + +
             ::= value_expression
    +
    +
    + referenced by: + + set_clause + + temporary_table_declaration: + + + + + + + + DECLARE + + + LOCAL + + + TEMPORARY* + + + TABLE + + + table_name + + + table_element_list + + ON + + + COMMIT + + + table_commit_action + + ROWS + + + + + +
             ::= 'DECLARE' 'LOCAL' 'TEMPORARY*' 'TABLE' table_name table_element_list ( 'ON' 'COMMIT' table_commit_action 'ROWS' )?
    +
    + referenced by: + + SQL_client_module_definition + direct_SQL_data_statement + statement_or_declaration + + free_locator_statement: + + + + + + + + FREE + + + LOCATOR* + + + locator_reference + + , + + + + + +
             ::= 'FREE' 'LOCATOR*' locator_reference ( ',' locator_reference )*
    +
    + referenced by: + + SQL_data_statement + preparable_SQL_data_statement + + locator_reference: + + + + + + + + host_parameter_name + + + embedded_variable_name + + ? + + + + + +
             ::= host_parameter_name
    +
               | embedded_variable_name
    +
               | '?'
    +
    + referenced by: + + free_locator_statement + hold_locator_statement + + hold_locator_statement: + + + + + + + + HOLD + + + LOCATOR* + + + locator_reference + + , + + + + + +
             ::= 'HOLD' 'LOCATOR*' locator_reference ( ',' locator_reference )*
    +
    + referenced by: + + SQL_data_statement + preparable_SQL_data_statement + + call_statement: + + + + + + + + CALL + + + routine_invocation + + + + +
             ::= 'CALL' routine_invocation
    +
    + referenced by: + + SQL_control_statement + + return_statement: + + + + + + + + RETURN + + + return_value + + + + +
             ::= 'RETURN' return_value
    +
    + referenced by: + + SQL_control_statement + + return_value: + + + + + + + + value_expression + + NULL + + + + + +
             ::= value_expression
    +
               | 'NULL'
    +
    + referenced by: + + return_statement + + start_transaction_statement: + + + + + + + + START + + + TRANSACTION* + + + transaction_characteristics + + + + +
             ::= 'START' 'TRANSACTION*' transaction_characteristics?
    +
    + referenced by: + + SQL_transaction_statement + + set_transaction_statement: + + + + + + + + SET + + + LOCAL + + + TRANSACTION* + + + transaction_characteristics + + + + +
             ::= 'SET' 'LOCAL'? 'TRANSACTION*' transaction_characteristics
    +
    + referenced by: + + SQL_transaction_statement + + transaction_characteristics: + + + + + + + + transaction_mode + + , + + + + + +
             ::= ( transaction_mode ( ',' transaction_mode )* )?
    +
    + referenced by: + + set_transaction_statement + start_transaction_statement + + transaction_mode: + + + + + + + + isolation_level + + + transaction_access_mode + + + diagnostics_size + + + + +
             ::= isolation_level
    +
               | transaction_access_mode
    +
               | diagnostics_size
    +
    + referenced by: + + session_transaction_characteristics + transaction_characteristics + + transaction_access_mode: + + + + + + + + READ* + + + ONLY + + + WRITE* + + + + + +
             ::= 'READ*' ( 'ONLY' | 'WRITE*' )
    +
    + referenced by: + + transaction_mode + + isolation_level: + + + + + + + + ISOLATION* + + + LEVEL* + + + level_of_isolation + + + + +
             ::= 'ISOLATION*' 'LEVEL*' level_of_isolation
    +
    + referenced by: + + transaction_mode + + level_of_isolation: + + + + + + + + READ* + + + UNCOMMITTED* + + + COMMITTED* + + + REPEATABLE* + + + READ* + + + SERIALIZABLE* + + + + + +
             ::= 'READ*' ( 'UNCOMMITTED*' | 'COMMITTED*' )
    +
               | 'REPEATABLE*' 'READ*'
    +
               | 'SERIALIZABLE*'
    +
    + referenced by: + + isolation_level + + diagnostics_size: + + + + + + + + DIAGNOSTICS* + + + SIZE* + + + number_of_conditions + + + + +
             ::= 'DIAGNOSTICS*' 'SIZE*' number_of_conditions
    +
    + referenced by: + + transaction_mode + + number_of_conditions: + + + + + + + + simple_value_specification + + + + +
             ::= simple_value_specification
    +
    + referenced by: + + diagnostics_size + + set_constraints_mode_statement: + + + + + + + + SET + + + CONSTRAINTS* + + + constraint_name_list + + DEFERRED* + + + IMMEDIATE* + + + + + +
             ::= 'SET' 'CONSTRAINTS*' constraint_name_list ( 'DEFERRED*' | 'IMMEDIATE*' )
    +
    + referenced by: + + SQL_transaction_statement + + constraint_name_list: + + + + + + + + ALL + + + constraint_name + + , + + + + + +
             ::= 'ALL'
    +
               | constraint_name ( ',' constraint_name )*
    +
    + referenced by: + + set_constraints_mode_statement + + savepoint_statement: + + + + + + + + SAVEPOINT + + + savepoint_specifier + + + + +
             ::= 'SAVEPOINT' savepoint_specifier
    +
    + referenced by: + + SQL_transaction_statement + + savepoint_specifier: + + + + + + + + savepoint_name + + + + +
             ::= savepoint_name
    +
    + referenced by: + + release_savepoint_statement + savepoint_clause + savepoint_statement + + release_savepoint_statement: + + + + + + + + RELEASE + + + SAVEPOINT + + + savepoint_specifier + + + + +
             ::= 'RELEASE' 'SAVEPOINT' savepoint_specifier
    +
    + referenced by: + + SQL_transaction_statement + + commit_statement: + + + + + + + + COMMIT + + + WORK* + + + AND + + + NO + + + CHAIN* + + + + + +
             ::= 'COMMIT' 'WORK*'? ( 'AND' 'NO'? 'CHAIN*' )?
    +
    + referenced by: + + SQL_transaction_statement + + rollback_statement: + + + + + + + + ROLLBACK + + + WORK* + + + AND + + + NO + + + CHAIN* + + + savepoint_clause + + + + +
             ::= 'ROLLBACK' 'WORK*'? ( 'AND' 'NO'? 'CHAIN*' )? savepoint_clause?
    +
    + referenced by: + + SQL_transaction_statement + + savepoint_clause: + + + + + + + + TO + + + SAVEPOINT + + + savepoint_specifier + + + + +
             ::= 'TO' 'SAVEPOINT' savepoint_specifier
    +
    + referenced by: + + rollback_statement + + connect_statement: + + + + + + + + CONNECT + + + TO + + + connection_target + + + + +
             ::= 'CONNECT' 'TO' connection_target
    +
    + referenced by: + + SQL_connection_statement + + connection_target: + + + + + + + + SQL_server_name + + AS + + + connection_name + + USER + + + connection_user_name + + DEFAULT + + + + + +
             ::= SQL_server_name ( 'AS' connection_name )? ( 'USER' connection_user_name )?
    +
               | 'DEFAULT'
    +
    + referenced by: + + connect_statement + + set_connection_statement: + + + + + + + + SET + + + CONNECTION* + + + connection_object + + + + +
             ::= 'SET' 'CONNECTION*' connection_object
    +
    + referenced by: + + SQL_connection_statement + + connection_object: + + + + + + + + DEFAULT + + + connection_name + + + + +
             ::= 'DEFAULT'
    +
               | connection_name
    +
    + referenced by: + + disconnect_object + set_connection_statement + + disconnect_statement: + + + + + + + + DISCONNECT + + + disconnect_object + + + + +
             ::= 'DISCONNECT' disconnect_object
    +
    + referenced by: + + SQL_connection_statement + + disconnect_object: + + + + + + + + connection_object + + ALL + + + CURRENT + + + + + +
             ::= connection_object
    +
               | 'ALL'
    +
               | 'CURRENT'
    +
    + referenced by: + + disconnect_statement + + set_session_characteristics_statement: + + + + + + + + SET + + + SESSION* + + + CHARACTERISTICS* + + + AS + + + session_characteristic_list + + + + +
             ::= 'SET' 'SESSION*' 'CHARACTERISTICS*' 'AS' session_characteristic_list
    +
    + referenced by: + + SQL_session_statement + + session_characteristic_list: + + + + + + + + session_characteristic + + , + + + + + +
             ::= session_characteristic ( ',' session_characteristic )*
    +
    + referenced by: + + set_session_characteristics_statement + + session_characteristic: + + + + + + + + session_transaction_characteristics + + + + + + + referenced by: + + session_characteristic_list + + session_transaction_characteristics: + + + + + + + + TRANSACTION* + + + transaction_mode + + , + + + + + +
             ::= 'TRANSACTION*' transaction_mode ( ',' transaction_mode )*
    +
    + referenced by: + + session_characteristic + + set_session_user_identifier_statement: + + + + + + + + SET + + + SESSION* + + + AUTHORIZATION + + + value_specification + + + + +
             ::= 'SET' 'SESSION*' 'AUTHORIZATION' value_specification
    +
    + referenced by: + + SQL_session_statement + + set_role_statement: + + + + + + + + SET + + + ROLE* + + + role_specification + + + + +
             ::= 'SET' 'ROLE*' role_specification
    +
    + referenced by: + + SQL_session_statement + + role_specification: + + + + + + + + value_specification + + NONE + + + + + +
             ::= value_specification
    +
               | 'NONE'
    +
    + referenced by: + + set_role_statement + + set_local_time_zone_statement: + + + + + + + + SET + + + TIME + + + ZONE* + + + set_time_zone_value + + + + +
             ::= 'SET' 'TIME' 'ZONE*' set_time_zone_value
    +
    + referenced by: + + SQL_session_statement + + set_time_zone_value: + + + + + + + + interval_value_expression + + LOCAL + + + + + +
             ::= interval_value_expression
    +
               | 'LOCAL'
    +
    + referenced by: + + set_local_time_zone_statement + + set_catalog_statement: + + + + + + + + SET + + + catalog_name_characteristic + + + + +
             ::= 'SET' catalog_name_characteristic
    +
    + referenced by: + + SQL_session_statement + + catalog_name_characteristic: + + + + + + + + CATALOG* + + + value_specification + + + + +
             ::= 'CATALOG*' value_specification
    +
    + referenced by: + + set_catalog_statement + + set_schema_statement: + + + + + + + + SET + + + schema_name_characteristic + + + + +
             ::= 'SET' schema_name_characteristic
    +
    + referenced by: + + SQL_session_statement + + schema_name_characteristic: + + + + + + + + SCHEMA* + + + value_specification + + + + +
             ::= 'SCHEMA*' value_specification
    +
    + referenced by: + + set_schema_statement + + set_names_statement: + + + + + + + + SET + + + character_set_name_characteristic + + + + +
             ::= 'SET' character_set_name_characteristic
    +
    + referenced by: + + SQL_session_statement + + character_set_name_characteristic: + + + + + + + + NAMES* + + + value_specification + + + + +
             ::= 'NAMES*' value_specification
    +
    + referenced by: + + set_names_statement + + set_path_statement: + + + + + + + + SET + + + SQL_path_characteristic + + + + +
             ::= 'SET' SQL_path_characteristic
    +
    + referenced by: + + SQL_session_statement + + SQL_path_characteristic: + + + + + + + + PATH* + + + value_specification + + + + +
             ::= 'PATH*' value_specification
    +
    + referenced by: + + set_path_statement + + set_transform_group_statement: + + + + + + + + SET + + + transform_group_characteristic + + + + +
             ::= 'SET' transform_group_characteristic
    +
    + referenced by: + + SQL_session_statement + + transform_group_characteristic: + + + + + + + + DEFAULT + + + TRANSFORM* + + + GROUP + + + TRANSFORM* + + + GROUP + + + FOR + + + TYPE* + + + path_resolved_user_defined_type_name + + + value_specification + + + + +
             ::= ( 'DEFAULT' 'TRANSFORM*' 'GROUP' | 'TRANSFORM*' 'GROUP' 'FOR' 'TYPE*' + path_resolved_user_defined_type_name ) value_specification
    +
    + referenced by: + + set_transform_group_statement + + set_session_collation_statement: + + + + + + + + SET + + + COLLATION* + + + collation_specification + + NO + + + COLLATION* + + + FOR + + + character_set_specification_list + + + + +
             ::= 'SET' ( 'COLLATION*' collation_specification | 'NO' 'COLLATION*' ) ( 'FOR' character_set_specification_list )?
    +
    + referenced by: + + SQL_session_statement + + collation_specification: + + + + + + + + value_specification + + + + +
             ::= value_specification
    +
    + referenced by: + + set_session_collation_statement + + allocate_descriptor_statement: + + + + + + + + ALLOCATE + + + SQL + + + DESCRIPTOR* + + + conventional_descriptor_name + + WITH + + + MAX + + + occurrences + + + + +
             ::= 'ALLOCATE' 'SQL'? 'DESCRIPTOR*' conventional_descriptor_name ( 'WITH' 'MAX' occurrences )?
    +
    + referenced by: + + SQL_descriptor_statement + + occurrences: + + + + + + + + simple_value_specification + + + + +
             ::= simple_value_specification
    +
    + referenced by: + + allocate_descriptor_statement + + deallocate_descriptor_statement: + + + + + + + + DEALLOCATE + + + SQL + + + DESCRIPTOR* + + + conventional_descriptor_name + + + + +
             ::= 'DEALLOCATE' 'SQL'? 'DESCRIPTOR*' conventional_descriptor_name
    +
    + referenced by: + + SQL_descriptor_statement + + get_descriptor_statement: + + + + + + + + GET + + + SQL + + + DESCRIPTOR* + + + descriptor_name + + + get_descriptor_information + + + + +
             ::= 'GET' 'SQL'? 'DESCRIPTOR*' descriptor_name get_descriptor_information
    +
    + referenced by: + + SQL_descriptor_statement + + get_descriptor_information: + + + + + + + + get_header_information + + , + + + VALUE + + + item_number + + + get_item_information + + , + + + + + +
             ::= get_header_information ( ',' get_header_information )*
    +
               | 'VALUE' item_number get_item_information ( ',' get_item_information )*
    +
    + referenced by: + + get_descriptor_statement + + get_header_information: + + + + + + + + simple_target_specification_1 + + = + + + header_item_name + + + + + + + referenced by: + + get_descriptor_information + + header_item_name: + + + + + + + + COUNT + + + KEY_TYPE* + + + DYNAMIC_FUNCTION* + + + DYNAMIC_FUNCTION_CODE* + + + TOP_LEVEL_COUNT* + + + + + +
             ::= 'COUNT'
    +
               | 'KEY_TYPE*'
    +
               | 'DYNAMIC_FUNCTION*'
    +
               | 'DYNAMIC_FUNCTION_CODE*'
    +
               | 'TOP_LEVEL_COUNT*'
    +
    + referenced by: + + get_header_information + set_header_information + + get_item_information: + + + + + + + + simple_target_specification_2 + + = + + + descriptor_item_name + + + + + + + referenced by: + + get_descriptor_information + + item_number: + + + + + + + + simple_value_specification + + + + +
             ::= simple_value_specification
    +
    + referenced by: + + get_descriptor_information + set_descriptor_information + + simple_target_specification_1: + + + + + + + + simple_target_specification + + + + +
             ::= simple_target_specification
    +
    + referenced by: + + get_header_information + + simple_target_specification_2: + + + + + + + + simple_target_specification + + + + +
             ::= simple_target_specification
    +
    + referenced by: + + get_item_information + + descriptor_item_name: + + + + + + + + CARDINALITY + + + CHARACTER_SET_CATALOG* + + + CHARACTER_SET_NAME* + + + CHARACTER_SET_SCHEMA* + + + COLLATION_CATALOG* + + + COLLATION_NAME* + + + COLLATION_SCHEMA* + + + DATA* + + + DATETIME_INTERVAL_CODE* + + + DATETIME_INTERVAL_PRECISION* + + + DEGREE* + + + INDICATOR + + + KEY_MEMBER* + + + LENGTH* + + + LEVEL* + + + NAME* + + + NULLABLE* + + + NULL_ORDERING + + OCTET_LENGTH + + + PARAMETER_MODE* + + + PARAMETER_ORDINAL_POSITION* + + + PARAMETER_SPECIFIC_CATALOG* + + + PARAMETER_SPECIFIC_NAME* + + + PARAMETER_SPECIFIC_SCHEMA* + + + PRECISION + + + RETURNED_CARDINALITY* + + + RETURNED_LENGTH* + + + RETURNED_OCTET_LENGTH* + + + SCALE* + + + SCOPE_CATALOG* + + + SCOPE_NAME* + + + SCOPE_SCHEMA* + + + SORT_DIRECTION + + TYPE* + + + UNNAMED* + + + USER_DEFINED_TYPE_CATALOG* + + + USER_DEFINED_TYPE_NAME* + + + USER_DEFINED_TYPE_SCHEMA* + + + USER_DEFINED_TYPE_CODE* + + + + + +
             ::= 'CARDINALITY'
    +
               | 'CHARACTER_SET_CATALOG*'
    +
               | 'CHARACTER_SET_NAME*'
    +
               | 'CHARACTER_SET_SCHEMA*'
    +
               | 'COLLATION_CATALOG*'
    +
               | 'COLLATION_NAME*'
    +
               | 'COLLATION_SCHEMA*'
    +
               | 'DATA*'
    +
               | 'DATETIME_INTERVAL_CODE*'
    +
               | 'DATETIME_INTERVAL_PRECISION*'
    +
               | 'DEGREE*'
    +
               | 'INDICATOR'
    +
               | 'KEY_MEMBER*'
    +
               | 'LENGTH*'
    +
               | 'LEVEL*'
    +
               | 'NAME*'
    +
               | 'NULLABLE*'
    +
               | NULL_ORDERING
    +
               | 'OCTET_LENGTH'
    +
               | 'PARAMETER_MODE*'
    +
               | 'PARAMETER_ORDINAL_POSITION*'
    +
               | 'PARAMETER_SPECIFIC_CATALOG*'
    +
               | 'PARAMETER_SPECIFIC_NAME*'
    +
               | 'PARAMETER_SPECIFIC_SCHEMA*'
    +
               | 'PRECISION'
    +
               | 'RETURNED_CARDINALITY*'
    +
               | 'RETURNED_LENGTH*'
    +
               | 'RETURNED_OCTET_LENGTH*'
    +
               | 'SCALE*'
    +
               | 'SCOPE_CATALOG*'
    +
               | 'SCOPE_NAME*'
    +
               | 'SCOPE_SCHEMA*'
    +
               | SORT_DIRECTION
    +
               | 'TYPE*'
    +
               | 'UNNAMED*'
    +
               | 'USER_DEFINED_TYPE_CATALOG*'
    +
               | 'USER_DEFINED_TYPE_NAME*'
    +
               | 'USER_DEFINED_TYPE_SCHEMA*'
    +
               | 'USER_DEFINED_TYPE_CODE*'
    +
    + referenced by: + + get_item_information + set_item_information + + set_descriptor_statement: + + + + + + + + SET + + + SQL + + + DESCRIPTOR* + + + descriptor_name + + + set_descriptor_information + + + + +
             ::= 'SET' 'SQL'? 'DESCRIPTOR*' descriptor_name set_descriptor_information
    +
    + referenced by: + + SQL_descriptor_statement + + set_descriptor_information: + + + + + + + + set_header_information + + , + + + VALUE + + + item_number + + + set_item_information + + , + + + + + +
             ::= set_header_information ( ',' set_header_information )*
    +
               | 'VALUE' item_number set_item_information ( ',' set_item_information )*
    +
    + referenced by: + + set_descriptor_statement + + set_header_information: + + + + + + + + header_item_name + + = + + + simple_value_specification_1 + + + + + + + referenced by: + + set_descriptor_information + + set_item_information: + + + + + + + + descriptor_item_name + + = + + + simple_value_specification_2 + + + + + + + referenced by: + + set_descriptor_information + + simple_value_specification_1: + + + + + + + + simple_value_specification + + + + +
             ::= simple_value_specification
    +
    + referenced by: + + set_header_information + + simple_value_specification_2: + + + + + + + + simple_value_specification + + + + +
             ::= simple_value_specification
    +
    + referenced by: + + set_item_information + + copy_descriptor_statement: + + + + + + + + copy_whole_descriptor_statement + + + copy_item_descriptor_statement + + + + +
             ::= copy_whole_descriptor_statement
    +
               | copy_item_descriptor_statement
    +
    + referenced by: + + SQL_dynamic_statement + + copy_whole_descriptor_statement: + + + + + + + + COPY + + + source_descriptor_name + + TO + + + target_descriptor_name + + + + +
             ::= 'COPY' source_descriptor_name 'TO' target_descriptor_name
    +
    + referenced by: + + copy_descriptor_statement + + copy_item_descriptor_statement: + + + + + + + + COPY + + + source_descriptor_name + + VALUE + + + item_number_1 + + ( + + + copy_descriptor_options + + ) + + + TO + + + target_descriptor_name + + VALUE + + + item_number_2 + + + + +
             ::= 'COPY' source_descriptor_name 'VALUE' item_number_1 '(' copy_descriptor_options ')' 'TO' target_descriptor_name 'VALUE' item_number_2
    +
    + referenced by: + + copy_descriptor_statement + + source_descriptor_name: + + + + + + + + descriptor_name + + + + +
             ::= descriptor_name
    +
    + referenced by: + + copy_item_descriptor_statement + copy_whole_descriptor_statement + + target_descriptor_name: + + + + + + + + PTF_descriptor_name + + + + +
             ::= PTF_descriptor_name
    +
    + referenced by: + + copy_item_descriptor_statement + copy_whole_descriptor_statement + + item_number_1: + + + + + + + + simple_value_specification + + + + +
             ::= simple_value_specification
    +
    + referenced by: + + copy_item_descriptor_statement + + item_number_2: + + + + + + + + simple_value_specification + + + + +
             ::= simple_value_specification
    +
    + referenced by: + + copy_item_descriptor_statement + + copy_descriptor_options: + + + + + + + + NAME* + + + , + + + TYPE* + + + TYPE* + + + DATA* + + + + + +
             ::= 'NAME*' ( ',' 'TYPE*' )?
    +
               | 'TYPE*'
    +
               | 'DATA*'
    +
    + referenced by: + + copy_item_descriptor_statement + + prepare_statement: + + + + + + + + PREPARE + + + SQL_statement_name + + + attributes_specification + + FROM + + + SQL_statement_variable + + + + + + + referenced by: + + SQL_dynamic_statement + + attributes_specification: + + + + + + + + ATTRIBUTES* + + + attributes_variable + + + + +
             ::= 'ATTRIBUTES*' attributes_variable
    +
    + referenced by: + + prepare_statement + + attributes_variable: + + + + + + + + simple_value_specification + + + + +
             ::= simple_value_specification
    +
    + referenced by: + + attributes_specification + + SQL_statement_variable: + + + + + + + + simple_value_specification + + + + +
             ::= simple_value_specification
    +
    + referenced by: + + execute_immediate_statement + prepare_statement + + preparable_statement: + + + + + + + + preparable_SQL_data_statement + + + preparable_SQL_schema_statement + + + preparable_SQL_transaction_statement + + + preparable_SQL_control_statement + + + preparable_SQL_session_statement + + !! See the Syntax Rules. + + + + + +
             ::= preparable_SQL_data_statement
    +
               | preparable_SQL_schema_statement
    +
               | preparable_SQL_transaction_statement
    +
               | preparable_SQL_control_statement
    +
               | preparable_SQL_session_statement
    +
               | '!! See the Syntax Rules.'
    +
    + no referencespreparable_SQL_data_statement: + + + + + + + + delete_statement__searched + + + dynamic_single_row_select_statement + + + insert_statement + + + dynamic_select_statement + + + update_statement__searched + + + truncate_table_statement + + + merge_statement + + + preparable_dynamic_delete_statement__positioned + + + preparable_dynamic_update_statement__positioned + + + hold_locator_statement + + + free_locator_statement + + + + +
             ::= delete_statement__searched
    +
               | dynamic_single_row_select_statement
    +
               | insert_statement
    +
               | dynamic_select_statement
    +
               | update_statement__searched
    +
               | truncate_table_statement
    +
               | merge_statement
    + + +
               | hold_locator_statement
    +
               | free_locator_statement
    +
    + referenced by: + + preparable_statement + + preparable_SQL_schema_statement: + + + + + + + + SQL_schema_statement + + + + +
             ::= SQL_schema_statement
    +
    + referenced by: + + preparable_statement + + preparable_SQL_transaction_statement: + + + + + + + + SQL_transaction_statement + + + + +
             ::= SQL_transaction_statement
    +
    + referenced by: + + preparable_statement + + preparable_SQL_control_statement: + + + + + + + + SQL_control_statement + + + + +
             ::= SQL_control_statement
    +
    + referenced by: + + preparable_statement + + preparable_SQL_session_statement: + + + + + + + + SQL_session_statement + + + + +
             ::= SQL_session_statement
    +
    + referenced by: + + preparable_statement + + dynamic_select_statement: + + + + + + + + cursor_specification + + + + +
             ::= cursor_specification
    +
    + referenced by: + + preparable_SQL_data_statement + + cursor_attributes: + + + + + + + + cursor_attribute + + + + +
             ::= cursor_attribute+
    +
    + no referencescursor_attribute: + + + + + + + + cursor_sensitivity + + + cursor_scrollability + + + cursor_holdability + + + cursor_returnability + + + + +
             ::= cursor_sensitivity
    +
               | cursor_scrollability
    +
               | cursor_holdability
    +
               | cursor_returnability
    +
    + referenced by: + + cursor_attributes + + deallocate_prepared_statement: + + + + + + + + DEALLOCATE + + + PREPARE + + + SQL_statement_name + + + + +
             ::= 'DEALLOCATE' 'PREPARE' SQL_statement_name
    +
    + referenced by: + + SQL_dynamic_statement + + describe_statement: + + + + + + + + describe_input_statement + + + describe_output_statement + + + + +
             ::= describe_input_statement
    +
               | describe_output_statement
    +
    + referenced by: + + SQL_dynamic_statement + + describe_input_statement: + + + + + + + + DESCRIBE + + + INPUT* + + + SQL_statement_name + + + using_descriptor + + + nesting_option + + + + +
             ::= 'DESCRIBE' 'INPUT*' SQL_statement_name using_descriptor nesting_option?
    +
    + referenced by: + + describe_statement + + describe_output_statement: + + + + + + + + DESCRIBE + + + OUTPUT* + + + described_object + + + using_descriptor + + + nesting_option + + + + +
             ::= 'DESCRIBE' 'OUTPUT*'? described_object using_descriptor nesting_option?
    +
    + referenced by: + + describe_statement + + nesting_option: + + + + + + + + WITH + + + WITHOUT + + + NESTING* + + + + + +
             ::= ( 'WITH' | 'WITHOUT' ) 'NESTING*'
    +
    + referenced by: + + describe_input_statement + describe_output_statement + + using_descriptor: + + + + + + + + USING + + + SQL + + + DESCRIPTOR* + + + descriptor_name + + + + +
             ::= 'USING' 'SQL'? 'DESCRIPTOR*' descriptor_name
    +
    + referenced by: + + describe_input_statement + describe_output_statement + using_input_descriptor + + described_object: + + + + + + + + SQL_statement_name + + CURSOR + + + cursor_name + + STRUCTURE* + + + + + +
             ::= SQL_statement_name
    +
               | 'CURSOR' cursor_name 'STRUCTURE*'
    +
    + referenced by: + + describe_output_statement + + input_using_clause: + + + + + + + + using_arguments + + + using_input_descriptor + + + + +
             ::= using_arguments
    +
               | using_input_descriptor
    +
    + referenced by: + + dynamic_open_statement + parameter_using_clause + + using_arguments: + + + + + + + + USING + + + using_argument + + , + + + + + +
             ::= 'USING' using_argument ( ',' using_argument )*
    +
    + referenced by: + + input_using_clause + + using_argument: + + + + + + + + general_value_specification + + + + +
             ::= general_value_specification
    +
    + referenced by: + + using_arguments + + using_input_descriptor: + + + + + + + + using_descriptor + + + + +
             ::= using_descriptor
    +
    + referenced by: + + input_using_clause + + output_using_clause: + + + + + + + + into_arguments + + + into_descriptor + + + + +
             ::= into_arguments
    +
               | into_descriptor
    +
    + referenced by: + + dynamic_fetch_statement + result_using_clause + + into_arguments: + + + + + + + + INTO + + + into_argument + + , + + + + + +
             ::= 'INTO' into_argument ( ',' into_argument )*
    +
    + referenced by: + + output_using_clause + + into_argument: + + + + + + + + target_specification + + + + +
             ::= target_specification
    +
    + referenced by: + + into_arguments + + into_descriptor: + + + + + + + + INTO + + + SQL + + + DESCRIPTOR* + + + descriptor_name + + + + +
             ::= 'INTO' 'SQL'? 'DESCRIPTOR*' descriptor_name
    +
    + referenced by: + + output_using_clause + + execute_statement: + + + + + + + + EXECUTE + + + SQL_statement_name + + + result_using_clause + + + parameter_using_clause + + + + + + + referenced by: + + SQL_dynamic_statement + + result_using_clause: + + + + + + + + output_using_clause + + + + +
             ::= output_using_clause
    +
    + referenced by: + + execute_statement + + parameter_using_clause: + + + + + + + + input_using_clause + + + + +
             ::= input_using_clause
    +
    + referenced by: + + execute_statement + + execute_immediate_statement: + + + + + + + + EXECUTE + + + IMMEDIATE* + + + SQL_statement_variable + + + + +
             ::= 'EXECUTE' 'IMMEDIATE*' SQL_statement_variable
    +
    + referenced by: + + SQL_dynamic_statement + + dynamic_declare_cursor: + + + + + + + + DECLARE + + + cursor_name + + + cursor_properties + + FOR + + + statement_name + + + + +
             ::= 'DECLARE' cursor_name cursor_properties 'FOR' statement_name
    +
    + referenced by: + + module_contents + statement_or_declaration + + descriptor_value_constructor: + + + + + + + + DESCRIPTOR* + + + ( + + + descriptor_column_list + + ) + + + + + +
             ::= 'DESCRIPTOR*' '(' descriptor_column_list ')'
    +
    + referenced by: + + descriptor_argument + parameter_default + + descriptor_column_list: + + + + + + + + descriptor_column_specification + + , + + + + + + + + referenced by: + + descriptor_value_constructor + + descriptor_column_specification: + + + + + + + + column_name + + + data_type + + + + +
             ::= column_name data_type?
    +
    + referenced by: + + descriptor_column_list + + allocate_extended_dynamic_cursor_statement: + + + + + + + + ALLOCATE + + + extended_cursor_name + + + cursor_properties + + FOR + + + extended_statement_name + + + + +
             ::= 'ALLOCATE' extended_cursor_name cursor_properties 'FOR' extended_statement_name
    +
    + referenced by: + + SQL_dynamic_data_statement + + allocate_received_cursor_statement: + + + + + + + + ALLOCATE + + + cursor_name + + CURSOR + + + FOR + + + PROCEDURE + + + specific_routine_designator + + + + +
             ::= 'ALLOCATE' cursor_name 'CURSOR'? 'FOR' 'PROCEDURE' specific_routine_designator
    +
    + referenced by: + + SQL_dynamic_data_statement + + dynamic_open_statement: + + + + + + + + OPEN + + + conventional_dynamic_cursor_name + + + input_using_clause + + + + + + + referenced by: + + SQL_dynamic_data_statement + + dynamic_fetch_statement: + + + + + + + + FETCH + + + fetch_orientation + + FROM + + + dynamic_cursor_name + + + output_using_clause + + + + +
             ::= 'FETCH' ( fetch_orientation? 'FROM' )? dynamic_cursor_name output_using_clause
    +
    + referenced by: + + SQL_dynamic_data_statement + + dynamic_single_row_select_statement: + + + + + + + + query_specification + + + + +
             ::= query_specification
    +
    + referenced by: + + preparable_SQL_data_statement + + dynamic_close_statement: + + + + + + + + CLOSE + + + conventional_dynamic_cursor_name + + + + +
             ::= 'CLOSE' conventional_dynamic_cursor_name
    +
    + referenced by: + + SQL_dynamic_data_statement + + dynamic_delete_statement__positioned: + + + + + + + + DELETE + + + FROM + + + target_table + + WHERE + + + CURRENT + + + OF + + + conventional_dynamic_cursor_name + + + + +
             ::= 'DELETE' 'FROM' target_table 'WHERE' 'CURRENT' 'OF' conventional_dynamic_cursor_name
    +
    + referenced by: + + SQL_dynamic_data_statement + + dynamic_update_statement__positioned: + + + + + + + + UPDATE + + + target_table + + SET + + + set_clause_list + + WHERE + + + CURRENT + + + OF + + + conventional_dynamic_cursor_name + + + + +
             ::= 'UPDATE' target_table 'SET' set_clause_list 'WHERE' 'CURRENT' 'OF' conventional_dynamic_cursor_name
    +
    + referenced by: + + SQL_dynamic_data_statement + + preparable_dynamic_delete_statement__positioned: + + + + + + + + DELETE + + + FROM + + + target_table + + WHERE + + + CURRENT + + + OF + + + preparable_dynamic_cursor_name + + + + +
             ::= 'DELETE' ( 'FROM' target_table )? 'WHERE' 'CURRENT' 'OF' preparable_dynamic_cursor_name
    +
    + referenced by: + + preparable_SQL_data_statement + + preparable_dynamic_cursor_name: + + + + + + + + scope_option + + + cursor_name + + + + +
             ::= scope_option? cursor_name
    +
    + referenced by: + + preparable_dynamic_delete_statement__positioned + preparable_dynamic_update_statement__positioned + + preparable_dynamic_update_statement__positioned: + + + + + + + + UPDATE + + + target_table + + SET + + + set_clause_list + + WHERE + + + CURRENT + + + OF + + + preparable_dynamic_cursor_name + + + + +
             ::= 'UPDATE' target_table? 'SET' set_clause_list 'WHERE' 'CURRENT' 'OF' preparable_dynamic_cursor_name
    +
    + referenced by: + + preparable_SQL_data_statement + + pipe_row_statement: + + + + + + + + PIPE + + ROW + + + PTF_descriptor_name + + + + +
             ::= PIPE 'ROW' PTF_descriptor_name
    +
    + referenced by: + + SQL_dynamic_statement + + embedded_SQL_host_program: + + + + + + + + !! See the Syntax Rules. + + + + + +
             ::= '!! See the Syntax Rules.'
    +
    + no referencesembedded_SQL_statement: + + + + + + + + SQL_prefix + + + statement_or_declaration + + + SQL_terminator + + + + + + + no referencesstatement_or_declaration: + + + + + + + + declare_cursor + + + dynamic_declare_cursor + + + temporary_table_declaration + + + embedded_authorization_declaration + + + embedded_path_specification + + + embedded_transform_group_specification + + + embedded_collation_specification + + + embedded_exception_declaration + + + SQL_procedure_statement + + + + +
             ::= declare_cursor
    +
               | dynamic_declare_cursor
    +
               | temporary_table_declaration
    +
               | embedded_authorization_declaration
    +
               | embedded_path_specification
    + +
               | embedded_collation_specification
    +
               | embedded_exception_declaration
    +
               | SQL_procedure_statement
    +
    + referenced by: + + embedded_SQL_statement + + SQL_prefix: + + + + + + + + EXEC + + + SQL + + + & + + + SQL + + + ( + + + + + +
             ::= 'EXEC' 'SQL'
    +
               | '&' 'SQL' '('
    +
    + referenced by: + + embedded_SQL_MUMPS_declare + embedded_SQL_begin_declare + embedded_SQL_end_declare + embedded_SQL_statement + + SQL_terminator: + + + + + + + + END + + + EXEC + + + ; + + + ) + + + + + +
             ::= 'END' 'EXEC'
    +
               | ';'
    +
               | ')'
    +
    + referenced by: + + embedded_SQL_MUMPS_declare + embedded_SQL_begin_declare + embedded_SQL_end_declare + embedded_SQL_statement + + embedded_authorization_declaration: + + + + + + + + DECLARE + + + embedded_authorization_clause + + + + +
             ::= 'DECLARE' embedded_authorization_clause
    +
    + referenced by: + + statement_or_declaration + + embedded_authorization_clause: + + + + + + + + SCHEMA* + + + schema_name + + AUTHORIZATION + + + embedded_authorization_identifier + + FOR + + + STATIC + + + ONLY + + + AND + + + DYNAMIC + + + AUTHORIZATION + + + embedded_authorization_identifier + + FOR + + + STATIC + + + ONLY + + + AND + + + DYNAMIC + + + + + +
             ::= 'SCHEMA*' schema_name ( 'AUTHORIZATION' embedded_authorization_identifier ( 'FOR' 'STATIC' ( 'ONLY' | 'AND' 'DYNAMIC' ) )? )?
    +
               | 'AUTHORIZATION' embedded_authorization_identifier ( 'FOR' 'STATIC' ( 'ONLY' | 'AND' 'DYNAMIC' ) )?
    +
    + referenced by: + + embedded_authorization_declaration + + embedded_authorization_identifier: + + + + + + + + module_authorization_identifier + + + + +
             ::= module_authorization_identifier
    +
    + referenced by: + + embedded_authorization_clause + + embedded_path_specification: + + + + + + + + path_specification + + + + +
             ::= path_specification
    +
    + referenced by: + + statement_or_declaration + + embedded_transform_group_specification: + + + + + + + + transform_group_specification + + + + +
             ::= transform_group_specification
    +
    + referenced by: + + statement_or_declaration + + embedded_collation_specification: + + + + + + + + module_collations + + + + +
             ::= module_collations
    +
    + referenced by: + + statement_or_declaration + + embedded_SQL_declare_section: + + + + + + + + embedded_SQL_begin_declare + + + embedded_character_set_declaration + + + host_variable_definition + + + embedded_SQL_end_declare + + + embedded_SQL_MUMPS_declare + + + + + +
               | embedded_SQL_MUMPS_declare
    +
    + no referencesembedded_character_set_declaration: + + + + + + + + SQL + + + NAMES* + + + ARE + + + character_set_specification + + + + +
             ::= 'SQL' 'NAMES*' 'ARE' character_set_specification
    +
    + referenced by: + + embedded_SQL_MUMPS_declare + embedded_SQL_declare_section + + embedded_SQL_begin_declare: + + + + + + + + SQL_prefix + + BEGIN + + + DECLARE + + + SECTION* + + + SQL_terminator + + + + +
             ::= SQL_prefix 'BEGIN' 'DECLARE' 'SECTION*' SQL_terminator?
    +
    + referenced by: + + embedded_SQL_declare_section + + embedded_SQL_end_declare: + + + + + + + + SQL_prefix + + END + + + DECLARE + + + SECTION* + + + SQL_terminator + + + + +
             ::= SQL_prefix 'END' 'DECLARE' 'SECTION*' SQL_terminator?
    +
    + referenced by: + + embedded_SQL_declare_section + + embedded_SQL_MUMPS_declare: + + + + + + + + SQL_prefix + + BEGIN + + + DECLARE + + + SECTION* + + + embedded_character_set_declaration + + + host_variable_definition + + END + + + DECLARE + + + SECTION* + + + SQL_terminator + + + + +
             ::= SQL_prefix 'BEGIN' 'DECLARE' 'SECTION*' embedded_character_set_declaration? host_variable_definition* 'END' 'DECLARE' 'SECTION*' SQL_terminator
    +
    + referenced by: + + embedded_SQL_declare_section + + host_variable_definition: + + + + + + + + Ada_variable_definition + + + C_variable_definition + + + COBOL_variable_definition + + + Fortran_variable_definition + + + MUMPS_variable_definition + + + Pascal_variable_definition + + + PL_I_variable_definition + + + + +
             ::= Ada_variable_definition
    +
               | C_variable_definition
    +
               | COBOL_variable_definition
    +
               | Fortran_variable_definition
    +
               | MUMPS_variable_definition
    +
               | Pascal_variable_definition
    +
               | PL_I_variable_definition
    +
    + referenced by: + + embedded_SQL_MUMPS_declare + embedded_SQL_declare_section + + embedded_variable_name: + + + + + + + + : + + + host_identifier + + + + +
             ::= ':' host_identifier
    +
    + referenced by: + + embedded_variable_specification + indicator_variable + locator_reference + simple_target_specification + simple_value_specification + + host_identifier: + + + + + + + + !! See the Syntax Rules. + + + + + +
             ::= '!! See the Syntax Rules.'
    +
    + referenced by: + + embedded_variable_name + + embedded_exception_declaration: + + + + + + + + WHENEVER + + + condition + + + condition_action + + + + +
             ::= 'WHENEVER' condition condition_action
    +
    + referenced by: + + statement_or_declaration + + condition: + + + + + + + + SQL_condition + + + + +
             ::= SQL_condition
    +
    + referenced by: + + embedded_exception_declaration + + SQL_condition: + + + + + + + + major_category + + SQLSTATE + + + SQLSTATE_class_code + + , + + + SQLSTATE_subclass_code + + CONSTRAINT + + + constraint_name + + + + +
             ::= major_category
    +
               | 'SQLSTATE' SQLSTATE_class_code ( ',' SQLSTATE_subclass_code )?
    +
               | 'CONSTRAINT' constraint_name
    +
    + referenced by: + + condition + + major_category: + + + + + + + + SQLEXCEPTION + + + SQLWARNING + + + NOT + + + FOUND* + + + + + +
             ::= 'SQLEXCEPTION'
    +
               | 'SQLWARNING'
    +
               | 'NOT' 'FOUND*'
    +
    + referenced by: + + SQL_condition + + SQLSTATE_class_code: + + + + + + + + SQLSTATE_char + + + SQLSTATE_char + + !! See the Syntax Rules. + + + + + +
             ::= SQLSTATE_char SQLSTATE_char '!! See the Syntax Rules.'
    +
    + referenced by: + + SQL_condition + + SQLSTATE_subclass_code: + + + + + + + + SQLSTATE_char + + + SQLSTATE_char + + + SQLSTATE_char + + !! See the Syntax Rules. + + + + + +
             ::= SQLSTATE_char SQLSTATE_char SQLSTATE_char '!! See the Syntax Rules.'
    +
    + referenced by: + + SQL_condition + + SQLSTATE_char: + + + + + + + + simple_Latin_upper_case_letter + + + digit + + + + +
             ::= simple_Latin_upper_case_letter
    +
               | digit
    +
    + referenced by: + + SQLSTATE_class_code + SQLSTATE_subclass_code + + condition_action: + + + + + + + + CONTINUE* + + + go_to + + + + +
             ::= 'CONTINUE*'
    +
               | go_to
    +
    + referenced by: + + embedded_exception_declaration + + go_to: + + + + + + + + GOTO* + + + GO* + + + TO + + + goto_target + + + +
    go_to    ::= ( 'GOTO*' | 'GO*' 'TO' ) goto_target
    +
    + referenced by: + + condition_action + + goto_target: + + + + + + + + !! See the Syntax Rules. + + + unsigned_integer + + + + +
             ::= '!! See the Syntax Rules.'
    +
               | unsigned_integer
    +
    + referenced by: + + go_to + + Ada_variable_definition: + + + + + + + + !! See the Syntax Rules. + + + , + + + : + + + Ada_type_specification + + + Ada_initial_value + + + + +
             ::= '!! See the Syntax Rules.' ( ',' '!! See the Syntax Rules.' )* ':' Ada_type_specification Ada_initial_value?
    +
    + referenced by: + + host_variable_definition + + Ada_initial_value: + + + + + + + + Ada_assignment_operator + + + character_representation + + + + + + + referenced by: + + Ada_variable_definition + + Ada_assignment_operator: + + + + + + + + : + + + = + + + + + +
             ::= ':' '='
    +
    + referenced by: + + Ada_initial_value + + Ada_type_specification: + + + + + + + + Ada_qualified_type_specification + + + Ada_unqualified_type_specification + + + Ada_derived_type_specification + + + + +
             ::= Ada_qualified_type_specification
    +
               | Ada_unqualified_type_specification
    +
               | Ada_derived_type_specification
    +
    + referenced by: + + Ada_variable_definition + + Ada_qualified_type_specification: + + + + + + + + Interfaces.SQL.CHAR + + CHARACTER + + + SET + + + IS + + + character_set_specification + + ( + + + 1 + + + .. + + + character_length + + ) + + + Interfaces.SQL.SMALLINT + + + Interfaces.SQL.INT + + + Interfaces.SQL.BIGINT + + + Interfaces.SQL.REAL + + + Interfaces.SQL.DOUBLE_PRECISION + + + Interfaces.SQL.BOOLEAN + + + Interfaces.SQL.SQLSTATE_TYPE + + + Interfaces.SQL.INDICATOR_TYPE + + + + +
             ::= Interfaces.SQL.CHAR ( 'CHARACTER' 'SET' 'IS'? character_set_specification )? '(' '1' '..' character_length ')'
    +
               | Interfaces.SQL.SMALLINT
    +
               | Interfaces.SQL.INT
    +
               | Interfaces.SQL.BIGINT
    +
               | Interfaces.SQL.REAL
    +
               | Interfaces.SQL.DOUBLE_PRECISION
    +
               | Interfaces.SQL.BOOLEAN
    +
               | Interfaces.SQL.SQLSTATE_TYPE
    +
               | Interfaces.SQL.INDICATOR_TYPE
    +
    + referenced by: + + Ada_type_specification + + Ada_unqualified_type_specification: + + + + + + + + CHAR + + + ( + + + 1 + + + .. + + + character_length + + ) + + + SMALLINT + + + INT + + + BIGINT + + + REAL + + + DOUBLE_PRECISION + + BOOLEAN + + + SQLSTATE_TYPE + + + INDICATOR_TYPE + + + + +
             ::= 'CHAR' '(' '1' '..' character_length ')'
    +
               | 'SMALLINT'
    +
               | 'INT'
    +
               | 'BIGINT'
    +
               | 'REAL'
    +
               | DOUBLE_PRECISION
    +
               | 'BOOLEAN'
    +
               | SQLSTATE_TYPE
    +
               | INDICATOR_TYPE
    +
    + referenced by: + + Ada_type_specification + + Ada_derived_type_specification: + + + + + + + + Ada_CLOB_variable + + + Ada_CLOB_locator_variable + + + Ada_BINARY_variable + + + Ada_VARBINARY_variable + + + Ada_BLOB_variable + + + Ada_BLOB_locator_variable + + + Ada_user_defined_type_variable + + + Ada_user_defined_type_locator_variable + + + Ada_REF_variable + + + Ada_array_locator_variable + + + Ada_multiset_locator_variable + + + + +
             ::= Ada_CLOB_variable
    +
               | Ada_CLOB_locator_variable
    +
               | Ada_BINARY_variable
    +
               | Ada_VARBINARY_variable
    +
               | Ada_BLOB_variable
    +
               | Ada_BLOB_locator_variable
    +
               | Ada_user_defined_type_variable
    + +
               | Ada_REF_variable
    +
               | Ada_array_locator_variable
    +
               | Ada_multiset_locator_variable
    +
    + referenced by: + + Ada_type_specification + + Ada_CLOB_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + CLOB + + + ( + + + character_large_object_length + + ) + + + CHARACTER + + + SET + + + IS + + + character_set_specification + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' '(' character_large_object_length ')' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )?
    +
    + referenced by: + + Ada_derived_type_specification + + Ada_CLOB_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + CLOB + + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' 'AS' 'LOCATOR*'
    +
    + referenced by: + + Ada_derived_type_specification + + Ada_BINARY_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + BINARY + + + ( + + + length + + ) + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'BINARY' '(' length ')'
    +
    + referenced by: + + Ada_derived_type_specification + + Ada_VARBINARY_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + VARBINARY + + + ( + + + length + + ) + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'VARBINARY' '(' length ')'
    +
    + referenced by: + + Ada_derived_type_specification + + Ada_BLOB_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + BLOB + + + ( + + + large_object_length + + ) + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' '(' large_object_length ')'
    +
    + referenced by: + + Ada_derived_type_specification + + Ada_BLOB_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + BLOB + + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' 'AS' 'LOCATOR*'
    +
    + referenced by: + + Ada_derived_type_specification + + Ada_user_defined_type_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + path_resolved_user_defined_type_name + + AS + + + predefined_type + + + + +
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' predefined_type
    +
    + referenced by: + + Ada_derived_type_specification + + Ada_user_defined_type_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + path_resolved_user_defined_type_name + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' 'LOCATOR*'
    +
    + referenced by: + + Ada_derived_type_specification + + Ada_REF_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + reference_type + + + + +
             ::= 'SQL' 'TYPE*' 'IS' reference_type
    +
    + referenced by: + + Ada_derived_type_specification + + Ada_array_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + array_type + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' array_type 'AS' 'LOCATOR*'
    +
    + referenced by: + + Ada_derived_type_specification + + Ada_multiset_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + multiset_type + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' multiset_type 'AS' 'LOCATOR*'
    +
    + referenced by: + + Ada_derived_type_specification + + C_variable_definition: + + + + + + + + C_storage_class + + + C_class_modifier + + + C_variable_specification + + ; + + + + + + + + referenced by: + + host_variable_definition + + C_variable_specification: + + + + + + + + C_numeric_variable + + + C_character_variable + + + C_derived_variable + + + + +
             ::= C_numeric_variable
    +
               | C_character_variable
    +
               | C_derived_variable
    +
    + referenced by: + + C_variable_definition + + C_storage_class: + + + + + + + + auto + + + extern + + + static + + + + + +
             ::= 'auto'
    +
               | 'extern'
    +
               | 'static'
    +
    + referenced by: + + C_variable_definition + + C_class_modifier: + + + + + + + + const + + + volatile + + + + + +
             ::= 'const'
    +
               | 'volatile'
    +
    + referenced by: + + C_variable_definition + + C_numeric_variable: + + + + + + + + long + + + long + + + short + + + float + + + double + + + !! See the Syntax Rules. + + + C_initial_value + + , + + + + + +
             ::= ( 'long' 'long'? | 'short' | 'float' | 'double' ) '!! See the Syntax + Rules.' C_initial_value? ( ',' '!! See the Syntax Rules.' C_initial_value? )*
    +
    + referenced by: + + C_variable_specification + + C_character_variable: + + + + + + + + C_character_type + + CHARACTER + + + SET + + + IS + + + character_set_specification + + !! See the Syntax Rules. + + + C_array_specification + + + C_initial_value + + , + + + + + +
             ::= C_character_type ( 'CHARACTER' 'SET' 'IS'? character_set_specification )? '!! See the Syntax Rules.' C_array_specification C_initial_value? ( ',' '!! See the Syntax Rules.' C_array_specification C_initial_value? )*
    +
    + referenced by: + + C_variable_specification + + C_character_type: + + + + + + + + char + + + unsigned + + + char + + + short + + + + + +
             ::= 'char'
    +
               | 'unsigned' ( 'char' | 'short' )
    +
    + referenced by: + + C_character_variable + + C_array_specification: + + + + + + + + [ + + + character_length + + ] + + + + + +
             ::= '[' character_length ']'
    +
    + referenced by: + + C_NCHAR_VARYING_variable + C_NCHAR_variable + C_VARCHAR_variable + C_character_variable + + C_derived_variable: + + + + + + + + C_VARCHAR_variable + + + C_NCHAR_variable + + + C_NCHAR_VARYING_variable + + + C_CLOB_variable + + + C_NCLOB_variable + + + C_BINARY_variable + + + C_VARBINARY_variable + + + C_BLOB_variable + + + C_user_defined_type_variable + + + C_CLOB_locator_variable + + + C_BLOB_locator_variable + + + C_array_locator_variable + + + C_multiset_locator_variable + + + C_user_defined_type_locator_variable + + + C_REF_variable + + + + +
             ::= C_VARCHAR_variable
    +
               | C_NCHAR_variable
    +
               | C_NCHAR_VARYING_variable
    +
               | C_CLOB_variable
    +
               | C_NCLOB_variable
    +
               | C_BINARY_variable
    +
               | C_VARBINARY_variable
    +
               | C_BLOB_variable
    +
               | C_user_defined_type_variable
    +
               | C_CLOB_locator_variable
    +
               | C_BLOB_locator_variable
    +
               | C_array_locator_variable
    +
               | C_multiset_locator_variable
    +
               | C_user_defined_type_locator_variable
    +
               | C_REF_variable
    +
    + referenced by: + + C_variable_specification + + C_VARCHAR_variable: + + + + + + + + VARCHAR + + + CHARACTER + + + SET + + + IS + + + character_set_specification + + !! See the Syntax Rules. + + + C_array_specification + + + C_initial_value + + , + + + + + +
             ::= 'VARCHAR' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )? '!! See the Syntax Rules.' C_array_specification C_initial_value? ( ',' '!! See the Syntax Rules.' C_array_specification C_initial_value? )*
    +
    + referenced by: + + C_derived_variable + + C_NCHAR_variable: + + + + + + + + NCHAR + + + !! See the Syntax Rules. + + + C_array_specification + + + C_initial_value + + , + + + + + +
             ::= 'NCHAR' '!! See the Syntax Rules.' C_array_specification C_initial_value? ( ',' '!! See the Syntax Rules.' C_array_specification C_initial_value? )*
    +
    + referenced by: + + C_derived_variable + + C_NCHAR_VARYING_variable: + + + + + + + + NCHAR + + + VARYING + + + !! See the Syntax Rules. + + + C_array_specification + + + C_initial_value + + , + + + + + +
             ::= 'NCHAR' 'VARYING' '!! See the Syntax Rules.' C_array_specification C_initial_value? ( ',' '!! See the Syntax Rules.' C_array_specification C_initial_value? )*
    +
    + referenced by: + + C_derived_variable + + C_CLOB_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + CLOB + + + ( + + + character_large_object_length + + ) + + + CHARACTER + + + SET + + + IS + + + character_set_specification + + !! See the Syntax Rules. + + + C_initial_value + + , + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' '(' character_large_object_length ')' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )? '!! See the Syntax Rules.' C_initial_value? ( ',' '!! See the Syntax Rules.' C_initial_value? )*
    +
    + referenced by: + + C_derived_variable + + C_NCLOB_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + NCLOB + + + ( + + + character_large_object_length + + ) + + + !! See the Syntax Rules. + + + C_initial_value + + , + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'NCLOB' '(' character_large_object_length ')' '!! See the Syntax Rules.' C_initial_value? ( ',' '!! See the Syntax Rules.' C_initial_value? )*
    +
    + referenced by: + + C_derived_variable + + C_user_defined_type_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + path_resolved_user_defined_type_name + + AS + + + predefined_type + + !! See the Syntax Rules. + + + C_initial_value + + , + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' predefined_type '!! See the Syntax Rules.' C_initial_value? ( ',' '!! See the Syntax Rules.' C_initial_value? )*
    +
    + referenced by: + + C_derived_variable + + C_BINARY_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + BINARY + + + ( + + + length + + ) + + + !! See the Syntax Rules. + + + C_initial_value + + , + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'BINARY' '(' length ')' '!! See the Syntax Rules.' C_initial_value? ( ',' '!! See the Syntax Rules.' C_initial_value? )*
    +
    + referenced by: + + C_derived_variable + + C_VARBINARY_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + VARBINARY + + + ( + + + length + + ) + + + !! See the Syntax Rules. + + + C_initial_value + + , + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'VARBINARY' '(' length ')' '!! See the Syntax Rules.' C_initial_value? ( ',' '!! See the Syntax Rules.' C_initial_value? )*
    +
    + referenced by: + + C_derived_variable + + C_BLOB_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + BLOB + + + ( + + + large_object_length + + ) + + + !! See the Syntax Rules. + + + C_initial_value + + , + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' '(' large_object_length ')' '!! See the Syntax Rules.' C_initial_value? ( ',' '!! See the Syntax Rules.' C_initial_value? )*
    +
    + referenced by: + + C_derived_variable + + C_CLOB_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + CLOB + + + AS + + + LOCATOR* + + + !! See the Syntax Rules. + + + C_initial_value + + , + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' 'AS' 'LOCATOR*' '!! See the Syntax Rules.' + C_initial_value? ( ',' '!! See the Syntax Rules.' C_initial_value? )*
    +
    + referenced by: + + C_derived_variable + + C_BLOB_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + BLOB + + + AS + + + LOCATOR* + + + !! See the Syntax Rules. + + + C_initial_value + + , + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' 'AS' 'LOCATOR*' '!! See the Syntax Rules.' + C_initial_value? ( ',' '!! See the Syntax Rules.' C_initial_value? )*
    +
    + referenced by: + + C_derived_variable + + C_array_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + array_type + + AS + + + LOCATOR* + + + !! See the Syntax Rules. + + + C_initial_value + + , + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' array_type 'AS' 'LOCATOR*' '!! See the Syntax Rules.' C_initial_value? ( ',' '!! See the Syntax Rules.' C_initial_value? )*
    +
    + referenced by: + + C_derived_variable + + C_multiset_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + multiset_type + + AS + + + LOCATOR* + + + !! See the Syntax Rules. + + + C_initial_value + + , + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' multiset_type 'AS' 'LOCATOR*' '!! See the Syntax Rules.' C_initial_value? ( ',' '!! See the Syntax Rules.' C_initial_value? )*
    +
    + referenced by: + + C_derived_variable + + C_user_defined_type_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + path_resolved_user_defined_type_name + + AS + + + LOCATOR* + + + !! See the Syntax Rules. + + + C_initial_value + + , + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' 'LOCATOR*' '!! See the Syntax Rules.' C_initial_value? ( ',' '!! See the Syntax Rules.' C_initial_value? )*
    +
    + referenced by: + + C_derived_variable + + C_REF_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + reference_type + + !! See the Syntax Rules. + + + C_initial_value + + , + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' reference_type '!! See the Syntax Rules.' C_initial_value? ( ',' '!! See the Syntax Rules.' C_initial_value? )*
    +
    + referenced by: + + C_derived_variable + + C_initial_value: + + + + + + + + = + + + character_representation + + + + +
             ::= '=' character_representation+
    +
    + referenced by: + + C_BINARY_variable + C_BLOB_locator_variable + C_BLOB_variable + C_CLOB_locator_variable + C_CLOB_variable + C_NCHAR_VARYING_variable + C_NCHAR_variable + C_NCLOB_variable + C_REF_variable + C_VARBINARY_variable + C_VARCHAR_variable + C_array_locator_variable + C_character_variable + C_multiset_locator_variable + C_numeric_variable + C_user_defined_type_locator_variable + C_user_defined_type_variable + + COBOL_variable_definition: + + + + + + + + 01 + + + 77 + + + !! See the Syntax Rules. + + + COBOL_type_specification + + + character_representation + + . + + + + + +
             ::= ( '01' | '77' ) '!! See the Syntax Rules.' COBOL_type_specification character_representation* '.'
    +
    + referenced by: + + host_variable_definition + + COBOL_type_specification: + + + + + + + + COBOL_character_type + + + COBOL_national_character_type + + + COBOL_numeric_type + + + COBOL_integer_type + + + COBOL_derived_type_specification + + + + +
             ::= COBOL_character_type
    +
               | COBOL_national_character_type
    +
               | COBOL_numeric_type
    +
               | COBOL_integer_type
    +
               | COBOL_derived_type_specification
    +
    + referenced by: + + COBOL_variable_definition + + COBOL_derived_type_specification: + + + + + + + + COBOL_CLOB_variable + + + COBOL_NCLOB_variable + + + COBOL_BINARY_variable + + + COBOL_BLOB_variable + + + COBOL_user_defined_type_variable + + + COBOL_CLOB_locator_variable + + + COBOL_BLOB_locator_variable + + + COBOL_array_locator_variable + + + COBOL_multiset_locator_variable + + + COBOL_user_defined_type_locator_variable + + + COBOL_REF_variable + + + + +
             ::= COBOL_CLOB_variable
    +
               | COBOL_NCLOB_variable
    +
               | COBOL_BINARY_variable
    +
               | COBOL_BLOB_variable
    +
               | COBOL_user_defined_type_variable
    +
               | COBOL_CLOB_locator_variable
    +
               | COBOL_BLOB_locator_variable
    +
               | COBOL_array_locator_variable
    +
               | COBOL_multiset_locator_variable
    + +
               | COBOL_REF_variable
    +
    + referenced by: + + COBOL_type_specification + + COBOL_character_type: + + + + + + + + CHARACTER + + + SET + + + IS + + + character_set_specification + + + PIC + + + PICTURE + + IS + + + X + + + ( + + + character_length + + ) + + + + + +
             ::= ( 'CHARACTER' 'SET' 'IS'? character_set_specification )? ( PIC | PICTURE ) 'IS'? ( 'X' ( '(' character_length ')' )? )+
    +
    + referenced by: + + COBOL_type_specification + + COBOL_national_character_type: + + + + + + + + PIC + + + PICTURE + + IS + + + N + + + ( + + + character_length + + ) + + + + + +
             ::= ( PIC | PICTURE ) 'IS'? ( 'N' ( '(' character_length ')' )? )+
    +
    + referenced by: + + COBOL_type_specification + + COBOL_CLOB_variable: + + + + + + + + USAGE* + + + IS + + + SQL + + + TYPE* + + + IS + + + CLOB + + + ( + + + character_large_object_length + + ) + + + CHARACTER + + + SET + + + IS + + + character_set_specification + + + + +
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' 'CLOB' '(' character_large_object_length ')' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )?
    +
    + referenced by: + + COBOL_derived_type_specification + + COBOL_NCLOB_variable: + + + + + + + + USAGE* + + + IS + + + SQL + + + TYPE* + + + IS + + + NCLOB + + + ( + + + character_large_object_length + + ) + + + + + +
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' 'NCLOB' '(' character_large_object_length ')'
    +
    + referenced by: + + COBOL_derived_type_specification + + COBOL_BINARY_variable: + + + + + + + + USAGE* + + + IS + + + SQL + + + TYPE* + + + IS + + + BINARY + + + ( + + + length + + ) + + + + + +
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' 'BINARY' '(' length ')'
    +
    + referenced by: + + COBOL_derived_type_specification + + COBOL_BLOB_variable: + + + + + + + + USAGE* + + + IS + + + SQL + + + TYPE* + + + IS + + + BLOB + + + ( + + + large_object_length + + ) + + + + + +
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' 'BLOB' '(' large_object_length ')'
    +
    + referenced by: + + COBOL_derived_type_specification + + COBOL_user_defined_type_variable: + + + + + + + + USAGE* + + + IS + + + SQL + + + TYPE* + + + IS + + + path_resolved_user_defined_type_name + + AS + + + predefined_type + + + + +
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' predefined_type
    +
    + referenced by: + + COBOL_derived_type_specification + + COBOL_CLOB_locator_variable: + + + + + + + + USAGE* + + + IS + + + SQL + + + TYPE* + + + IS + + + CLOB + + + AS + + + LOCATOR* + + + + + +
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' 'CLOB' 'AS' 'LOCATOR*'
    +
    + referenced by: + + COBOL_derived_type_specification + + COBOL_BLOB_locator_variable: + + + + + + + + USAGE* + + + IS + + + SQL + + + TYPE* + + + IS + + + BLOB + + + AS + + + LOCATOR* + + + + + +
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' 'BLOB' 'AS' 'LOCATOR*'
    +
    + referenced by: + + COBOL_derived_type_specification + + COBOL_array_locator_variable: + + + + + + + + USAGE* + + + IS + + + SQL + + + TYPE* + + + IS + + + array_type + + AS + + + LOCATOR* + + + + + +
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' array_type 'AS' 'LOCATOR*'
    +
    + referenced by: + + COBOL_derived_type_specification + + COBOL_multiset_locator_variable: + + + + + + + + USAGE* + + + IS + + + SQL + + + TYPE* + + + IS + + + multiset_type + + AS + + + LOCATOR* + + + + + +
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' multiset_type 'AS' 'LOCATOR*'
    +
    + referenced by: + + COBOL_derived_type_specification + + COBOL_user_defined_type_locator_variable: + + + + + + + + USAGE* + + + IS + + + SQL + + + TYPE* + + + IS + + + path_resolved_user_defined_type_name + + AS + + + LOCATOR* + + + + + +
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' 'LOCATOR*'
    +
    + referenced by: + + COBOL_derived_type_specification + + COBOL_REF_variable: + + + + + + + + USAGE* + + + IS + + + SQL + + + TYPE* + + + IS + + + reference_type + + + + +
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' reference_type
    +
    + referenced by: + + COBOL_derived_type_specification + + COBOL_numeric_type: + + + + + + + + PIC + + + PICTURE + + IS + + + S + + + COBOL_nines_specification + + USAGE* + + + IS + + + DISPLAY + + + SIGN + + LEADING + + + SEPARATE + + + + +
             ::= ( PIC | PICTURE ) 'IS'? 'S' COBOL_nines_specification ( 'USAGE*' 'IS'? )? DISPLAY SIGN 'LEADING' SEPARATE
    +
    + referenced by: + + COBOL_type_specification + + COBOL_nines_specification: + + + + + + + + COBOL_nines + + V + + + COBOL_nines + + V + + + COBOL_nines + + + + +
             ::= COBOL_nines ( 'V' COBOL_nines? )?
    +
               | 'V' COBOL_nines
    +
    + referenced by: + + COBOL_numeric_type + + COBOL_integer_type: + + + + + + + + PIC + + + PICTURE + + IS + + + S + + + COBOL_nines + + USAGE* + + + IS + + + BINARY + + + + + +
             ::= ( PIC | PICTURE ) 'IS'? 'S' COBOL_nines ( 'USAGE*' 'IS'? )? 'BINARY'
    +
    + referenced by: + + COBOL_type_specification + + COBOL_nines: + + + + + + + + 9 + + + ( + + + length + + ) + + + + + +
             ::= ( '9' ( '(' length ')' )? )+
    +
    + referenced by: + + COBOL_integer_type + COBOL_nines_specification + + Fortran_variable_definition: + + + + + + + + Fortran_type_specification + + !! See the Syntax Rules. + + + , + + + + + +
             ::= Fortran_type_specification '!! See the Syntax Rules.' ( ',' '!! See the Syntax Rules.' )*
    +
    + referenced by: + + host_variable_definition + + Fortran_type_specification: + + + + + + + + CHARACTER + + + KIND + + = + + + n + + + * + + + character_length + + CHARACTER + + + SET + + + IS + + + character_set_specification + + INTEGER + + + REAL + + + DOUBLE + + + PRECISION + + + LOGICAL + + + Fortran_derived_type_specification + + + + +
             ::= 'CHARACTER' ( KIND '=' 'n' )? ( '*' character_length )? ( 'CHARACTER' 'SET' 'IS'? character_set_specification )?
    +
               | 'INTEGER'
    +
               | 'REAL'
    +
               | 'DOUBLE' 'PRECISION'
    +
               | LOGICAL
    +
               | Fortran_derived_type_specification
    +
    + referenced by: + + Fortran_variable_definition + + Fortran_derived_type_specification: + + + + + + + + Fortran_CLOB_variable + + + Fortran_BINARY_variable + + + Fortran_VARBINARY_variable + + + Fortran_BLOB_variable + + + Fortran_user_defined_type_variable + + + Fortran_CLOB_locator_variable + + + Fortran_BLOB_locator_variable + + + Fortran_user_defined_type_locator_variable + + + Fortran_array_locator_variable + + + Fortran_multiset_locator_variable + + + Fortran_REF_variable + + + + +
             ::= Fortran_CLOB_variable
    +
               | Fortran_BINARY_variable
    +
               | Fortran_VARBINARY_variable
    +
               | Fortran_BLOB_variable
    +
               | Fortran_user_defined_type_variable
    +
               | Fortran_CLOB_locator_variable
    +
               | Fortran_BLOB_locator_variable
    + +
               | Fortran_array_locator_variable
    +
               | Fortran_multiset_locator_variable
    +
               | Fortran_REF_variable
    +
    + referenced by: + + Fortran_type_specification + + Fortran_CLOB_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + CLOB + + + ( + + + character_large_object_length + + ) + + + CHARACTER + + + SET + + + IS + + + character_set_specification + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' '(' character_large_object_length ')' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )?
    +
    + referenced by: + + Fortran_derived_type_specification + + Fortran_BINARY_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + BINARY + + + ( + + + length + + ) + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'BINARY' '(' length ')'
    +
    + referenced by: + + Fortran_derived_type_specification + + Fortran_VARBINARY_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + VARBINARY + + + ( + + + length + + ) + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'VARBINARY' '(' length ')'
    +
    + referenced by: + + Fortran_derived_type_specification + + Fortran_BLOB_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + BLOB + + + ( + + + large_object_length + + ) + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' '(' large_object_length ')'
    +
    + referenced by: + + Fortran_derived_type_specification + + Fortran_user_defined_type_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + path_resolved_user_defined_type_name + + AS + + + predefined_type + + + + +
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' predefined_type
    +
    + referenced by: + + Fortran_derived_type_specification + + Fortran_CLOB_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + CLOB + + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' 'AS' 'LOCATOR*'
    +
    + referenced by: + + Fortran_derived_type_specification + + Fortran_BLOB_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + BLOB + + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' 'AS' 'LOCATOR*'
    +
    + referenced by: + + Fortran_derived_type_specification + + Fortran_user_defined_type_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + path_resolved_user_defined_type_name + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' 'LOCATOR*'
    +
    + referenced by: + + Fortran_derived_type_specification + + Fortran_array_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + array_type + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' array_type 'AS' 'LOCATOR*'
    +
    + referenced by: + + Fortran_derived_type_specification + + Fortran_multiset_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + multiset_type + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' multiset_type 'AS' 'LOCATOR*'
    +
    + referenced by: + + Fortran_derived_type_specification + + Fortran_REF_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + reference_type + + + + +
             ::= 'SQL' 'TYPE*' 'IS' reference_type
    +
    + referenced by: + + Fortran_derived_type_specification + + MUMPS_variable_definition: + + + + + + + + MUMPS_numeric_variable + + + MUMPS_character_variable + + + MUMPS_derived_type_specification + + !! See the Syntax Rules. + + + ; + + + + + +
             ::= ( MUMPS_numeric_variable | MUMPS_character_variable | MUMPS_derived_type_specification '!! See the Syntax Rules.' ) ';'
    +
    + referenced by: + + host_variable_definition + + MUMPS_character_variable: + + + + + + + + VARCHAR + + + MUMPS_character_variable_specifier + + , + + + + + + + + referenced by: + + MUMPS_variable_definition + + MUMPS_character_variable_specifier: + + + + + + + + !! See the Syntax Rules. + + + MUMPS_length_specification + + CHARACTER + + + SET + + + IS + + + character_set_specification + + + + +
             ::= '!! See the Syntax Rules.' MUMPS_length_specification ( 'CHARACTER' 'SET' 'IS'? character_set_specification )?
    +
    + referenced by: + + MUMPS_character_variable + + MUMPS_length_specification: + + + + + + + + ( + + + character_length + + ) + + + + + +
             ::= '(' character_length ')'
    +
    + referenced by: + + MUMPS_character_variable_specifier + + MUMPS_numeric_variable: + + + + + + + + MUMPS_type_specification + + !! See the Syntax Rules. + + + , + + + + + +
             ::= MUMPS_type_specification '!! See the Syntax Rules.' ( ',' '!! See the Syntax Rules.' )*
    +
    + referenced by: + + MUMPS_variable_definition + + MUMPS_type_specification: + + + + + + + + INT + + + DEC + + + ( + + + precision + + , + + + scale + + ) + + + REAL + + + + + +
             ::= 'INT'
    +
               | 'DEC' ( '(' precision ( ',' scale )? ')' )?
    +
               | 'REAL'
    +
    + referenced by: + + MUMPS_numeric_variable + + MUMPS_derived_type_specification: + + + + + + + + MUMPS_user_defined_type_variable + + + MUMPS_CLOB_locator_variable + + + MUMPS_BLOB_locator_variable + + + MUMPS_user_defined_type_locator_variable + + + MUMPS_array_locator_variable + + + MUMPS_multiset_locator_variable + + + MUMPS_REF_variable + + + + +
             ::= MUMPS_user_defined_type_variable
    +
               | MUMPS_CLOB_locator_variable
    +
               | MUMPS_BLOB_locator_variable
    + +
               | MUMPS_array_locator_variable
    +
               | MUMPS_multiset_locator_variable
    +
               | MUMPS_REF_variable
    +
    + referenced by: + + MUMPS_variable_definition + + MUMPS_user_defined_type_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + path_resolved_user_defined_type_name + + AS + + + predefined_type + + + + +
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' predefined_type
    +
    + referenced by: + + MUMPS_derived_type_specification + + MUMPS_CLOB_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + CLOB + + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' 'AS' 'LOCATOR*'
    +
    + referenced by: + + MUMPS_derived_type_specification + + MUMPS_BLOB_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + BLOB + + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' 'AS' 'LOCATOR*'
    +
    + referenced by: + + MUMPS_derived_type_specification + + MUMPS_user_defined_type_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + path_resolved_user_defined_type_name + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' 'LOCATOR*'
    +
    + referenced by: + + MUMPS_derived_type_specification + + MUMPS_array_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + array_type + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' array_type 'AS' 'LOCATOR*'
    +
    + referenced by: + + MUMPS_derived_type_specification + + MUMPS_multiset_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + multiset_type + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' multiset_type 'AS' 'LOCATOR*'
    +
    + referenced by: + + MUMPS_derived_type_specification + + MUMPS_REF_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + reference_type + + + + +
             ::= 'SQL' 'TYPE*' 'IS' reference_type
    +
    + referenced by: + + MUMPS_derived_type_specification + + Pascal_variable_definition: + + + + + + + + !! See the Syntax Rules. + + + , + + + : + + + Pascal_type_specification + + ; + + + + + +
             ::= '!! See the Syntax Rules.' ( ',' '!! See the Syntax Rules.' )* ':' Pascal_type_specification ';'
    +
    + referenced by: + + host_variable_definition + + Pascal_type_specification: + + + + + + + + PACKED + + ARRAY + + + [ + + + 1 + + + .. + + + character_length + + ] + + + OF + + + CHAR + + + CHARACTER + + + SET + + + IS + + + character_set_specification + + INTEGER + + + REAL + + + BOOLEAN + + + Pascal_derived_type_specification + + + + +
             ::= ( PACKED 'ARRAY' '[' '1' '..' character_length ']' 'OF' )? 'CHAR' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )?
    +
               | 'INTEGER'
    +
               | 'REAL'
    +
               | 'BOOLEAN'
    +
               | Pascal_derived_type_specification
    +
    + referenced by: + + Pascal_variable_definition + + Pascal_derived_type_specification: + + + + + + + + Pascal_CLOB_variable + + + Pascal_BINARY_variable + + + Pascal_BLOB_variable + + + Pascal_user_defined_type_variable + + + Pascal_CLOB_locator_variable + + + Pascal_BLOB_locator_variable + + + Pascal_user_defined_type_locator_variable + + + Pascal_array_locator_variable + + + Pascal_multiset_locator_variable + + + Pascal_REF_variable + + + + +
             ::= Pascal_CLOB_variable
    +
               | Pascal_BINARY_variable
    +
               | Pascal_BLOB_variable
    +
               | Pascal_user_defined_type_variable
    +
               | Pascal_CLOB_locator_variable
    +
               | Pascal_BLOB_locator_variable
    + +
               | Pascal_array_locator_variable
    +
               | Pascal_multiset_locator_variable
    +
               | Pascal_REF_variable
    +
    + referenced by: + + Pascal_type_specification + + Pascal_CLOB_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + CLOB + + + ( + + + character_large_object_length + + ) + + + CHARACTER + + + SET + + + IS + + + character_set_specification + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' '(' character_large_object_length ')' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )?
    +
    + referenced by: + + Pascal_derived_type_specification + + Pascal_BINARY_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + BINARY + + + ( + + + length + + ) + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'BINARY' '(' length ')'
    +
    + referenced by: + + Pascal_derived_type_specification + + Pascal_BLOB_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + BLOB + + + ( + + + large_object_length + + ) + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' '(' large_object_length ')'
    +
    + referenced by: + + Pascal_derived_type_specification + + Pascal_CLOB_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + CLOB + + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' 'AS' 'LOCATOR*'
    +
    + referenced by: + + Pascal_derived_type_specification + + Pascal_user_defined_type_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + path_resolved_user_defined_type_name + + AS + + + predefined_type + + + + +
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' predefined_type
    +
    + referenced by: + + Pascal_derived_type_specification + + Pascal_BLOB_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + BLOB + + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' 'AS' 'LOCATOR*'
    +
    + referenced by: + + Pascal_derived_type_specification + + Pascal_user_defined_type_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + path_resolved_user_defined_type_name + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' 'LOCATOR*'
    +
    + referenced by: + + Pascal_derived_type_specification + + Pascal_array_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + array_type + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' array_type 'AS' 'LOCATOR*'
    +
    + referenced by: + + Pascal_derived_type_specification + + Pascal_multiset_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + multiset_type + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' multiset_type 'AS' 'LOCATOR*'
    +
    + referenced by: + + Pascal_derived_type_specification + + Pascal_REF_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + reference_type + + + + +
             ::= 'SQL' 'TYPE*' 'IS' reference_type
    +
    + referenced by: + + Pascal_derived_type_specification + + PL_I_variable_definition: + + + + + + + + DCL + + DECLARE + + + !! See the Syntax Rules. + + + ( + + + !! See the Syntax Rules. + + + , + + + ) + + + PL_I_type_specification + + + character_representation + + ; + + + + + +
             ::= ( DCL | 'DECLARE' | '!! See the Syntax Rules.' | '(' '!! See the Syntax Rules.' ( ',' '!! + See the Syntax Rules.' )* ')' ) PL_I_type_specification character_representation* ';'
    +
    + referenced by: + + host_variable_definition + + PL_I_type_specification: + + + + + + + + CHAR + + + CHARACTER + + + VARYING + + + ( + + + character_length + + ) + + + CHARACTER + + + SET + + + IS + + + character_set_specification + + + PL_I_type_fixed_decimal + + ( + + + precision + + , + + + scale + + + PL_I_type_float_binary + + ( + + + precision + + ) + + + PL_I_type_fixed_binary + + ( + + + precision + + ) + + + PL_I_derived_type_specification + + + + +
             ::= ( 'CHAR' | 'CHARACTER' ) 'VARYING'? '(' character_length ')' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )?
    +
               | ( PL_I_type_fixed_decimal '(' precision ( ',' scale )? | PL_I_type_float_binary '(' precision ) ')'
    +
               | PL_I_type_fixed_binary ( '(' precision ')' )?
    +
               | PL_I_derived_type_specification
    +
    + referenced by: + + PL_I_variable_definition + + PL_I_derived_type_specification: + + + + + + + + PL_I_CLOB_variable + + + PL_I_BINARY_variable + + + PL_I_VARBINARY_variable + + + PL_I_BLOB_variable + + + PL_I_user_defined_type_variable + + + PL_I_CLOB_locator_variable + + + PL_I_BLOB_locator_variable + + + PL_I_user_defined_type_locator_variable + + + PL_I_array_locator_variable + + + PL_I_multiset_locator_variable + + + PL_I_REF_variable + + + + +
             ::= PL_I_CLOB_variable
    +
               | PL_I_BINARY_variable
    +
               | PL_I_VARBINARY_variable
    +
               | PL_I_BLOB_variable
    +
               | PL_I_user_defined_type_variable
    +
               | PL_I_CLOB_locator_variable
    +
               | PL_I_BLOB_locator_variable
    + +
               | PL_I_array_locator_variable
    +
               | PL_I_multiset_locator_variable
    +
               | PL_I_REF_variable
    +
    + referenced by: + + PL_I_type_specification + + PL_I_CLOB_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + CLOB + + + ( + + + character_large_object_length + + ) + + + CHARACTER + + + SET + + + IS + + + character_set_specification + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' '(' character_large_object_length ')' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )?
    +
    + referenced by: + + PL_I_derived_type_specification + + PL_I_BINARY_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + BINARY + + + ( + + + length + + ) + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'BINARY' '(' length ')'
    +
    + referenced by: + + PL_I_derived_type_specification + + PL_I_VARBINARY_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + VARBINARY + + + ( + + + length + + ) + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'VARBINARY' '(' length ')'
    +
    + referenced by: + + PL_I_derived_type_specification + + PL_I_BLOB_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + BLOB + + + ( + + + large_object_length + + ) + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' '(' large_object_length ')'
    +
    + referenced by: + + PL_I_derived_type_specification + + PL_I_user_defined_type_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + path_resolved_user_defined_type_name + + AS + + + predefined_type + + + + +
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' predefined_type
    +
    + referenced by: + + PL_I_derived_type_specification + + PL_I_CLOB_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + CLOB + + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' 'AS' 'LOCATOR*'
    +
    + referenced by: + + PL_I_derived_type_specification + + PL_I_BLOB_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + BLOB + + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' 'AS' 'LOCATOR*'
    +
    + referenced by: + + PL_I_derived_type_specification + + PL_I_user_defined_type_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + path_resolved_user_defined_type_name + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' 'LOCATOR*'
    +
    + referenced by: + + PL_I_derived_type_specification + + PL_I_array_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + array_type + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' array_type 'AS' 'LOCATOR*'
    +
    + referenced by: + + PL_I_derived_type_specification + + PL_I_multiset_locator_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + multiset_type + + AS + + + LOCATOR* + + + + + +
             ::= 'SQL' 'TYPE*' 'IS' multiset_type 'AS' 'LOCATOR*'
    +
    + referenced by: + + PL_I_derived_type_specification + + PL_I_REF_variable: + + + + + + + + SQL + + + TYPE* + + + IS + + + reference_type + + + + +
             ::= 'SQL' 'TYPE*' 'IS' reference_type
    +
    + referenced by: + + PL_I_derived_type_specification + + PL_I_type_fixed_decimal: + + + + + + + + DEC + + + DECIMAL + + + FIXED + + + FIXED + + DEC + + + DECIMAL + + + + + +
             ::= ( 'DEC' | 'DECIMAL' ) FIXED
    +
               | FIXED ( 'DEC' | 'DECIMAL' )
    +
    + referenced by: + + PL_I_type_specification + + PL_I_type_fixed_binary: + + + + + + + + BIN + + BINARY + + + FIXED + + + FIXED + + + BIN + + BINARY + + + + + +
             ::= ( BIN | 'BINARY' ) FIXED
    +
               | FIXED ( BIN | 'BINARY' )
    +
    + referenced by: + + PL_I_type_specification + + PL_I_type_float_binary: + + + + + + + + BIN + + BINARY + + + FLOAT + + + FLOAT + + + BIN + + BINARY + + + + + +
             ::= ( BIN | 'BINARY' ) 'FLOAT'
    +
               | 'FLOAT' ( BIN | 'BINARY' )
    +
    + referenced by: + + PL_I_type_specification + + direct_select_statement__multiple_rows: + + + + + + + + cursor_specification + + + + +
             ::= cursor_specification
    +
    + referenced by: + + direct_SQL_data_statement + + get_diagnostics_statement: + + + + + + + + GET + + + DIAGNOSTICS* + + + SQL_diagnostics_information + + + + +
             ::= 'GET' 'DIAGNOSTICS*' SQL_diagnostics_information
    +
    + referenced by: + + SQL_diagnostics_statement + + SQL_diagnostics_information: + + + + + + + + statement_information + + + condition_information + + + all_information + + + + +
             ::= statement_information
    +
               | condition_information
    +
               | all_information
    +
    + referenced by: + + get_diagnostics_statement + + statement_information: + + + + + + + + statement_information_item + + , + + + + + + + + referenced by: + + SQL_diagnostics_information + + statement_information_item: + + + + + + + + simple_target_specification + + = + + + statement_information_item_name + + + + + + + referenced by: + + statement_information + + statement_information_item_name: + + + + + + + + NUMBER* + + + MORE* + + + COMMAND_FUNCTION* + + + COMMAND_FUNCTION_CODE* + + + DYNAMIC_FUNCTION* + + + DYNAMIC_FUNCTION_CODE* + + + ROW_COUNT* + + + TRANSACTIONS_COMMITTED* + + + TRANSACTIONS_ROLLED_BACK* + + + TRANSACTION_ACTIVE* + + + + + +
             ::= 'NUMBER*'
    +
               | 'MORE*'
    +
               | 'COMMAND_FUNCTION*'
    +
               | 'COMMAND_FUNCTION_CODE*'
    +
               | 'DYNAMIC_FUNCTION*'
    +
               | 'DYNAMIC_FUNCTION_CODE*'
    +
               | 'ROW_COUNT*'
    +
               | 'TRANSACTIONS_COMMITTED*'
    +
               | 'TRANSACTIONS_ROLLED_BACK*'
    +
               | 'TRANSACTION_ACTIVE*'
    +
    + referenced by: + + statement_information_item + + condition_information: + + + + + + + + CONDITION + + + condition_number + + + condition_information_item + + , + + + + + + + + referenced by: + + SQL_diagnostics_information + + condition_information_item: + + + + + + + + simple_target_specification + + = + + + condition_information_item_name + + + + + + + referenced by: + + condition_information + + condition_information_item_name: + + + + + + + + CATALOG_NAME* + + + CLASS_ORIGIN* + + + COLUMN_NAME* + + + CONDITION_NUMBER* + + + CONNECTION_NAME* + + + CONSTRAINT_CATALOG* + + + CONSTRAINT_NAME* + + + CONSTRAINT_SCHEMA* + + + CURSOR_NAME* + + + MESSAGE_LENGTH* + + + MESSAGE_OCTET_LENGTH* + + + MESSAGE_TEXT* + + + PARAMETER_MODE* + + + PARAMETER_NAME* + + + PARAMETER_ORDINAL_POSITION* + + + RETURNED_SQLSTATE* + + + ROUTINE_CATALOG* + + + ROUTINE_NAME* + + + ROUTINE_SCHEMA* + + + SCHEMA_NAME* + + + SERVER_NAME* + + + SPECIFIC_NAME* + + + SUBCLASS_ORIGIN* + + + TABLE_NAME* + + + TRIGGER_CATALOG* + + + TRIGGER_NAME* + + + TRIGGER_SCHEMA* + + + + + +
             ::= 'CATALOG_NAME*'
    +
               | 'CLASS_ORIGIN*'
    +
               | 'COLUMN_NAME*'
    +
               | 'CONDITION_NUMBER*'
    +
               | 'CONNECTION_NAME*'
    +
               | 'CONSTRAINT_CATALOG*'
    +
               | 'CONSTRAINT_NAME*'
    +
               | 'CONSTRAINT_SCHEMA*'
    +
               | 'CURSOR_NAME*'
    +
               | 'MESSAGE_LENGTH*'
    +
               | 'MESSAGE_OCTET_LENGTH*'
    +
               | 'MESSAGE_TEXT*'
    +
               | 'PARAMETER_MODE*'
    +
               | 'PARAMETER_NAME*'
    +
               | 'PARAMETER_ORDINAL_POSITION*'
    +
               | 'RETURNED_SQLSTATE*'
    +
               | 'ROUTINE_CATALOG*'
    +
               | 'ROUTINE_NAME*'
    +
               | 'ROUTINE_SCHEMA*'
    +
               | 'SCHEMA_NAME*'
    +
               | 'SERVER_NAME*'
    +
               | 'SPECIFIC_NAME*'
    +
               | 'SUBCLASS_ORIGIN*'
    +
               | 'TABLE_NAME*'
    +
               | 'TRIGGER_CATALOG*'
    +
               | 'TRIGGER_NAME*'
    +
               | 'TRIGGER_SCHEMA*'
    +
    + referenced by: + + condition_information_item + + all_information: + + + + + + + + all_info_target + + = + + + ALL + + + all_qualifier + + + + +
             ::= all_info_target '=' 'ALL' all_qualifier?
    +
    + referenced by: + + SQL_diagnostics_information + + all_info_target: + + + + + + + + simple_target_specification + + + + +
             ::= simple_target_specification
    +
    + referenced by: + + all_information + + all_qualifier: + + + + + + + + STATEMENT* + + + CONDITION + + + condition_number + + + + +
             ::= 'STATEMENT*'
    +
               | 'CONDITION' condition_number?
    +
    + referenced by: + + all_information + + condition_number: + + + + + + + + simple_value_specification + + + + +
             ::= simple_value_specification
    +
    + referenced by: + + all_qualifier + condition_information + + CURRENT_PATH: + + + + + + + + CURRENT_PATH + + + + + +
             ::= 'CURRENT_PATH'
    +
    + referenced by: + + default_option + general_value_specification + reserved_word + + CURRENT_ROLE: + + + + + + + + CURRENT_ROLE + + + + + +
             ::= 'CURRENT_ROLE'
    +
    + referenced by: + + default_option + general_value_specification + grantor + reserved_word + + + + + +   + + ... generated by RR - Railroad Diagram Generator + + + + + + + + R + R + + + + + + \ No newline at end of file diff --git a/sql-2016.ebnf b/sql-2016.ebnf new file mode 100644 index 0000000..c1a0d54 --- /dev/null +++ b/sql-2016.ebnf @@ -0,0 +1,10090 @@ +/* + +EBNF to be viewed with https://www.bottlecaps.de/rr/ui + +Here is a manually conversion using as base +sql-2016-foundation-grammar.txt from https://github.com/JakeWheat/sql-overview +that we can see a railroad diagram for the grammar by copying +and paste the EBNF shown bellow on https://www.bottlecaps.de/rr/ui +in the tab Edit Grammar then switching to the tab View Diagram. + +Obs: It's a heavy diagram that takes time and resources to view. + +Non reserved words appear with * as suffix, ex: SUBSTRING -> SUBSTRING*. + +You can navigate through the grammar by clicking the rectangular boxes. + +*/ + + +/* +22 Direct invocation of SQL + + +22.1 direct_SQL_statement + +Function +Specify direct execution of SQL. + + +Format +*/ +direct_SQL_statement ::= + directly_executable_statement semicolon + +directly_executable_statement ::= + direct_SQL_data_statement + | SQL_schema_statement + | SQL_transaction_statement + | SQL_connection_statement + | SQL_session_statement + | direct_implementation_defined_statement + +direct_SQL_data_statement ::= + delete_statement__searched + | direct_select_statement__multiple_rows + | insert_statement + | update_statement__searched + | truncate_table_statement + | merge_statement + | temporary_table_declaration + +direct_implementation_defined_statement ::= + "!! See the Syntax Rules." + + +/* +5 Lexical elements + + +5.1 SQL_terminal_character + +Function +Define the terminal symbols of the SQL language and the elements of strings. + +Format +*/ +SQL_terminal_character ::= + SQL_language_character + +SQL_language_character ::= + simple_Latin_letter + | digit + | SQL_special_character + +simple_Latin_letter ::= + simple_Latin_upper_case_letter + | simple_Latin_lower_case_letter + +simple_Latin_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" | "W" | "X" | "Y" | "Z" + +simple_Latin_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" | "y" | "z" + +digit ::= + "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" + +SQL_special_character ::= + space + | double_quote + | percent + | ampersand + | quote + | left_paren + | right_paren + | asterisk + | plus_sign + | comma + | minus_sign + | period + | solidus + | colon + | semicolon + | less_than_operator + | equals_operator + | greater_than_operator + | question_mark + | left_bracket + | right_bracket + | circumflex + | underscore + | vertical_bar + | left_brace + | right_brace + | dollar_sign + | apostrophe + +space ::= + "!! See the Syntax Rules." + +double_quote ::= + '"' + +percent ::= + '%' + +ampersand ::= + '&' + +quote ::= + "'" + +left_paren ::= + '(' + +right_paren ::= + ')' + +asterisk ::= + '*' + +plus_sign ::= + '+' + +comma ::= + ',' + +minus_sign ::= + '-' + +period ::= + '.' + +solidus ::= + '/' + +reverse_solidus ::= + '\' + +colon ::= + ':' + +semicolon ::= + ';' + +less_than_operator ::= + '<' + +equals_operator ::= + '=' + +greater_than_operator ::= + '>' + +question_mark ::= + '?' + +left_bracket_or_trigraph ::= + left_bracket + | left_bracket_trigraph + +right_bracket_or_trigraph ::= + right_bracket + | right_bracket_trigraph + +left_bracket ::= + '[' + +left_bracket_trigraph ::= + "??(" + +right_bracket ::= + ']' + +right_bracket_trigraph ::= + "??)" + +circumflex ::= + '^' + +underscore ::= + '_' + +vertical_bar ::= + '|' + +left_brace ::= + '{' + +right_brace ::= + '}' + +dollar_sign ::= + '$' + +apostrophe ::= + "'" +/* +5.2 token and separator + +Function +Specify lexical units (tokens and separators) that participate in SQL language. + + +Format +*/ +token ::= + nondelimiter_token + | delimiter_token + +nondelimiter_token ::= + regular_identifier + | key_word + | unsigned_numeric_literal + | national_character_string_literal + | binary_string_literal + | large_object_length_token + | Unicode_delimited_identifier + | Unicode_character_string_literal + | SQL_language_identifier + +regular_identifier ::= + identifier_body + +identifier_body ::= + identifier_start ( identifier_part )* + +identifier_part ::= + identifier_start + | identifier_extend +/* +identifier_start ::= + "!! See the Syntax Rules." + +identifier_extend ::= + "!! See the Syntax Rules." +*/ +large_object_length_token ::= + digit+ multiplier + +multiplier ::= + "K" + | "M" + | "G" + | "T" + | "P" + +delimited_identifier ::= + double_quote delimited_identifier_body double_quote + +delimited_identifier_body ::= + delimited_identifier_part+ + +delimited_identifier_part ::= + nondoublequote_character + | doublequote_symbol + +Unicode_delimited_identifier ::= + U ampersand double_quote Unicode_delimiter_body double_quote + Unicode_escape_specifier + +Unicode_escape_specifier ::= + ( UESCAPE quote Unicode_escape_character quote )? + +Unicode_delimiter_body ::= + Unicode_identifier_part+ + +Unicode_identifier_part ::= + delimited_identifier_part + | Unicode_escape_value + +Unicode_escape_value ::= + Unicode_4_digit_escape_value + | Unicode_6_digit_escape_value + | Unicode_character_escape_value + +Unicode_4_digit_escape_value ::= + Unicode_escape_character hexit hexit hexit hexit + +Unicode_6_digit_escape_value ::= + Unicode_escape_character plus_sign + hexit hexit hexit hexit hexit hexit + +Unicode_character_escape_value ::= + Unicode_escape_character Unicode_escape_character + +Unicode_escape_character ::= + "!! See the Syntax Rules." + +nondoublequote_character ::= + "!! See the Syntax Rules." + +doublequote_symbol ::= + '""' //!! two consecutive double quote characters + +delimiter_token ::= + character_string_literal + | date_string + | time_string + | timestamp_string + | interval_string + | delimited_identifier + | SQL_special_character + | not_equals_operator + | greater_than_or_equals_operator + | less_than_or_equals_operator + | concatenation_operator + | right_arrow + | left_bracket_trigraph + | right_bracket_trigraph + | double_colon + | double_period + | named_argument_assignment_token + | left_brace_minus + | right_minus_brace + +not_equals_operator ::= + "<>" + +greater_than_or_equals_operator ::= + ">=" + +less_than_or_equals_operator ::= + "<=" + +concatenation_operator ::= + "||" + +right_arrow ::= + "->" + +double_colon ::= + "::" + +double_period ::= + ".." + +named_argument_assignment_token ::= + "=>" + +left_brace_minus ::= + "{-" + +right_minus_brace ::= + "-}" + +separator ::= + ( comment | white_space )+ +/* +white_space ::= + "!! See the Syntax Rules." +*/ +comment ::= + simple_comment + | bracketed_comment + +simple_comment ::= + simple_comment_introducer comment_character* newline + +simple_comment_introducer ::= + minus_sign minus_sign + +bracketed_comment ::= + bracketed_comment_introducer + bracketed_comment_contents + bracketed_comment_terminator + +bracketed_comment_introducer ::= + /* + +bracketed_comment_terminator ::= + */ + +bracketed_comment_contents ::= + ( comment_character | separator )+ "!! See the Syntax Rules." + +comment_character ::= + nonquote_character + | quote +/* +newline ::= + "!! See the Syntax Rules." +*/ +key_word ::= + reserved_word + | non_reserved_word + +non_reserved_word ::= + A | ABSOLUTE | ACTION | ADA | ADD | ADMIN | AFTER | ALWAYS | ASC + | ASSERTION | ASSIGNMENT | ATTRIBUTE | ATTRIBUTES + + | BEFORE | BERNOULLI | BREADTH + + | C | CASCADE | CATALOG | CATALOG_NAME | CHAIN | CHAINING | CHARACTER_SET_CATALOG + | CHARACTER_SET_NAME | CHARACTER_SET_SCHEMA | CHARACTERISTICS | CHARACTERS + | CLASS_ORIGIN | COBOL | COLLATION | COLLATION_CATALOG | COLLATION_NAME | COLLATION_SCHEMA + | COLUMNS | COLUMN_NAME | COMMAND_FUNCTION | COMMAND_FUNCTION_CODE | COMMITTED + | CONDITIONAL | CONDITION_NUMBER | CONNECTION | CONNECTION_NAME | CONSTRAINT_CATALOG + | CONSTRAINT_NAME | CONSTRAINT_SCHEMA | CONSTRAINTS | CONSTRUCTOR + | CONTINUE | CURSOR_NAME + + | DATA | DATETIME_INTERVAL_CODE | DATETIME_INTERVAL_PRECISION | DEFAULTS | DEFERRABLE + | DEFERRED | DEFINED | DEFINER | DEGREE | DEPTH | DERIVED | DESC | DESCRIBE_CATALOG + | DESCRIBE_NAME | DESCRIBE_PROCEDURE_SPECIFIC_CATALOG + | DESCRIBE_PROCEDURE_SPECIFIC_NAME | DESCRIBE_PROCEDURE_SPECIFIC_SCHEMA + | DESCRIBE_SCHEMA | DESCRIPTOR + | DIAGNOSTICS | DISPATCH | DOMAIN | DYNAMIC_FUNCTION | DYNAMIC_FUNCTION_CODE + + | ENCODING | ENFORCED | ERROR | EXCLUDE | EXCLUDING | EXPRESSION + + | FINAL | FINISH | FINISH_CATALOG | FINISH_NAME | FINISH_PROCEDURE_SPECIFIC_CATALOG + | FINISH_PROCEDURE_SPECIFIC_NAME | FINISH_PROCEDURE_SPECIFIC_SCHEMA + | FINISH_SCHEMA | FIRST | FLAG | FOLLOWING | FORMAT | FORTRAN | FOUND | FULFILL + | FULFILL_CATALOG | FULFILL_NAME | FULFILL_PROCEDURE_SPECIFIC_CATALOG + | FULFILL_PROCEDURE_SPECIFIC_NAME | FULFILL_PROCEDURE_SPECIFIC_SCHEMA | FULFILL_SCHEMA + + | G | GENERAL | GENERATED | GO | GOTO | GRANTED + + | HAS_PASS_THROUGH_COLUMNS | HAS_PASS_THRU_COLS | HIERARCHY + + | IGNORE | IMMEDIATE | IMMEDIATELY | IMPLEMENTATION | INCLUDING | INCREMENT | INITIALLY + | INPUT | INSTANCE | INSTANTIABLE | INSTEAD | INVOKER | ISOLATION | IS_PRUNABLE + + | JSON + + | K | KEEP | KEY | KEYS | KEY_MEMBER | KEY_TYPE + + | LAST | LENGTH | LEVEL | LOCATOR + + | M | MAP | MATCHED | MAXVALUE | MESSAGE_LENGTH | MESSAGE_OCTET_LENGTH + | MESSAGE_TEXT | MINVALUE | MORE | MUMPS + + | NAME | NAMES | NESTED | NESTING | NEXT | NFC | NFD | NFKC | NFKD + | NORMALIZED | NULLABLE | NULLS | NUMBER + + | OBJECT | OCTETS | OPTION | OPTIONS | ORDERING | ORDINALITY | OTHERS + | OUTPUT | OVERFLOW | OVERRIDING + + | P | PAD | PARAMETER_MODE | PARAMETER_NAME | PARAMETER_ORDINAL_POSITION + | PARAMETER_SPECIFIC_CATALOG | PARAMETER_SPECIFIC_NAME | PARAMETER_SPECIFIC_SCHEMA + | PARTIAL | PASCAL | PASS | PASSING | PAST | PATH | PLACING | PLAN | PLI + | PRECEDING | PRESERVE | PRIOR | PRIVATE | PRIVATE_PARAMETERS | PRIVATE_PARAMS_S + | PRIVILEGES | PRUNE | PUBLIC + + | QUOTES + + | READ | RELATIVE | REPEATABLE | RESPECT | RESTART | RESTRICT | RETURNED_CARDINALITY + | RETURNED_LENGTH | RETURNED_OCTET_LENGTH | RETURNED_SQLSTATE | RETURNING + | RETURNS_ONLY_PASS_THROUGH | RET_ONLY_PASS_THRU | ROLE | ROUTINE + | ROUTINE_CATALOG | ROUTINE_NAME | ROUTINE_SCHEMA | ROW_COUNT + + | SCALAR | SCALE | SCHEMA | SCHEMA_NAME | SCOPE_CATALOG | SCOPE_NAME + | SCOPE_SCHEMA | SECTION | SECURITY | SELF | SEQUENCE | SERIALIZABLE | SERVER_NAME + | SESSION | SETS | SIMPLE | SIZE | SOURCE | SPACE | SPECIFIC_NAME | START_CATALOG + | START_NAME | START_PROCEDURE_SPECIFIC_CATALOG | START_PROCEDURE_SPECIFIC_NAME + | START_PROCEDURE_SPECIFIC_SCHEMA | START_SCHEMA | STATE | STATEMENT + | STRING | STRUCTURE | STYLE | SUBCLASS_ORIGIN + + | T | TABLE_NAME | TABLE_SEMANTICS | TEMPORARY | THROUGH | TIES | TOP_LEVEL_COUNT + | TRANSACTION | TRANSACTION_ACTIVE | TRANSACTIONS_COMMITTED + | TRANSACTIONS_ROLLED_BACK | TRANSFORM | TRANSFORMS | TRIGGER_CATALOG | TRIGGER_NAME + | TRIGGER_SCHEMA | TYPE + + | UNBOUNDED | UNCOMMITTED | UNCONDITIONAL | UNDER | UNNAMED | USAGE + | USER_DEFINED_TYPE_CATALOG | USER_DEFINED_TYPE_CODE | USER_DEFINED_TYPE_NAME + | USER_DEFINED_TYPE_SCHEMA | UTF16 | UTF32 | UTF8 + + | VIEW + + | WORK | WRAPPER | WRITE + + | ZONE + +reserved_word ::= + ABS | ACOS | ALL | ALLOCATE | ALTER | AND | ANY | ARE | ARRAY | ARRAY_AGG + | ARRAY_MAX_CARDINALITY | AS | ASENSITIVE | ASIN | ASYMMETRIC | AT | ATAN + | ATOMIC | AUTHORIZATION | AVG + + | BEGIN | BEGIN_FRAME | BEGIN_PARTITION | BETWEEN | BIGINT | BINARY + | BLOB | BOOLEAN | BOTH | BY + + | CALL | CALLED | CARDINALITY | CASCADED | CASE | CAST | CEIL | CEILING + | CHAR | CHAR_LENGTH | CHARACTER | CHARACTER_LENGTH | CHECK | CLASSIFIER | CLOB + | CLOSE | COALESCE | COLLATE | COLLECT | COLUMN | COMMIT | CONDITION | CONNECT + | CONSTRAINT | CONTAINS | CONVERT | COPY | CORR | CORRESPONDING | COS | COSH + | COUNT | COVAR_POP | COVAR_SAMP | CREATE | CROSS | CUBE | CUME_DIST | CURRENT + | CURRENT_CATALOG | CURRENT_DATE | CURRENT_DEFAULT_TRANSFORM_GROUP + | CURRENT_PATH | CURRENT_ROLE | CURRENT_ROW | CURRENT_SCHEMA | CURRENT_TIME + | CURRENT_TIMESTAMP | CURRENT_PATH | CURRENT_ROLE | CURRENT_TRANSFORM_GROUP_FOR_TYPE + | CURRENT_USER | CURSOR | CYCLE + + | DATE | DAY | DEALLOCATE | DEC | DECIMAL | DECFLOAT | DECLARE | DEFAULT | DEFINE + | DELETE | DENSE_RANK | DEREF | DESCRIBE | DETERMINISTIC | DISCONNECT | DISTINCT + | DOUBLE | DROP | DYNAMIC + + | EACH | ELEMENT | ELSE | EMPTY | END | END_FRAME | END_PARTITION | END-EXEC + | EQUALS | ESCAPE | EVERY | EXCEPT | EXEC | EXECUTE | EXISTS | EXP + | EXTERNAL | EXTRACT + + | FALSE | FETCH | FILTER | FIRST_VALUE | FLOAT | FLOOR | FOR | FOREIGN + | FRAME_ROW | FREE | FROM | FULL | FUNCTION | FUSION + + | GET | GLOBAL | GRANT | GROUP | GROUPING | GROUPS + + | HAVING | HOLD | HOUR + + | IDENTITY | IN | INDICATOR | INITIAL | INNER | INOUT | INSENSITIVE | INSERT + | INT | INTEGER | INTERSECT | INTERSECTION | INTERVAL | INTO | IS + + | JOIN | JSON_ARRAY | JSON_ARRAYAGG | JSON_EXISTS | JSON_OBJECT + | JSON_OBJECTAGG | JSON_QUERY | JSON_TABLE | JSON_TABLE_PRIMITIVE | JSON_VALUE + + | LAG | LANGUAGE | LARGE | LAST_VALUE | LATERAL | LEAD | LEADING | LEFT | LIKE + | LIKE_REGEX | LISTAGG | LN | LOCAL | LOCALTIME | LOCALTIMESTAMP | LOG | LOG10 | LOWER + + | MATCH | MATCH_NUMBER | MATCH_RECOGNIZE | MATCHES | MAX | MEMBER + | MERGE | METHOD | MIN | MINUTE | MOD | MODIFIES | MODULE | MONTH | MULTISET + + | NATIONAL | NATURAL | NCHAR | NCLOB | NEW | NO | NONE | NORMALIZE | NOT + | NTH_VALUE | NTILE | NULL | NULLIF | NUMERIC + + | OCTET_LENGTH | OCCURRENCES_REGEX | OF | OFFSET | OLD | OMIT | ON | ONE + | ONLY | OPEN | OR | ORDER | OUT | OUTER | OVER | OVERLAPS | OVERLAY + + | PARAMETER | PARTITION | PATTERN | PER | PERCENT | PERCENT_RANK + | PERCENTILE_CONT | PERCENTILE_DISC | PERIOD | PORTION | POSITION | POSITION_REGEX + | POWER | PRECEDES | PRECISION | PREPARE | PRIMARY | PROCEDURE | PTF + + | RANGE | RANK | READS | REAL | RECURSIVE | REF | REFERENCES | REFERENCING + | REGR_AVGX | REGR_AVGY | REGR_COUNT | REGR_INTERCEPT | REGR_R2 | REGR_SLOPE + | REGR_SXX | REGR_SXY | REGR_SYY | RELEASE | RESULT | RETURN | RETURNS + | REVOKE | RIGHT | ROLLBACK | ROLLUP | ROW | ROW_NUMBER | ROWS | RUNNING + + | SAVEPOINT | SCOPE | SCROLL | SEARCH | SECOND | SEEK | SELECT | SENSITIVE + | SESSION_USER | SET | SHOW | SIMILAR | SIN | SINH | SKIP | SMALLINT | SOME | SPECIFIC + | SPECIFICTYPE | SQL | SQLEXCEPTION | SQLSTATE | SQLWARNING | SQRT | START + | STATIC | STDDEV_POP | STDDEV_SAMP | SUBMULTISET | SUBSET | SUBSTRING + | SUBSTRING_REGEX | SUCCEEDS | SUM | SYMMETRIC | SYSTEM | SYSTEM_TIME + | SYSTEM_USER + + | TABLE | TABLESAMPLE | TAN | TANH | THEN | TIME | TIMESTAMP | TIMEZONE_HOUR + | TIMEZONE_MINUTE | TO | TRAILING | TRANSLATE | TRANSLATE_REGEX | TRANSLATION | TREAT + | TRIGGER | TRIM | TRIM_ARRAY | TRUE | TRUNCATE + + | UESCAPE | UNION | UNIQUE | UNKNOWN | UNNEST | UPDATE | UPPER | USER | USING + + | VALUE | VALUES | VALUE_OF | VAR_POP | VAR_SAMP | VARBINARY + | VARCHAR | VARYING | VERSIONING + + | WHEN | WHENEVER | WHERE | WIDTH_BUCKET | WINDOW | WITH | WITHIN | WITHOUT + + | YEAR +/* +5.3 literal + +Function +Specify a non-null value. + + +Format +*/ +literal ::= + signed_numeric_literal + | general_literal + +unsigned_literal ::= + unsigned_numeric_literal + | general_literal + +general_literal ::= + character_string_literal + | national_character_string_literal + | Unicode_character_string_literal + | binary_string_literal + | datetime_literal + | interval_literal + | boolean_literal + +character_string_literal ::= + ( introducer character_set_specification )? + quote character_representation* quote + ( separator quote character_representation* quote )* + +introducer ::= + underscore + +character_representation ::= + nonquote_character + | quote_symbol +/* +nonquote_character ::= + "!! See the Syntax Rules." +*/ +quote_symbol ::= + quote quote + +national_character_string_literal ::= + 'N' quote character_representation* + quote ( separator quote character_representation* quote )* + +Unicode_character_string_literal ::= + ( introducer character_set_specification )? + 'U' ampersand quote Unicode_representation* quote + ( separator quote Unicode_representation* quote )* + Unicode_escape_specifier + +Unicode_representation ::= + character_representation + | Unicode_escape_value + +binary_string_literal ::= + 'X' quote space* ( hexit space* hexit space* )* quote + ( separator quote space* ( hexit space* + hexit space* )* quote )* + +hexit ::= + digit | "A" | "B" | "C" | "D" | "E" | "F" | "a" | "b" | "c" | "d" | "e" | "f" + +signed_numeric_literal ::= + sign? unsigned_numeric_literal + +unsigned_numeric_literal ::= + exact_numeric_literal + | approximate_numeric_literal + +exact_numeric_literal ::= + unsigned_integer ( period unsigned_integer? )? + | period unsigned_integer + +sign ::= + plus_sign + | minus_sign + +approximate_numeric_literal ::= + mantissa 'E' exponent + +mantissa ::= + exact_numeric_literal + +exponent ::= + signed_integer + +signed_integer ::= + sign? unsigned_integer + +unsigned_integer ::= + digit+ + +datetime_literal ::= + date_literal + | time_literal + | timestamp_literal + +date_literal ::= + DATE date_string + +time_literal ::= + TIME time_string + +timestamp_literal ::= + TIMESTAMP timestamp_string + +date_string ::= + quote unquoted_date_string quote + +time_string ::= + quote unquoted_time_string quote + +timestamp_string ::= + quote unquoted_timestamp_string quote + +time_zone_interval ::= + sign hours_value colon minutes_value + +date_value ::= + years_value minus_sign months_value minus_sign days_value + +time_value ::= + hours_value colon minutes_value colon seconds_value + +interval_literal ::= + INTERVAL sign? interval_string interval_qualifier + +interval_string ::= + quote unquoted_interval_string quote + +unquoted_date_string ::= + date_value + +unquoted_time_string ::= + time_value time_zone_interval? + +unquoted_timestamp_string ::= + unquoted_date_string space unquoted_time_string + +unquoted_interval_string ::= + sign? ( year_month_literal | day_time_literal ) + +year_month_literal ::= + years_value ( minus_sign months_value )? + | months_value + +day_time_literal ::= + day_time_interval + | time_interval + +day_time_interval ::= + days_value ( space hours_value ( colon minutes_value + ( colon seconds_value )? )? )? + +time_interval ::= + hours_value ( colon minutes_value ( colon seconds_value )? )? + | minutes_value ( colon seconds_value )? + | seconds_value + +years_value ::= + datetime_value + +months_value ::= + datetime_value + +days_value ::= + datetime_value + +hours_value ::= + datetime_value + +minutes_value ::= + datetime_value + +seconds_value ::= + seconds_integer_value ( period seconds_fraction? )? + +seconds_integer_value ::= + unsigned_integer + +seconds_fraction ::= + unsigned_integer + +datetime_value ::= + unsigned_integer + +boolean_literal ::= + TRUE + | FALSE + | UNKNOWN +/* +5.4 Names and identifiers + +Function +Specify names. + + +Format +*/ +identifier ::= + actual_identifier + +actual_identifier ::= + regular_identifier + | delimited_identifier + | Unicode_delimited_identifier + +SQL_language_identifier ::= + SQL_language_identifier_start SQL_language_identifier_part* + +SQL_language_identifier_start ::= + simple_Latin_letter + +SQL_language_identifier_part ::= + simple_Latin_letter + | digit + | underscore + +authorization_identifier ::= + role_name + | user_identifier + +table_name ::= + local_or_schema_qualified_name + +domain_name ::= + schema_qualified_name + +schema_name ::= + ( catalog_name period )? unqualified_schema_name + +unqualified_schema_name ::= + identifier + +catalog_name ::= + identifier + +schema_qualified_name ::= + ( schema_name period )? qualified_identifier + +local_or_schema_qualified_name ::= + ( local_or_schema_qualifier period )? qualified_identifier + +local_or_schema_qualifier ::= + schema_name + | local_qualifier + +qualified_identifier ::= + identifier + +column_name ::= + identifier + +correlation_name ::= + identifier + +query_name ::= + identifier + +SQL_client_module_name ::= + identifier + +procedure_name ::= + identifier + +schema_qualified_routine_name ::= + schema_qualified_name + +method_name ::= + identifier + +specific_name ::= + schema_qualified_name + +cursor_name ::= + local_qualified_name + +local_qualified_name ::= + ( local_qualifier period )? qualified_identifier + +local_qualifier ::= + MODULE + +host_parameter_name ::= + colon identifier + +SQL_parameter_name ::= + identifier + +constraint_name ::= + schema_qualified_name + +external_routine_name ::= + identifier + | character_string_literal + +trigger_name ::= + schema_qualified_name + +collation_name ::= + schema_qualified_name + +character_set_name ::= + ( schema_name period )? SQL_language_identifier + +transliteration_name ::= + schema_qualified_name + +transcoding_name ::= + schema_qualified_name + +schema_resolved_user_defined_type_name ::= + user_defined_type_name + +user_defined_type_name ::= + ( schema_name period )? qualified_identifier + +attribute_name ::= + identifier + +field_name ::= + identifier + +savepoint_name ::= + identifier + +sequence_generator_name ::= + schema_qualified_name + +role_name ::= + identifier + +user_identifier ::= + identifier + +connection_name ::= + simple_value_specification + +SQL_server_name ::= + simple_value_specification + +connection_user_name ::= + simple_value_specification + +SQL_statement_name ::= + statement_name + | extended_statement_name + +statement_name ::= + identifier + +extended_statement_name ::= + scope_option? simple_value_specification + +dynamic_cursor_name ::= + conventional_dynamic_cursor_name + | PTF_cursor_name + +conventional_dynamic_cursor_name ::= + cursor_name + | extended_cursor_name + +extended_cursor_name ::= + scope_option? simple_value_specification + +PTF_cursor_name ::= + PTF simple_value_specification + +descriptor_name ::= + conventional_descriptor_name + | PTF_descriptor_name + +conventional_descriptor_name ::= + non_extended_descriptor_name + | extended_descriptor_name + +non_extended_descriptor_name ::= + identifier + +extended_descriptor_name ::= + scope_option? simple_value_specification + +scope_option ::= + GLOBAL + | LOCAL + +PTF_descriptor_name ::= + PTF simple_value_specification + +window_name ::= + identifier + +row_pattern_variable_name ::= + correlation_name + +measure_name ::= + identifier +/* +6 Scalar expressions + + +6.1 data_type + +Function +Specify a data type. + + +Format +*/ +data_type ::= + predefined_type + | row_type + | path_resolved_user_defined_type_name + | reference_type + | collection_type + +predefined_type ::= + character_string_type ( CHARACTER SET character_set_specification )? + collate_clause? + | national_character_string_type collate_clause? + | binary_string_type + | numeric_type + | boolean_type + | datetime_type + | interval_type + +character_string_type ::= + CHARACTER ( left_paren character_length right_paren )? + | CHAR ( left_paren character_length right_paren )? + | CHARACTER VARYING left_paren character_length right_paren + | CHAR VARYING left_paren character_length right_paren + | VARCHAR left_paren character_length right_paren + | character_large_object_type + +character_large_object_type ::= + CHARACTER LARGE OBJECT ( left_paren character_large_object_length right_paren )? + | CHAR LARGE OBJECT ( left_paren character_large_object_length right_paren )? + | CLOB ( left_paren character_large_object_length right_paren )? + +national_character_string_type ::= + NATIONAL CHARACTER ( left_paren character_length right_paren )? + | NATIONAL CHAR ( left_paren character_length right_paren )? + | NCHAR ( left_paren character_length right_paren )? + | NATIONAL CHARACTER VARYING left_paren character_length right_paren + | NATIONAL CHAR VARYING left_paren character_length right_paren + | NCHAR VARYING left_paren character_length right_paren + | national_character_large_object_type + +national_character_large_object_type ::= + NATIONAL CHARACTER LARGE OBJECT ( left_paren character_large_object_length right_paren )? + | NCHAR LARGE OBJECT ( left_paren character_large_object_length right_paren )? + | NCLOB ( left_paren character_large_object_length right_paren )? + +binary_string_type ::= + BINARY ( left_paren length right_paren )? + | BINARY VARYING left_paren length right_paren + | VARBINARY left_paren length right_paren + | binary_large_object_string_type + +binary_large_object_string_type ::= + BINARY LARGE OBJECT ( left_paren large_object_length right_paren )? + | BLOB ( left_paren large_object_length right_paren )? + +numeric_type ::= + exact_numeric_type + | approximate_numeric_type + | decimal_floating_point_type + +exact_numeric_type ::= + NUMERIC ( left_paren precision ( comma scale )? right_paren )? + | DECIMAL ( left_paren precision ( comma scale )? right_paren )? + | DEC ( left_paren precision ( comma scale)? right_paren )? + | SMALLINT + | INTEGER + | INT + | BIGINT + +approximate_numeric_type ::= + FLOAT ( left_paren precision right_paren )? + | REAL + | DOUBLE PRECISION + +decimal_floating_point_type ::= + DECFLOAT ( left_paren precision right_paren )? + +length ::= + unsigned_integer + +character_length ::= + length char_length_units? + +large_object_length ::= + unsigned_integer multiplier? + | large_object_length_token + +character_large_object_length ::= + large_object_length char_length_units? + +char_length_units ::= + CHARACTERS + | OCTETS + +precision ::= + unsigned_integer + +scale ::= + unsigned_integer + +boolean_type ::= + BOOLEAN + +datetime_type ::= + DATE + | TIME ( left_paren time_precision right_paren )? with_or_without_time_zone? + | TIMESTAMP ( left_paren timestamp_precision right_paren )? + with_or_without_time_zone? + +with_or_without_time_zone ::= + WITH TIME ZONE + | WITHOUT TIME ZONE + +time_precision ::= + time_fractional_seconds_precision + +timestamp_precision ::= + time_fractional_seconds_precision + +time_fractional_seconds_precision ::= + unsigned_integer + +interval_type ::= + INTERVAL interval_qualifier + +row_type ::= + ROW row_type_body + +row_type_body ::= + left_paren field_definition ( comma field_definition )* right_paren + +reference_type ::= + REF left_paren referenced_type right_paren scope_clause? + +scope_clause ::= + SCOPE table_name + +referenced_type ::= + path_resolved_user_defined_type_name + +path_resolved_user_defined_type_name ::= + user_defined_type_name + +collection_type ::= + array_type + | multiset_type + +array_type ::= + data_type ARRAY + ( left_bracket_or_trigraph maximum_cardinality right_bracket_or_trigraph )? + +maximum_cardinality ::= + unsigned_integer + +multiset_type ::= + data_type MULTISET +/* +6.2 field_definition + +Function +Define a field of a row type. + + +Format +*/ +field_definition ::= + field_name data_type +/* +6.3 value_expression_primary + +Function +Specify a value that is syntactically self-delimited. + + +Format +*/ +value_expression_primary ::= + parenthesized_value_expression + | nonparenthesized_value_expression_primary + +parenthesized_value_expression ::= + left_paren value_expression right_paren + +nonparenthesized_value_expression_primary ::= + unsigned_value_specification + | column_reference + | set_function_specification + | window_function + | nested_window_function + | scalar_subquery + | case_expression + | cast_specification + | field_reference + | subtype_treatment + | method_invocation + | static_method_invocation + | new_specification + | attribute_or_method_reference + | reference_resolution + | collection_value_constructor + | array_element_reference + | multiset_element_reference + | next_value_expression + | routine_invocation + | row_pattern_navigation_operation + | JSON_value_function + +collection_value_constructor ::= + array_value_constructor + | multiset_value_constructor +/* +6.4 value_specification and target_specification + +Function +Specify one or more values, host parameters, SQL parameters, dynamic parameters, or host variables. + + +Format +*/ +value_specification ::= + literal + | general_value_specification + +unsigned_value_specification ::= + unsigned_literal + | general_value_specification + +general_value_specification ::= + host_parameter_specification + | SQL_parameter_reference + | dynamic_parameter_specification + | embedded_variable_specification + | current_collation_specification + | CURRENT_CATALOG + | CURRENT_DEFAULT_TRANSFORM_GROUP + | CURRENT_PATH + | CURRENT_ROLE + | CURRENT_SCHEMA + | CURRENT_TRANSFORM_GROUP_FOR_TYPE path_resolved_user_defined_type_name + | CURRENT_USER + | SESSION_USER + | SYSTEM_USER + | USER + | VALUE + +simple_value_specification ::= + literal + | host_parameter_name + | SQL_parameter_reference + | embedded_variable_name + +target_specification ::= + host_parameter_specification + | SQL_parameter_reference + | column_reference + | target_array_element_specification + | dynamic_parameter_specification + | embedded_variable_specification + +simple_target_specification ::= + host_parameter_name + | SQL_parameter_reference + | column_reference + | embedded_variable_name + +host_parameter_specification ::= + host_parameter_name indicator_parameter? + +dynamic_parameter_specification ::= + question_mark + +embedded_variable_specification ::= + embedded_variable_name indicator_variable? + +indicator_variable ::= + INDICATOR? embedded_variable_name + +indicator_parameter ::= + INDICATOR? host_parameter_name + +target_array_element_specification ::= + target_array_reference + left_bracket_or_trigraph simple_value_specification right_bracket_or_trigraph + +target_array_reference ::= + SQL_parameter_reference + | column_reference + +current_collation_specification ::= + COLLATION FOR left_paren string_value_expression right_paren +/* +6.5 contextually_typed_value_specification + +Function +Specify a value whose data type is to be inferred from its context. + + +Format +*/ +contextually_typed_value_specification ::= + implicitly_typed_value_specification + | default_specification + +implicitly_typed_value_specification ::= + null_specification + | empty_specification + +null_specification ::= + NULL + +empty_specification ::= + ARRAY left_bracket_or_trigraph right_bracket_or_trigraph + | MULTISET left_bracket_or_trigraph right_bracket_or_trigraph + +default_specification ::= + DEFAULT +/* +6.6 identifier_chain + +Function +Disambiguate a -separated chain of identifiers. + + +Format +*/ +identifier_chain ::= + identifier ( period identifier )* + +basic_identifier_chain ::= + identifier_chain +/* +6.7 column_reference + +Function +Reference a column. + + +Format +*/ +column_reference ::= + basic_identifier_chain + | MODULE period qualified_identifier period column_name +/* +6.8 SQL_parameter_reference + +Function +Reference an SQL parameter. + + +Format +*/ +SQL_parameter_reference ::= + basic_identifier_chain +/* +6.9 set_function_specification + +Function +Specify a value derived by the application of a function to an argument. + + +Format +*/ +set_function_specification ::= + running_or_final? aggregate_function + | grouping_operation + +running_or_final ::= + RUNNING | FINAL + +grouping_operation ::= + GROUPING left_paren column_reference + ( comma column_reference )* right_paren +/* +6.10 window_function + +Function +Specify a window function. + + +Format +*/ +window_function ::= + window_function_type OVER window_name_or_specification + +window_function_type ::= + rank_function_type left_paren right_paren + | ROW_NUMBER left_paren right_paren + | aggregate_function + | ntile_function + | lead_or_lag_function + | first_or_last_value_function + | nth_value_function + | window_row_pattern_measure + +rank_function_type ::= + RANK + | DENSE_RANK + | PERCENT_RANK + | CUME_DIST + +ntile_function ::= + NTILE left_paren number_of_tiles right_paren + +number_of_tiles ::= + simple_value_specification + | dynamic_parameter_specification + +lead_or_lag_function ::= + lead_or_lag left_paren lead_or_lag_extent + ( comma offset ( comma default_expression )? )? right_paren + null_treatment? + +lead_or_lag ::= + LEAD | LAG + +lead_or_lag_extent ::= + value_expression + +offset ::= + exact_numeric_literal + +default_expression ::= + value_expression + +null_treatment ::= + RESPECT NULLS | IGNORE NULLS + +first_or_last_value_function ::= + first_or_last_value left_paren value_expression right_paren null_treatment? + +first_or_last_value ::= + FIRST_VALUE | LAST_VALUE + +nth_value_function ::= + NTH_VALUE left_paren value_expression comma nth_row right_paren + from_first_or_last? null_treatment? + +nth_row ::= + simple_value_specification + | dynamic_parameter_specification + +from_first_or_last ::= + FROM FIRST + | FROM LAST + +window_name_or_specification ::= + window_name + | in_line_window_specification + +in_line_window_specification ::= + window_specification + +window_row_pattern_measure ::= + measure_name +/* +6.11 nested_window_function + +Function +Specify a function nested in an aggregated argument of an aggregate_function simply contained in a . + + +Format +*/ +nested_window_function ::= + nested_row_number_function + | value_of_expression_at_row + +nested_row_number_function ::= + ROW_NUMBER left_paren row_marker right_paren + +value_of_expression_at_row ::= + VALUE_OF left_paren value_expression AT row_marker_expression + ( comma value_of_default_value ) right_paren + +row_marker ::= + BEGIN_PARTITION + | BEGIN_FRAME + | CURRENT_ROW + | FRAME_ROW + | END_FRAME + | END_PARTITION + +row_marker_expression ::= + row_marker row_marker_delta? + +row_marker_delta ::= + plus_sign row_marker_offset + | minus_sign row_marker_offset + +row_marker_offset ::= + simple_value_specification + | dynamic_parameter_specification + +value_of_default_value ::= + value_expression +/* +6.12 case_expression + +Function +Specify a conditional value. + + +Format +*/ +case_expression ::= + case_abbreviation + | case_specification + +case_abbreviation ::= + NULLIF left_paren value_expression comma value_expression right_paren + | COALESCE left_paren value_expression + ( comma value_expression )* right_paren + +case_specification ::= + simple_case + | searched_case + +simple_case ::= + CASE case_operand simple_when_clause+ else_clause? END + +searched_case ::= + CASE searched_when_clause+ else_clause? END + +simple_when_clause ::= + WHEN when_operand_list THEN result + +searched_when_clause ::= + WHEN search_condition THEN result + +else_clause ::= + ELSE result + +case_operand ::= + row_value_predicand + | overlaps_predicate_part_1 + +when_operand_list ::= + when_operand ( comma when_operand )* + +when_operand ::= + row_value_predicand + | comparison_predicate_part_2 + | between_predicate_part_2 + | in_predicate_part_2 + | character_like_predicate_part_2 + | octet_like_predicate_part_2 + | similar_predicate_part_2 + | regex_like_predicate_part_2 + | null_predicate_part_2 + | quantified_comparison_predicate_part_2 + | normalized_predicate_part_2 + | match_predicate_part_2 + | overlaps_predicate_part_2 + | distinct_predicate_part_2 + | member_predicate_part_2 + | submultiset_predicate_part_2 + | set_predicate_part_2 + | type_predicate_part_2 + +result ::= + result_expression + | NULL + +result_expression ::= + value_expression +/* +6.13 cast_specification + +Function +Specify a data conversion. + + +Format +*/ +cast_specification ::= + CAST left_paren + cast_operand AS cast_target + ( FORMAT cast_template )? + right_paren + +cast_operand ::= + value_expression + | implicitly_typed_value_specification + +cast_target ::= + domain_name + | data_type + +cast_template ::= + character_string_literal +/* +6.14 next_value_expression + +Function +Return the next value of a sequence generator. + + +Format +*/ +next_value_expression ::= + NEXT VALUE FOR sequence_generator_name +/* +6.15 field_reference + +Function +Reference a field of a row value. + + +Format +*/ +field_reference ::= + value_expression_primary period field_name +/* +6.16 subtype_treatment + +Function +Modify the declared type of an expression. + + +Format +*/ +subtype_treatment ::= + TREAT left_paren subtype_operand AS target_subtype right_paren + +subtype_operand ::= + value_expression + +target_subtype ::= + path_resolved_user_defined_type_name + | reference_type +/* +6.17 method_invocation + +Function +Reference an SQL-invoked method of a user-defined type value. + + +Format +*/ +method_invocation ::= + direct_invocation + | generalized_invocation + +direct_invocation ::= + value_expression_primary period method_name SQL_argument_list? + +generalized_invocation ::= + left_paren value_expression_primary AS data_type right_paren + period method_name SQL_argument_list? + +method_selection ::= + routine_invocation + +constructor_method_selection ::= + routine_invocation +/* +6.18 static_method_invocation + +Function +Invoke a static method. + + +Format +*/ +static_method_invocation ::= + path_resolved_user_defined_type_name double_colon method_name + SQL_argument_list? + +static_method_selection ::= + routine_invocation +/* +6.19 new_specification + +Function +Invoke a method on a structured type. + + +Format +*/ +new_specification ::= + NEW path_resolved_user_defined_type_name SQL_argument_list + +new_invocation ::= + method_invocation + | routine_invocation +/* +6.20 attribute_or_method_reference + +Function +Return a value acquired by accessing a column of the row identified by a value of a reference type or by +invoking an SQL-invoked method. + + +Format +*/ +attribute_or_method_reference ::= + value_expression_primary dereference_operator qualified_identifier + SQL_argument_list? + +dereference_operator ::= + right_arrow +/* +6.21 dereference_operation + +Function +Access a column of the row identified by a value of a reference type. + + +Format +*/ +dereference_operation ::= + reference_value_expression dereference_operator attribute_name +/* +6.22 method_reference + +Function +Return a value acquired from invoking an SQL-invoked routine that is a method. + + +Format +*/ +method_reference ::= + value_expression_primary dereference_operator method_name SQL_argument_list +/* +6.23 reference_resolution + +Function +Obtain the value referenced by a REF value. + + +Format +*/ +reference_resolution ::= + DEREF left_paren reference_value_expression right_paren +/* +6.24 array_element_reference + +Function +Return an element of an array. + + +Format +*/ +array_element_reference ::= + array_value_expression + left_bracket_or_trigraph numeric_value_expression right_bracket_or_trigraph +/* +6.25 multiset_element_reference + +Function +Return the sole element of a multiset of one element. + + +Format +*/ +multiset_element_reference ::= + ELEMENT left_paren multiset_value_expression right_paren +/* +6.26 row_pattern_navigation_operation + +Function +Return the value of a value expression evaluated in a row determined by navigation within the row pattern +partition using logical and physical offsets from a row mapped to a row pattern variable. + + +Format +*/ +row_pattern_navigation_operation ::= + row_pattern_navigation__logical + | row_pattern_navigation__physical + | row_pattern_navigation__compound + +row_pattern_navigation__logical ::= + running_or_final? first_or_last + left_paren value_expression ( comma logical_offset )? right_paren + +row_pattern_navigation__physical ::= + prev_or_next + left_paren value_expression ( comma physical_offset )? right_paren + +row_pattern_navigation__compound ::= + prev_or_next left_paren running_or_final? first_or_last + left_paren value_expression ( comma logical_offset )? right_paren + ( comma physical_offset )? right_paren + +first_or_last ::= + FIRST | LAST + +prev_or_next ::= + PREV | NEXT + +logical_offset ::= + simple_value_specification + | dynamic_parameter_specification + +physical_offset ::= + simple_value_specification + | dynamic_parameter_specification +/* +6.27 JSON_value_function + +Function +Extract an SQL value of a predefined type from a JSON value. + + +Format +*/ +JSON_value_function ::= + JSON_VALUE left_paren + JSON_API_common_syntax + JSON_returning_clause? + ( JSON_value_empty_behavior ON EMPTY )? + ( JSON_value_error_behavior ON ERROR )? + right_paren + +JSON_returning_clause ::= + RETURNING data_type + +JSON_value_empty_behavior ::= + ERROR + | NULL + | DEFAULT value_expression + +JSON_value_error_behavior ::= + ERROR + | NULL + | DEFAULT value_expression +/* +6.28 value_expression + +Function +Specify a value. + + +Format +*/ +value_expression ::= + common_value_expression + | boolean_value_expression + | row_value_expression + +common_value_expression ::= + numeric_value_expression + | string_value_expression + | datetime_value_expression + | interval_value_expression + | user_defined_type_value_expression + | reference_value_expression + | collection_value_expression + +user_defined_type_value_expression ::= + value_expression_primary + +reference_value_expression ::= + value_expression_primary + +collection_value_expression ::= + array_value_expression + | multiset_value_expression +/* +6.29 numeric_value_expression + +Function +Specify a numeric value. + + +Format +*/ +numeric_value_expression ::= + term + | numeric_value_expression plus_sign term + | numeric_value_expression minus_sign term + +term ::= + factor + | term asterisk factor + | term solidus factor + +factor ::= + sign? numeric_primary + +numeric_primary ::= + value_expression_primary + | numeric_value_function +/* +6.30 numeric_value_function + +Function +Specify a function yielding a value of type numeric. + + +Format +*/ +numeric_value_function ::= + position_expression + | regex_occurrences_function + | regex_position_expression + | extract_expression + | length_expression + | cardinality_expression + | max_cardinality_expression + | absolute_value_expression + | modulus_expression + | trigonometric_function + | general_logarithm_function + | common_logarithm + | natural_logarithm + | exponential_function + | power_function + | square_root + | floor_function + | ceiling_function + | width_bucket_function + | match_number_function + +position_expression ::= + character_position_expression + | binary_position_expression + +regex_occurrences_function ::= + OCCURRENCES_REGEX left_paren + XQuery_pattern ( FLAG XQuery_option_flag )? + IN regex_subject_string + ( FROM start_position )? + ( USING char_length_units )? + right_paren + +XQuery_pattern ::= + character_value_expression + +XQuery_option_flag ::= + character_value_expression + +regex_subject_string ::= + character_value_expression + +regex_position_expression ::= + POSITION_REGEX left_paren + ( regex_position_start_or_after )? + XQuery_pattern ( FLAG XQuery_option_flag )? + IN regex_subject_string + ( FROM start_position )? + ( USING char_length_units )? + ( OCCURRENCE regex_occurrence )? + ( GROUP regex_capture_group )? + right_paren + +regex_position_start_or_after ::= + START + | AFTER + +regex_occurrence ::= + numeric_value_expression + +regex_capture_group ::= + numeric_value_expression + +character_position_expression ::= + POSITION left_paren character_value_expression_1 IN character_value_expression_2 + ( USING char_length_units )? right_paren + +character_value_expression_1 ::= + character_value_expression + +character_value_expression_2 ::= + character_value_expression + +binary_position_expression ::= + POSITION left_paren binary_value_expression IN binary_value_expression right_paren + +length_expression ::= + char_length_expression + | octet_length_expression + +char_length_expression ::= + ( CHAR_LENGTH | CHARACTER_LENGTH ) left_paren character_value_expression + ( USING char_length_units )? right_paren + +octet_length_expression ::= + OCTET_LENGTH left_paren string_value_expression right_paren + +extract_expression ::= + EXTRACT left_paren extract_field FROM extract_source right_paren + +extract_field ::= + primary_datetime_field + | time_zone_field + +time_zone_field ::= + TIMEZONE_HOUR + | TIMEZONE_MINUTE + +extract_source ::= + datetime_value_expression + | interval_value_expression + +cardinality_expression ::= + CARDINALITY left_paren collection_value_expression right_paren + +max_cardinality_expression ::= + ARRAY_MAX_CARDINALITY left_paren array_value_expression right_paren + +absolute_value_expression ::= + ABS left_paren numeric_value_expression right_paren + +modulus_expression ::= + MOD left_paren numeric_value_expression_dividend comma + numeric_value_expression_divisor right_paren + +numeric_value_expression_dividend ::= + numeric_value_expression + +numeric_value_expression_divisor ::= + numeric_value_expression + +trigonometric_function ::= + trigonometric_function_name left_paren numeric_value_expression right_paren + +trigonometric_function_name ::= + SIN | COS | TAN | SINH | COSH | TANH | ASIN | ACOS | ATAN + +general_logarithm_function ::= + LOG left_paren general_logarithm_base comma + general_logarithm_argument right_paren + +general_logarithm_base ::= + numeric_value_expression + +general_logarithm_argument ::= + numeric_value_expression + +common_logarithm ::= + "LOG10" left_paren numeric_value_expression right_paren + +natural_logarithm ::= + LN left_paren numeric_value_expression right_paren + +exponential_function ::= + EXP left_paren numeric_value_expression right_paren + +power_function ::= + POWER left_paren numeric_value_expression_base comma + numeric_value_expression_exponent right_paren + +numeric_value_expression_base ::= + numeric_value_expression + +numeric_value_expression_exponent ::= + numeric_value_expression + +square_root ::= + SQRT left_paren numeric_value_expression right_paren + +floor_function ::= + FLOOR left_paren numeric_value_expression right_paren + +ceiling_function ::= + ( CEIL | CEILING ) left_paren numeric_value_expression right_paren + +width_bucket_function ::= + WIDTH_BUCKET left_paren width_bucket_operand comma width_bucket_bound_1 comma + width_bucket_bound_2 comma width_bucket_count right_paren + +width_bucket_operand ::= + numeric_value_expression + +width_bucket_bound_1 ::= + numeric_value_expression + +width_bucket_bound_2 ::= + numeric_value_expression + +width_bucket_count ::= + numeric_value_expression + +match_number_function ::= + MATCH_NUMBER left_paren right_paren +/* +6.31 string_value_expression + +Function +Specify a character string value or a binary string value. + + +Format +*/ +string_value_expression ::= + character_value_expression + | binary_value_expression + +character_value_expression ::= + concatenation + | character_factor + +concatenation ::= + character_value_expression concatenation_operator character_factor + +character_factor ::= + character_primary collate_clause? + +character_primary ::= + value_expression_primary + | string_value_function + +binary_value_expression ::= + binary_concatenation + | binary_factor + +binary_factor ::= + binary_primary + +binary_primary ::= + value_expression_primary + | string_value_function + +binary_concatenation ::= + binary_value_expression concatenation_operator binary_factor +/* +6.32 string_value_function + +Function +Specify a function yielding a value of type character string or binary string. + + +Format +*/ +string_value_function ::= + character_value_function + | binary_value_function + | JSON_value_constructor + | JSON_query + +character_value_function ::= + character_substring_function + | regular_expression_substring_function + | regex_substring_function + | fold + | transcoding + | character_transliteration + | regex_transliteration + | trim_function + | character_overlay_function + | normalize_function + | specific_type_method + | classifier_function + +character_substring_function ::= + SUBSTRING left_paren character_value_expression FROM start_position + ( FOR string_length )? ( USING char_length_units )? right_paren + +regular_expression_substring_function ::= + SUBSTRING left_paren character_value_expression SIMILAR character_value_expression + ESCAPE escape_character right_paren + +regex_substring_function ::= + SUBSTRING_REGEX left_paren + XQuery_pattern ( FLAG XQuery_option_flag )? + IN regex_subject_string + ( FROM start_position )? + ( USING char_length_units )? + ( OCCURRENCE regex_occurrence )? + ( GROUP regex_capture_group )? + right_paren + +fold ::= + ( UPPER | LOWER ) left_paren character_value_expression right_paren + +transcoding ::= + CONVERT left_paren character_value_expression + USING transcoding_name right_paren + +character_transliteration ::= + TRANSLATE left_paren character_value_expression + USING transliteration_name right_paren + +regex_transliteration ::= + TRANSLATE_REGEX left_paren + XQuery_pattern ( FLAG XQuery_option_flag )? + IN regex_subject_string + ( WITH XQuery_replacement_string )? + ( FROM start_position )? + ( USING char_length_units )? + ( OCCURRENCE regex_transliteration_occurrence )? + right_paren + +XQuery_replacement_string ::= + character_value_expression + +regex_transliteration_occurrence ::= + regex_occurrence + | ALL + +trim_function ::= + TRIM left_paren trim_operands right_paren + +trim_operands ::= + ( trim_specification? trim_character? FROM )? trim_source + +trim_source ::= + character_value_expression + +trim_specification ::= + LEADING + | TRAILING + | BOTH + +trim_character ::= + character_value_expression + +character_overlay_function ::= + OVERLAY left_paren character_value_expression PLACING character_value_expression + FROM start_position ( FOR string_length )? + ( USING char_length_units )? right_paren + +normalize_function ::= + NORMALIZE left_paren character_value_expression + ( comma normal_form ( comma normalize_function_result_length )? )? right_paren + +normal_form ::= + NFC + | NFD + | NFKC + | NFKD + +normalize_function_result_length ::= + character_length + | character_large_object_length + +specific_type_method ::= + user_defined_type_value_expression period SPECIFICTYPE + ( left_paren right_paren )? + +binary_value_function ::= + binary_substring_function + | binary_trim_function + | binary_overlay_function + +binary_substring_function ::= + SUBSTRING left_paren binary_value_expression FROM start_position + ( FOR string_length )? right_paren + +binary_trim_function ::= + TRIM left_paren binary_trim_operands right_paren + +binary_trim_operands ::= + ( trim_specification? trim_octet? FROM )? binary_trim_source + +binary_trim_source ::= + binary_value_expression + +trim_octet ::= + binary_value_expression + +binary_overlay_function ::= + OVERLAY left_paren binary_value_expression PLACING binary_value_expression + FROM start_position ( FOR string_length )? right_paren + +start_position ::= + numeric_value_expression + +string_length ::= + numeric_value_expression + +classifier_function ::= + CLASSIFIER left_paren ( row_pattern_variable_name )? right_paren +/* +6.33 JSON_value_constructor + +Function +Generate a JSON text fragment. + + +Format +*/ +JSON_value_constructor ::= + JSON_object_constructor + | JSON_array_constructor + +JSON_object_constructor ::= + JSON_OBJECT left_paren + ( JSON_name_and_value ( comma JSON_name_and_value )* + JSON_constructor_null_clause? + JSON_key_uniqueness_constraint? )? + JSON_output_clause? + right_paren + +JSON_name_and_value ::= + KEY? JSON_name VALUE JSON_value_expression + | JSON_name colon JSON_value_expression + +JSON_name ::= + character_value_expression + +JSON_constructor_null_clause ::= + NULL ON NULL + | ABSENT ON NULL + +JSON_array_constructor ::= + JSON_array_constructor_by_enumeration + | JSON_array_constructor_by_query + +JSON_array_constructor_by_enumeration ::= + JSON_ARRAY left_paren + ( JSON_value_expression ( comma JSON_value_expression )* + JSON_constructor_null_clause? )? + JSON_output_clause? + right_paren + +JSON_array_constructor_by_query ::= + JSON_ARRAY left_paren + query_expression + JSON_input_clause? + JSON_constructor_null_clause? + JSON_output_clause? + right_paren +/* +6.34 JSON_query + +Function +Extract a JSON text from a JSON text using an SQL/JSON path expression. + + +Format +*/ +JSON_query ::= + JSON_QUERY left_paren + JSON_API_common_syntax + JSON_output_clause? + ( JSON_query_wrapper_behavior WRAPPER )? + ( JSON_query_quotes_behavior QUOTES ( ON SCALAR STRING )? )? + ( JSON_query_empty_behavior ON EMPTY )? + ( JSON_query_error_behavior ON ERROR )? + right_paren + +JSON_query_wrapper_behavior ::= + WITHOUT ARRAY? + | WITH ( CONDITIONAL | UNCONDITIONAL )? ARRAY? + +JSON_query_quotes_behavior ::= + KEEP + | OMIT + +JSON_query_empty_behavior ::= + ERROR + | NULL + | EMPTY ARRAY + | EMPTY OBJECT + +JSON_query_error_behavior ::= + ERROR + | NULL + | EMPTY ARRAY + | EMPTY OBJECT +/* +6.35 datetime_value_expression + +Function +Specify a datetime value. + + +Format +*/ +datetime_value_expression ::= + datetime_term + | interval_value_expression plus_sign datetime_term + | datetime_value_expression plus_sign interval_term + | datetime_value_expression minus_sign interval_term + +datetime_term ::= + datetime_factor + +datetime_factor ::= + datetime_primary time_zone? + +datetime_primary ::= + value_expression_primary + | datetime_value_function + +time_zone ::= + AT time_zone_specifier + +time_zone_specifier ::= + LOCAL + | TIME ZONE interval_primary +/* +6.36 datetime_value_function + +Function +Specify a function yielding a value of type datetime. + + +Format +*/ +datetime_value_function ::= + current_date_value_function + | current_time_value_function + | current_timestamp_value_function + | current_local_time_value_function + | current_local_timestamp_value_function + +current_date_value_function ::= + CURRENT_DATE + +current_time_value_function ::= + CURRENT_TIME ( left_paren time_precision right_paren )? + +current_local_time_value_function ::= + LOCALTIME ( left_paren time_precision right_paren )? + +current_timestamp_value_function ::= + CURRENT_TIMESTAMP ( left_paren timestamp_precision right_paren )? + +current_local_timestamp_value_function ::= + LOCALTIMESTAMP ( left_paren timestamp_precision right_paren )? +/* +6.37 interval_value_expression + +Function +Specify an interval value. + + +Format +*/ +interval_value_expression ::= + interval_term + | interval_value_expression_1 plus_sign interval_term_1 + | interval_value_expression_1 minus_sign interval_term_1 + | left_paren datetime_value_expression minus_sign datetime_term right_paren + interval_qualifier + +interval_term ::= + interval_factor + | interval_term_2 asterisk factor + | interval_term_2 solidus factor + | term asterisk interval_factor + +interval_factor ::= + sign? interval_primary + +interval_primary ::= + value_expression_primary interval_qualifier? + | interval_value_function + +interval_value_expression_1 ::= + interval_value_expression + +interval_term_1 ::= + interval_term + +interval_term_2 ::= + interval_term +/* +6.38 interval_value_function + +Function +Specify a function yielding a value of type interval. + + +Format +*/ +interval_value_function ::= + interval_absolute_value_function + +interval_absolute_value_function ::= + ABS left_paren interval_value_expression right_paren +/* +6.39 boolean_value_expression + +Function +Specify a boolean value. + + +Format +*/ +boolean_value_expression ::= + boolean_term + | boolean_value_expression OR boolean_term + +boolean_term ::= + boolean_factor + | boolean_term AND boolean_factor + +boolean_factor ::= + NOT? boolean_test + +boolean_test ::= + boolean_primary ( IS NOT? truth_value )? + +truth_value ::= + TRUE + | FALSE + | UNKNOWN + +boolean_primary ::= + predicate + | boolean_predicand + +boolean_predicand ::= + parenthesized_boolean_value_expression + | nonparenthesized_value_expression_primary + +parenthesized_boolean_value_expression ::= + left_paren boolean_value_expression right_paren +/* +6.40 array_value_expression + +Function +Specify an array value. + + +Format +*/ +array_value_expression ::= + array_concatenation + | array_primary + +array_concatenation ::= + array_value_expression_1 concatenation_operator array_primary + +array_value_expression_1 ::= + array_value_expression + +array_primary ::= + array_value_function + | value_expression_primary +/* +6.41 array_value_function + +Function +Specify a function yielding a value of an array type. + + +Format +*/ +array_value_function ::= + trim_array_function + +trim_array_function ::= + TRIM_ARRAY left_paren array_value_expression comma numeric_value_expression right_paren +/* +6.42 array_value_constructor + +Function +Specify construction of an array. + + +Format +*/ +array_value_constructor ::= + array_value_constructor_by_enumeration + | array_value_constructor_by_query + +array_value_constructor_by_enumeration ::= + ARRAY left_bracket_or_trigraph array_element_list right_bracket_or_trigraph + +array_element_list ::= + array_element ( comma array_element )* + +array_element ::= + value_expression + +array_value_constructor_by_query ::= + ARRAY table_subquery +/* +6.43 multiset_value_expression + +Function +Specify a multiset value. + + +Format +*/ +multiset_value_expression ::= + multiset_term + | multiset_value_expression MULTISET UNION ( ALL | DISTINCT )? multiset_term + | multiset_value_expression MULTISET EXCEPT ( ALL | DISTINCT )? multiset_term + +multiset_term ::= + multiset_primary + | multiset_term MULTISET INTERSECT ( ALL | DISTINCT )? multiset_primary + +multiset_primary ::= + multiset_value_function + | value_expression_primary +/* +6.44 multiset_value_function + +Function +Specify a function yielding a value of a multiset type. + + +Format +*/ +multiset_value_function ::= + multiset_set_function + +multiset_set_function ::= + SET left_paren multiset_value_expression right_paren +/* +6.45 multiset_value_constructor + +Function +Specify construction of a multiset. + + +Format +*/ +multiset_value_constructor ::= + multiset_value_constructor_by_enumeration + | multiset_value_constructor_by_query + | table_value_constructor_by_query + +multiset_value_constructor_by_enumeration ::= + MULTISET left_bracket_or_trigraph multiset_element_list right_bracket_or_trigraph + +multiset_element_list ::= + multiset_element ( comma multiset_element )* + +multiset_element ::= + value_expression + +multiset_value_constructor_by_query ::= + MULTISET table_subquery + +table_value_constructor_by_query ::= + TABLE table_subquery +/* +7 Query expressions + + +7.1 row_value_constructor + +Function +Specify a value or list of values to be constructed into a row. + + +Format +*/ +row_value_constructor ::= + common_value_expression + | boolean_value_expression + | explicit_row_value_constructor + +explicit_row_value_constructor ::= + left_paren row_value_constructor_element comma + row_value_constructor_element_list right_paren + | ROW left_paren row_value_constructor_element_list right_paren + | row_subquery + +row_value_constructor_element_list ::= + row_value_constructor_element ( comma row_value_constructor_element )* + +row_value_constructor_element ::= + value_expression + +contextually_typed_row_value_constructor ::= + common_value_expression + | boolean_value_expression + | contextually_typed_value_specification + | left_paren contextually_typed_value_specification right_paren + | left_paren contextually_typed_row_value_constructor_element comma + contextually_typed_row_value_constructor_element_list right_paren + | ROW left_paren contextually_typed_row_value_constructor_element_list right_paren + +contextually_typed_row_value_constructor_element_list ::= + contextually_typed_row_value_constructor_element + ( comma contextually_typed_row_value_constructor_element )* + +contextually_typed_row_value_constructor_element ::= + value_expression + | contextually_typed_value_specification + +row_value_constructor_predicand ::= + common_value_expression + | boolean_predicand + | explicit_row_value_constructor +/* +7.2 row_value_expression + +Function +Specify a row value. + + +Format +*/ +row_value_expression ::= + row_value_special_case + | explicit_row_value_constructor + +table_row_value_expression ::= + row_value_special_case + | row_value_constructor + +contextually_typed_row_value_expression ::= + row_value_special_case + | contextually_typed_row_value_constructor + +row_value_predicand ::= + row_value_special_case + | row_value_constructor_predicand + +row_value_special_case ::= + nonparenthesized_value_expression_primary +/* +7.3 table_value_constructor + +Function +Specify a set of s to be constructed into a table. + + +Format +*/ +table_value_constructor ::= + VALUES row_value_expression_list + +row_value_expression_list ::= + table_row_value_expression ( comma table_row_value_expression )* + +contextually_typed_table_value_constructor ::= + VALUES contextually_typed_row_value_expression_list + +contextually_typed_row_value_expression_list ::= + contextually_typed_row_value_expression + ( comma contextually_typed_row_value_expression )* +/* +7.4 table_expression + +Function +Specify a table or a grouped table. + + +Format +*/ +table_expression ::= + from_clause + where_clause? + group_by_clause? + having_clause? + window_clause? +/* +7.5 from_clause + +Function +Specify a table derived from one or more tables. + + +Format +*/ +from_clause ::= + FROM table_reference_list + +table_reference_list ::= + table_reference ( comma table_reference )* +/* +7.6 table_reference + +Function +Reference a table. + + +Format +*/ +table_reference ::= + table_factor + | joined_table + +table_factor ::= + table_primary sample_clause? + +sample_clause ::= + TABLESAMPLE sample_method left_paren sample_percentage right_paren + repeatable_clause? + +sample_method ::= + BERNOULLI + | SYSTEM + +repeatable_clause ::= + REPEATABLE left_paren repeat_argument right_paren + +sample_percentage ::= + numeric_value_expression + +repeat_argument ::= + numeric_value_expression + +table_primary ::= + table_or_query_name + query_system_time_period_specification? + correlation_or_recognition? + | derived_table correlation_or_recognition + | lateral_derived_table correlation_or_recognition + | collection_derived_table correlation_or_recognition + | table_function_derived_table correlation_or_recognition + | PTF_derived_table correlation_or_recognition? + | only_spec correlation_or_recognition? + | data_change_delta_table correlation_or_recognition? + | JSON_table correlation_or_recognition + | JSON_table_primitive correlation_name + | parenthesized_joined_table + +correlation_or_recognition ::= + AS? correlation_name + parenthesized_derived_column_list? + | row_pattern_recognition_clause_and_name +query_system_time_period_specification ::= + FOR SYSTEM_TIME AS OF point_in_time_1 + | FOR SYSTEM_TIME BETWEEN ( ASYMMETRIC | SYMMETRIC )? + point_in_time_1 AND point_in_time_2 + | FOR SYSTEM_TIME FROM point_in_time_1 TO point_in_time_2 + +point_in_time_1 ::= + point_in_time + +point_in_time_2 ::= + point_in_time + +point_in_time ::= + datetime_value_expression + +only_spec ::= + ONLY left_paren table_or_query_name right_paren + +lateral_derived_table ::= + LATERAL table_subquery + +collection_derived_table ::= + UNNEST left_paren collection_value_expression + ( comma collection_value_expression )* right_paren + ( WITH ORDINALITY )? + +table_function_derived_table ::= + TABLE left_paren collection_value_expression right_paren + +derived_table ::= + table_subquery + +PTF_derived_table ::= + TABLE left_paren routine_invocation right_paren + +table_or_query_name ::= + table_name + | transition_table_name + | query_name + +derived_column_list ::= + column_name_list + +column_name_list ::= + column_name ( comma column_name )* + +data_change_delta_table ::= + result_option TABLE left_paren data_change_statement right_paren + +data_change_statement ::= + delete_statement__searched + | insert_statement + | merge_statement + | update_statement__searched + +result_option ::= + FINAL + | NEW + | OLD + +parenthesized_joined_table ::= + left_paren parenthesized_joined_table right_paren + | left_paren joined_table right_paren + +row_pattern_recognition_clause_and_name ::= + ( AS? row_pattern_input_name + row_pattern_input_derived_column_list? )? + row_pattern_recognition_clause ( AS? row_pattern_output_name + row_pattern_output_derived_column_list? )? + +row_pattern_input_name ::= + correlation_name + +row_pattern_output_name ::= + correlation_name + +row_pattern_input_derived_column_list ::= + parenthesized_derived_column_list + +row_pattern_output_derived_column_list ::= + parenthesized_derived_column_list + +parenthesized_derived_column_list ::= + left_paren derived_column_list right_paren +/* +7.7 row_pattern_recognition_clause + +Function +Match row patterns. + + +Format +*/ +row_pattern_recognition_clause ::= + MATCH_RECOGNIZE left_paren + row_pattern_partition_by? + row_pattern_order_by? + row_pattern_measures? + row_pattern_rows_per_match? + row_pattern_common_syntax + right_paren + +row_pattern_partition_by ::= + PARTITION BY row_pattern_partition_list + +row_pattern_partition_list ::= + row_pattern_partition_column ( comma row_pattern_partition_column )* + +row_pattern_partition_column ::= + column_reference collate_clause? + +row_pattern_order_by ::= + ORDER BY sort_specification_list + +row_pattern_rows_per_match ::= + ONE ROW PER MATCH + | ALL ROWS PER MATCH row_pattern_empty_match_handling? + +row_pattern_empty_match_handling ::= + SHOW EMPTY MATCHES + | OMIT EMPTY MATCHES + | WITH UNMATCHED ROWS +/* +7.8 row_pattern_measures + +Function +Specify the measure columns of a row pattern. + + +Format +*/ +row_pattern_measures ::= + MEASURES row_pattern_measure_list + +row_pattern_measure_list ::= + row_pattern_measure_definition ( comma row_pattern_measure_definition )* + +row_pattern_measure_definition ::= + row_pattern_measure_expression AS measure_name + +row_pattern_measure_expression ::= + value_expression +/* +7.9 row_pattern_common_syntax + +Function +Specify syntax that is common to row patterns in table_reference and in window_clause. + + +Format +*/ +row_pattern_common_syntax ::= + ( AFTER MATCH row_pattern_skip_to )? + row_pattern_initial_or_seek? + PATTERN left_paren row_pattern right_paren + row_pattern_subset_clause? + DEFINE row_pattern_definition_list + +row_pattern_skip_to ::= + SKIP TO NEXT ROW + | SKIP PAST LAST ROW + | SKIP TO FIRST row_pattern_skip_to_variable_name + | SKIP TO LAST row_pattern_skip_to_variable_name + | SKIP TO row_pattern_skip_to_variable_name + +row_pattern_skip_to_variable_name ::= + row_pattern_variable_name + +row_pattern_initial_or_seek ::= + INITIAL + | SEEK + +row_pattern ::= + row_pattern_term + | row_pattern_alternation + +row_pattern_alternation ::= + row_pattern vertical_bar row_pattern_term + +row_pattern_term ::= + row_pattern_factor + | row_pattern_term row_pattern_factor + +row_pattern_factor ::= + row_pattern_primary row_pattern_quantifier? + +row_pattern_quantifier ::= + asterisk question_mark? + | plus_sign question_mark? + | question_mark question_mark? + | left_brace unsigned_integer? comma unsigned_integer? right_brace + question_mark? + | left_brace unsigned_integer right_brace + +row_pattern_primary ::= + row_pattern_primary_variable_name + | dollar_sign + | circumflex + | left_paren row_pattern? right_paren + | left_brace_minus row_pattern right_minus_brace + | row_pattern_permute + +row_pattern_primary_variable_name ::= + row_pattern_variable_name + +row_pattern_permute ::= + PERMUTE left_paren row_pattern ( comma row_pattern )* right_paren + +row_pattern_subset_clause ::= + SUBSET row_pattern_subset_list + +row_pattern_subset_list ::= + row_pattern_subset_item ( comma row_pattern_subset_item )* + +row_pattern_subset_item ::= + row_pattern_subset_item_variable_name equals_operator + left_paren row_pattern_subset_rhs right_paren + +row_pattern_subset_item_variable_name ::= + row_pattern_variable_name + +row_pattern_subset_rhs ::= + row_pattern_subset_rhs_variable_name + ( comma row_pattern_subset_rhs_variable_name )* + +row_pattern_subset_rhs_variable_name ::= + row_pattern_variable_name + +row_pattern_definition_list ::= + row_pattern_definition ( comma row_pattern_definition )* + +row_pattern_definition ::= + row_pattern_definition_variable_name AS row_pattern_definition_search_condition + +row_pattern_definition_variable_name ::= + row_pattern_variable_name + +row_pattern_definition_search_condition ::= + search_condition +/* +7.10 joined_table + +Function +Specify a table derived from a Cartesian product, inner join, or outer join. + + +Format +*/ +joined_table ::= + cross_join + | qualified_join + | natural_join + +cross_join ::= + table_reference CROSS JOIN table_factor + +qualified_join ::= + ( table_reference | partitioned_join_table ) + join_type? JOIN + ( table_reference | partitioned_join_table ) + join_specification + +partitioned_join_table ::= + table_factor PARTITION BY + partitioned_join_column_reference_list + +partitioned_join_column_reference_list ::= + left_paren partitioned_join_column_reference + ( comma partitioned_join_column_reference )* + right_paren + +partitioned_join_column_reference ::= + column_reference + +natural_join ::= + ( table_reference | partitioned_join_table ) + NATURAL join_type? JOIN + ( table_factor | partitioned_join_table ) + +join_specification ::= + join_condition + | named_columns_join + +join_condition ::= + ON search_condition + +named_columns_join ::= + USING left_paren join_column_list right_paren ( AS join_correlation_name )? + +join_correlation_name ::= + correlation_name + +join_type ::= + INNER + | outer_join_type OUTER? + +outer_join_type ::= + LEFT + | RIGHT + | FULL + +join_column_list ::= + column_name_list +/* +7.11 JSON_table + +Function +Query a JSON text and present it as a relational table. + + +Format +*/ +JSON_table ::= + JSON_TABLE left_paren + JSON_API_common_syntax + JSON_table_columns_clause + JSON_table_plan_clause? + ( JSON_table_error_behavior ON ERROR )? + right_paren + +JSON_table_columns_clause ::= + COLUMNS left_paren + JSON_table_column_definition ( comma JSON_table_column_definition )* + right_paren + +JSON_table_column_definition ::= + JSON_table_ordinality_column_definition + | JSON_table_regular_column_definition + | JSON_table_formatted_column_definition + | JSON_table_nested_columns + +JSON_table_ordinality_column_definition ::= + column_name FOR ORDINALITY + +JSON_table_regular_column_definition ::= + column_name data_type + ( PATH JSON_table_column_path_specification )? + ( JSON_table_column_empty_behavior ON EMPTY )? + ( JSON_table_column_error_behavior ON ERROR )? + +JSON_table_column_empty_behavior ::= + ERROR + | NULL + | DEFAULT value_expression + +JSON_table_column_error_behavior ::= + ERROR + | NULL + | DEFAULT value_expression + +JSON_table_column_path_specification ::= + JSON_path_specification + +JSON_table_formatted_column_definition ::= + column_name data_type + FORMAT JSON_representation + ( PATH JSON_table_column_path_specification )? + ( JSON_table_formatted_column_wrapper_behavior WRAPPER )? + ( JSON_table_formatted_column_quotes_behavior QUOTES ( ON SCALAR STRING )? )? + ( JSON_table_formatted_column_empty_behavior ON EMPTY )? + ( JSON_table_formatted_column_error_behavior ON ERROR )? + +JSON_table_formatted_column_wrapper_behavior ::= + WITHOUT ARRAY? + | WITH ( CONDITIONAL | UNCONDITIONAL )? ARRAY? + +JSON_table_formatted_column_quotes_behavior ::= + KEEP + | OMIT + +JSON_table_formatted_column_empty_behavior ::= + ERROR + | NULL + | EMPTY ARRAY + | EMPTY OBJECT + +JSON_table_formatted_column_error_behavior ::= + ERROR + | NULL + | EMPTY ARRAY + | EMPTY OBJECT + +JSON_table_nested_columns ::= + NESTED PATH? JSON_table_nested_path_specification + ( AS JSON_table_nested_path_name )? + JSON_table_columns_clause + +JSON_table_nested_path_specification ::= + JSON_path_specification + +JSON_table_nested_path_name ::= + JSON_table_path_name + +JSON_table_path_name ::= + identifier + +JSON_table_plan_clause ::= + JSON_table_specific_plan + | JSON_table_default_plan + +JSON_table_specific_plan ::= + PLAN left_paren JSON_table_plan right_paren + +JSON_table_plan ::= + JSON_table_path_name + | JSON_table_plan_parent_child + | JSON_table_plan_sibling + +JSON_table_plan_parent_child ::= + JSON_table_plan_outer + | JSON_table_plan_inner + +JSON_table_plan_outer ::= + JSON_table_path_name OUTER JSON_table_plan_primary + +JSON_table_plan_inner ::= + JSON_table_path_name INNER JSON_table_plan_primary + +JSON_table_plan_sibling ::= + JSON_table_plan_union + | JSON_table_plan_cross + +JSON_table_plan_union ::= + JSON_table_plan_primary UNION JSON_table_plan_primary + ( UNION JSON_table_plan_primary )* + +JSON_table_plan_cross ::= + JSON_table_plan_primary CROSS JSON_table_plan_primary + ( CROSS JSON_table_plan_primary )* + +JSON_table_plan_primary ::= + JSON_table_path_name + | left_paren JSON_table_plan right_paren + +JSON_table_default_plan ::= + PLAN DEFAULT left_paren + JSON_table_default_plan_choices right_paren + +JSON_table_default_plan_choices ::= + JSON_table_default_plan_inner_outer + ( comma JSON_table_default_plan_union_cross )? + | JSON_table_default_plan_union_cross + ( comma JSON_table_default_plan_inner_outer )? + +JSON_table_default_plan_inner_outer ::= + INNER | OUTER + +JSON_table_default_plan_union_cross ::= + UNION | CROSS + +JSON_table_error_behavior ::= + ERROR + | EMPTY + +JSON_table_primitive ::= + JSON_TABLE_PRIMITIVE left_paren + JSON_API_common_syntax + JSON_table_primitive_columns_clause + JSON_table_error_behavior ON ERROR + right_paren + +JSON_table_primitive_columns_clause ::= + COLUMNS left_paren + JSON_table_primitive_column_definition + ( comma JSON_table_primitive_column_definition )* + right_paren + +JSON_table_primitive_column_definition ::= + JSON_table_ordinality_column_definition + | JSON_table_regular_column_definition + | JSON_table_formatted_column_definition + | JSON_table_primitive_chaining_column + +JSON_table_primitive_chaining_column ::= + column_name FOR CHAINING +/* +7.12 where_clause + +Function +Specify a table derived by the application of a search_condition to the result of the preceding from_clause. + + +Format +*/ +where_clause ::= + WHERE search_condition +/* +7.13 group_by_clause + +Function +Specify a grouped table derived by the application of the group_by_clause to the result of the previously +specified clause. + + +Format +*/ +group_by_clause ::= + GROUP BY set_quantifier? grouping_element_list + +grouping_element_list ::= + grouping_element ( comma grouping_element )* + +grouping_element ::= + ordinary_grouping_set + | rollup_list + | cube_list + | grouping_sets_specification + | empty_grouping_set + +ordinary_grouping_set ::= + grouping_column_reference + | left_paren grouping_column_reference_list right_paren + +grouping_column_reference ::= + column_reference collate_clause? + +grouping_column_reference_list ::= + grouping_column_reference ( comma grouping_column_reference )* + +rollup_list ::= + ROLLUP left_paren ordinary_grouping_set_list right_paren + +ordinary_grouping_set_list ::= + ordinary_grouping_set ( comma ordinary_grouping_set )* + +cube_list ::= + CUBE left_paren ordinary_grouping_set_list right_paren + +grouping_sets_specification ::= + GROUPING SETS left_paren grouping_set_list right_paren + +grouping_set_list ::= + grouping_set ( comma grouping_set )* + +grouping_set ::= + ordinary_grouping_set + | rollup_list + | cube_list + | grouping_sets_specification + | empty_grouping_set + +empty_grouping_set ::= + left_paren right_paren +/* +7.14 having_clause + +Function +Specify a grouped table derived by the elimination of groups that do not satisfy a search_condition. + + +Format +*/ +having_clause ::= + HAVING search_condition +/* +7.15 window_clause + +Function +Specify one or more window definitions. + + +Format +*/ +window_clause ::= + WINDOW window_definition_list + +window_definition_list ::= + window_definition ( comma window_definition )* + +window_definition ::= + new_window_name AS window_specification + +new_window_name ::= + window_name + +window_specification ::= + left_paren window_specification_details right_paren + +window_specification_details ::= + existing_window_name? + window_partition_clause? + window_order_clause? + window_frame_clause? + +existing_window_name ::= + window_name + +window_partition_clause ::= + PARTITION BY window_partition_column_reference_list + +window_partition_column_reference_list ::= + window_partition_column_reference + ( comma window_partition_column_reference )* + +window_partition_column_reference ::= + column_reference collate_clause? + +window_order_clause ::= + ORDER BY sort_specification_list + +window_frame_clause ::= + row_pattern_measures? + window_frame_units window_frame_extent + window_frame_exclusion? + row_pattern_common_syntax? + +window_frame_units ::= + ROWS + | RANGE + | GROUPS + +window_frame_extent ::= + window_frame_start + | window_frame_between + +window_frame_start ::= + UNBOUNDED PRECEDING + | window_frame_preceding + | CURRENT ROW + +window_frame_preceding ::= + unsigned_value_specification PRECEDING + +window_frame_between ::= + BETWEEN window_frame_bound_1 AND window_frame_bound_2 + +window_frame_bound_1 ::= + window_frame_bound + +window_frame_bound_2 ::= + window_frame_bound + +window_frame_bound ::= + window_frame_start + | UNBOUNDED FOLLOWING + | window_frame_following + +window_frame_following ::= + unsigned_value_specification FOLLOWING + +window_frame_exclusion ::= + EXCLUDE CURRENT ROW + | EXCLUDE GROUP + | EXCLUDE TIES + | EXCLUDE NO OTHERS +/* +7.16 query_specification + +Function +Specify a table derived from the result of a table_expression. + + +Format +*/ +query_specification ::= + SELECT set_quantifier? select_list table_expression + +select_list ::= + asterisk + | select_sublist ( comma select_sublist )* + +select_sublist ::= + derived_column + | qualified_asterisk + +qualified_asterisk ::= + asterisked_identifier_chain period asterisk + | all_fields_reference + +asterisked_identifier_chain ::= + asterisked_identifier ( period asterisked_identifier )* + +asterisked_identifier ::= + identifier + +derived_column ::= + value_expression as_clause? + +as_clause ::= + AS? column_name + +all_fields_reference ::= + value_expression_primary period asterisk + ( AS left_paren all_fields_column_name_list right_paren )? + +all_fields_column_name_list ::= + column_name_list +/* +7.17 query_expression + +Function +Specify a table. + + +Format +*/ +query_expression ::= + with_clause? query_expression_body + order_by_clause? result_offset_clause? fetch_first_clause? + +with_clause ::= + WITH RECURSIVE? with_list + +with_list ::= + with_list_element ( comma with_list_element )* + +with_list_element ::= + query_name ( left_paren with_column_list right_paren )? + AS table_subquery search_or_cycle_clause? + +with_column_list ::= + column_name_list + +query_expression_body ::= + query_term + | query_expression_body UNION ( ALL | DISTINCT )? + corresponding_spec? query_term + | query_expression_body EXCEPT ( ALL | DISTINCT )? + corresponding_spec? query_term + +query_term ::= + query_primary + | query_term INTERSECT ( ALL | DISTINCT )? + corresponding_spec? query_primary + +query_primary ::= + simple_table + | left_paren query_expression_body + order_by_clause? result_offset_clause? fetch_first_clause? + right_paren + +simple_table ::= + query_specification + | table_value_constructor + | explicit_table + +explicit_table ::= + TABLE table_or_query_name + +corresponding_spec ::= + CORRESPONDING ( BY left_paren corresponding_column_list right_paren )? + +corresponding_column_list ::= + column_name_list + +order_by_clause ::= + ORDER BY sort_specification_list + +result_offset_clause ::= + OFFSET offset_row_count ( ROW | ROWS ) + +fetch_first_clause ::= + FETCH ( FIRST | NEXT ) fetch_first_quantity? ( ROW | ROWS ) ( ONLY | WITH TIES ) + +fetch_first_quantity ::= + fetch_first_row_count + | fetch_first_percentage + +offset_row_count ::= + simple_value_specification + +fetch_first_row_count ::= + simple_value_specification + +fetch_first_percentage ::= + simple_value_specification PERCENT + +/* +7.18 search_or_cycle_clause + +Function +Specify the generation of ordering and cycle detection information in the result of recursive query expressions. + + +Format +*/ +search_or_cycle_clause ::= + search_clause + | cycle_clause + | search_clause cycle_clause + +search_clause ::= + SEARCH recursive_search_order SET sequence_column + +recursive_search_order ::= + DEPTH FIRST BY column_name_list + | BREADTH FIRST BY column_name_list + +sequence_column ::= + column_name + +cycle_clause ::= + CYCLE cycle_column_list SET cycle_mark_column TO cycle_mark_value + DEFAULT non_cycle_mark_value USING path_column + +cycle_column_list ::= + cycle_column ( comma cycle_column )* + +cycle_column ::= + column_name + +cycle_mark_column ::= + column_name + +path_column ::= + column_name + +cycle_mark_value ::= + value_expression + +non_cycle_mark_value ::= + value_expression +/* +7.19 subquery + +Function +Specify a scalar value, a row, or a table derived from a query_expression. + + +Format +*/ +scalar_subquery ::= + subquery + +row_subquery ::= + subquery + +table_subquery ::= + subquery + +subquery ::= + left_paren query_expression right_paren +/* +8 Predicates + +8.1 predicate + +Function +Specify a condition that can be evaluated to give a boolean value. + + +Format +*/ +predicate ::= + comparison_predicate + | between_predicate + | in_predicate + | like_predicate + | similar_predicate + | regex_like_predicate + | null_predicate + | quantified_comparison_predicate + | exists_predicate + | unique_predicate + | normalized_predicate + | match_predicate + | overlaps_predicate + | distinct_predicate + | member_predicate + | submultiset_predicate + | set_predicate + | type_predicate + | period_predicate + | JSON_predicate + | JSON_exists_predicate +/* +8.2 comparison_predicate + +Function +Specify a comparison of two row values. + + +Format +*/ +comparison_predicate ::= + row_value_predicand comparison_predicate_part_2 + +comparison_predicate_part_2 ::= + comp_op row_value_predicand + +comp_op ::= + equals_operator + | not_equals_operator + | less_than_operator + | greater_than_operator + | less_than_or_equals_operator + | greater_than_or_equals_operator +/* +8.3 between_predicate + +Function +Specify a range comparison. + + +Format +*/ +between_predicate ::= + row_value_predicand between_predicate_part_2 + +between_predicate_part_2 ::= + NOT? BETWEEN ( ASYMMETRIC | SYMMETRIC )? + row_value_predicand AND row_value_predicand +/* +8.4 in_predicate + +Function +Specify a quantified comparison. + + +Format +*/ +in_predicate ::= + row_value_predicand in_predicate_part_2 + +in_predicate_part_2 ::= + NOT? IN in_predicate_value + +in_predicate_value ::= + table_subquery + | left_paren in_value_list right_paren + +in_value_list ::= + row_value_expression ( comma row_value_expression )* +/* +8.5 like_predicate + +Function +Specify a pattern-match comparison. + + +Format +*/ +like_predicate ::= + character_like_predicate + | octet_like_predicate + +character_like_predicate ::= + row_value_predicand character_like_predicate_part_2 + +character_like_predicate_part_2 ::= + NOT? LIKE character_pattern ( ESCAPE escape_character )? + +character_pattern ::= + character_value_expression + +escape_character ::= + character_value_expression + +octet_like_predicate ::= + row_value_predicand octet_like_predicate_part_2 + +octet_like_predicate_part_2 ::= + NOT? LIKE octet_pattern ( ESCAPE escape_octet )? + +octet_pattern ::= + binary_value_expression + +escape_octet ::= + binary_value_expression +/* +8.6 similar_predicate + +Function +Specify a character string similarity by means of a regular expression. + + +Format +*/ +similar_predicate ::= + row_value_predicand similar_predicate_part_2 + +similar_predicate_part_2 ::= + NOT? SIMILAR TO similar_pattern ( ESCAPE escape_character )? + +similar_pattern ::= + character_value_expression + +regular_expression ::= + regular_term + | regular_expression vertical_bar regular_term + +regular_term ::= + regular_factor + | regular_term regular_factor + +regular_factor ::= + regular_primary + | regular_primary asterisk + | regular_primary plus_sign + | regular_primary question_mark + | regular_primary repeat_factor + +repeat_factor ::= + left_brace low_value upper_limit? right_brace + +upper_limit ::= + comma high_value? + +low_value ::= + unsigned_integer + +high_value ::= + unsigned_integer + +regular_primary ::= + character_specifier + | percent + | regular_character_set + | left_paren regular_expression right_paren + +character_specifier ::= + non_escaped_character + | escaped_character + +non_escaped_character ::= + "!! See the Syntax Rules." + +escaped_character ::= + "!! See the Syntax Rules." + +regular_character_set ::= + underscore + | left_bracket character_enumeration+ right_bracket + | left_bracket circumflex character_enumeration+ right_bracket + | left_bracket character_enumeration_include+ + circumflex character_enumeration_exclude+ right_bracket + +character_enumeration_include ::= + character_enumeration + +character_enumeration_exclude ::= + character_enumeration + +character_enumeration ::= + character_specifier + | character_specifier minus_sign character_specifier + | left_bracket colon regular_character_set_identifier colon right_bracket + +regular_character_set_identifier ::= + identifier +/* +8.7 regex_like_predicate + +Function +Specify a pattern-match comparison using an XQuery regular expression. + + +Format +*/ +regex_like_predicate ::= + row_value_predicand regex_like_predicate_part_2 + +regex_like_predicate_part_2 ::= + NOT? LIKE_REGEX XQuery_pattern ( FLAG XQuery_option_flag )? +/* +8.8 null_predicate + +Function +Specify a test for a null value. + + +Format +*/ +null_predicate ::= + row_value_predicand null_predicate_part_2 + +null_predicate_part_2 ::= + IS NOT? NULL +/* +8.9 quantified_comparison_predicate + +Function +Specify a quantified comparison. + + +Format +*/ +quantified_comparison_predicate ::= + row_value_predicand quantified_comparison_predicate_part_2 + +quantified_comparison_predicate_part_2 ::= + comp_op quantifier table_subquery + +quantifier ::= + all + | some + +all ::= + ALL + +some ::= + SOME + | ANY +/* +8.10 exists_predicate + +Function +Specify a test for a non-empty set. + + +Format +*/ +exists_predicate ::= + EXISTS table_subquery +/* +8.11 unique_predicate + +Function +Specify a test for the absence of duplicate rows. + + +Format +*/ +unique_predicate ::= + UNIQUE table_subquery +/* +8.12 normalized_predicate + +Function +Determine whether a character string value is normalized. + + +Format +*/ +normalized_predicate ::= + row_value_predicand normalized_predicate_part_2 + +normalized_predicate_part_2 ::= + IS NOT? normal_form? NORMALIZED +/* +8.13 match_predicate + +Function +Specify a test for matching rows. + + +Format +*/ +match_predicate ::= + row_value_predicand match_predicate_part_2 + +match_predicate_part_2 ::= + MATCH UNIQUE? ( SIMPLE | PARTIAL | FULL )? table_subquery +/* +8.14 overlaps_predicate + +Function +Specify a test for an overlap between two datetime periods. + + +Format +*/ +overlaps_predicate ::= + overlaps_predicate_part_1 overlaps_predicate_part_2 + +overlaps_predicate_part_1 ::= + row_value_predicand_1 + +overlaps_predicate_part_2 ::= + OVERLAPS row_value_predicand_2 + +row_value_predicand_1 ::= + row_value_predicand + +row_value_predicand_2 ::= + row_value_predicand +/* +8.15 distinct_predicate + +Function +Specify a test of whether two row values are distinct + + +Format +*/ +distinct_predicate ::= + row_value_predicand_3 distinct_predicate_part_2 + +distinct_predicate_part_2 ::= + IS NOT? DISTINCT FROM row_value_predicand_4 + +row_value_predicand_3 ::= + row_value_predicand + +row_value_predicand_4 ::= + row_value_predicand +/* +8.16 member_predicate + +Function +Specify a test of whether a value is a member of a multiset. + + +Format +*/ +member_predicate ::= + row_value_predicand member_predicate_part_2 + +member_predicate_part_2 ::= + NOT? MEMBER OF? multiset_value_expression +/* +8.17 submultiset_predicate + +Function +Specify a test of whether a multiset is a submultiset of another multiset. + + +Format +*/ +submultiset_predicate ::= + row_value_predicand submultiset_predicate_part_2 + +submultiset_predicate_part_2 ::= + NOT? SUBMULTISET OF? multiset_value_expression +/* +8.18 set_predicate + +Function +Specify a test of whether a multiset is a set (that is, does not contain any duplicates). + + +Format +*/ +set_predicate ::= + row_value_predicand set_predicate_part_2 + +set_predicate_part_2 ::= + IS NOT? "A" SET +/* +8.19 type_predicate + +Function +Specify a type test. + + +Format +*/ +type_predicate ::= + row_value_predicand type_predicate_part_2 + +type_predicate_part_2 ::= + IS NOT? OF left_paren type_list right_paren + +type_list ::= + user_defined_type_specification + ( comma user_defined_type_specification )* + +user_defined_type_specification ::= + inclusive_user_defined_type_specification + | exclusive_user_defined_type_specification + +inclusive_user_defined_type_specification ::= + path_resolved_user_defined_type_name + +exclusive_user_defined_type_specification ::= + ONLY path_resolved_user_defined_type_name +/* +8.20 period_predicate + +Function +Specify a test to determine the relationship between periods. + + +Format +*/ +period_predicate ::= + period_overlaps_predicate + | period_equals_predicate + | period_contains_predicate + | period_precedes_predicate + | period_succeeds_predicate + | period_immediately_precedes_predicate + | period_immediately_succeeds_predicate + +period_overlaps_predicate ::= + period_predicand_1 period_overlaps_predicate_part_2 + +period_overlaps_predicate_part_2 ::= + OVERLAPS period_predicand_2 + +period_predicand_1 ::= + period_predicand + +period_predicand_2 ::= + period_predicand + +period_predicand ::= + period_reference + | PERIOD left_paren period_start_value comma period_end_value right_paren + +period_reference ::= + basic_identifier_chain + +period_start_value ::= + datetime_value_expression + +period_end_value ::= + datetime_value_expression + +period_equals_predicate ::= + period_predicand_1 period_equals_predicate_part_2 + +period_equals_predicate_part_2 ::= + EQUALS period_predicand_2 + +period_contains_predicate ::= + period_predicand_1 period_contains_predicate_part_2 + +period_contains_predicate_part_2 ::= + CONTAINS period_or_point_in_time_predicand + +period_or_point_in_time_predicand ::= + period_predicand + | datetime_value_expression + +period_precedes_predicate ::= + period_predicand_1 period_precedes_predicate_part_2 + +period_precedes_predicate_part_2 ::= + PRECEDES period_predicand_2 + +period_succeeds_predicate ::= + period_predicand_1 period_succeeds_predicate_part_2 + +period_succeeds_predicate_part_2 ::= + SUCCEEDS period_predicand_2 + +period_immediately_precedes_predicate ::= + period_predicand_1 period_immediately_precedes_predicate_part_2 + +period_immediately_precedes_predicate_part_2 ::= + IMMEDIATELY PRECEDES period_predicand_2 + +period_immediately_succeeds_predicate ::= + period_predicand_1 period_immediately_succeeds_predicate_part_2 + +period_immediately_succeeds_predicate_part_2 ::= + IMMEDIATELY SUCCEEDS period_predicand_2 +/* +8.21 search_condition + +Function +Specify a condition that is True, False, or Unknown, depending on the value of a boolean_value_expression. + + +Format +*/ +search_condition ::= + boolean_value_expression +/* +8.22 JSON_predicate + +Function +Test whether a string value is a JSON text. + + +Format +*/ +JSON_predicate ::= + string_value_expression JSON_input_clause? + IS NOT? JSON + JSON_predicate_type_constraint? + JSON_key_uniqueness_constraint? + +JSON_predicate_type_constraint ::= + VALUE + | ARRAY + | OBJECT + | SCALAR + +JSON_key_uniqueness_constraint ::= + WITH UNIQUE KEYS? + | WITHOUT UNIQUE KEYS? +/* +8.23 JSON_exists_predicate + +Function +Test whether a JSON path expression returns any SQL/JSON items. + + +Format +*/ +JSON_exists_predicate ::= + JSON_EXISTS left_paren + JSON_API_common_syntax + ( JSON_exists_error_behavior ON ERROR )? + right_paren + +JSON_exists_error_behavior ::= + TRUE | FALSE | UNKNOWN | ERROR +/* +9 Additional common rules + +9.38 SQL/JSON path language: lexical elements + +Function +Specify the lexical analysis of the SQL/JSON path language. + + +Format +*/ +SQL_JSON_special_symbol ::= + asterisk + | at_sign + | comma + | dollar_sign + | double_ampersand + | double_equals + | double_vertical_bar + | exclamation_mark + | greater_than_operator + | greater_than_or_equals_operator + | left_bracket + | left_paren + | less_than_operator + | less_than_or_equals_operator + | minus_sign + | not_equals_operator + | percent + | period + | plus_sign + | question_mark + | right_bracket + | right_paren + | solidus + +at_sign ::= + '@' + +double_ampersand ::= + "&&" + +double_equals ::= + "==" + +double_vertical_bar ::= + "||" + +exclamation_mark ::= + '!' + +SQL_JSON_key_word ::= + "abs" + | "ceiling" + | "datetime" + | "double" + | "exists" + | "false" + | "flag" + | "floor" + | "is" + | "keyvalue" + | "last" + | "lax" + | "like_regex" + | "null" + | "size" + | "starts" + | "strict" + | "to" + | "true" + | "type" + | "unknown" + | "with" + +JSON_path_literal ::= + "!! See the Syntax Rules." + +JSON_path_string_literal ::= + "!! See the Syntax Rules." + +JSON_path_numeric_literal ::= + "!! See the Syntax Rules." + +JSON_path_identifier ::= + "!! See the Syntax Rules." + +JSON_path_context_variable ::= + "!! See the Syntax Rules." + +JSON_path_named_variable ::= + "!! See the Syntax Rules." + +JSON_path_key_name ::= + "!! See the Syntax Rules." +/* +9.39 SQL/JSON path language: syntax and semantics + +Function +Specify the syntax and semantics of SQL/JSON path language. + + +Format +*/ +JSON_path_expression ::= + JSON_path_mode JSON_path_wff + +JSON_path_mode ::= + "strict" | "lax" + +JSON_path_primary ::= + JSON_path_literal + | JSON_path_variable + | left_paren JSON_path_wff right_paren + +JSON_path_variable ::= + JSON_path_context_variable + | JSON_path_named_variable + | at_sign + | JSON_last_subscript + +JSON_path_context_variable ::= + dollar_sign + +JSON_path_named_variable ::= + dollar_sign JSON_path_identifier + +JSON_last_subscript ::= + "last" + +JSON_accessor_expression ::= + JSON_path_primary + | JSON_accessor_expression JSON_accessor_op + +JSON_accessor_op ::= + JSON____member_accessor + | JSON____wildcard_member_accessor + | JSON____array_accessor + | JSON____wildcard_array_accessor + | JSON____filter_expression + | JSON____item_method + +JSON_member_accessor ::= + period JSON_path_key_name + | period JSON_path_string_literal +/* + NOTE 447 - Unlike [ECMAScript], SQL/JSON path language does not provide a member accessor using brackets that enclose + a character string. +*/ + +JSON_wildcard_member_accessor ::= + period asterisk + +JSON_array_accessor ::= + left_bracket JSON_subscript_list right_bracket + +JSON_subscript_list ::= + JSON_subscript ( comma JSON_subscript )* + +JSON_subscript ::= + JSON_path_wff_1 + | JSON_path_wff_2 "to" JSON_path_wff_3 + +JSON_path_wff_1 ::= + JSON_path_wff + +JSON_path_wff_2 ::= + JSON_path_wff + +JSON_path_wff_3 ::= + JSON_path_wff + +JSON_wildcard_array_accessor ::= + left_bracket asterisk right_bracket + +JSON_filter_expression ::= + question_mark left_paren JSON_path_predicate right_paren +/* + NOTE 448 - Unlike [ECMAScript], predicates are not expressions; instead they form a separate language that can only be invoked + within a JSON_filter_expression. +*/ + +JSON_item_method ::= + period JSON_method + +JSON_method ::= + "type" left_paren right_paren + | "size" left_paren right_paren + | "double" left_paren right_paren + | "ceiling" left_paren right_paren + | "floor" left_paren right_paren + | "abs" left_paren right_paren + | "datetime" left_paren JSON_datetime_template? right_paren + | "keyvalue" left_paren right_paren + +JSON_datetime_template ::= + JSON_path_string_literal +JSON_unary_expression ::= + JSON_accessor_expression + | plus_sign JSON_unary_expression + | minus_sign JSON_unary_expression + +JSON_multiplicative_expression ::= + JSON_unary_expression + | JSON_multiplicative_expression asterisk JSON_unary_expression + | JSON_multiplicative_expression solidus JSON_unary_expression + | JSON_multiplicative_expression percent JSON_unary_expression + +JSON_additive_expression ::= + JSON_multiplicative_expression + | JSON_additive_expression plus_sign JSON_multiplicative_expression + | JSON_additive_expression minus_sign JSON_multiplicative_expression + +JSON_path_wff ::= + JSON_additive_expression +/* + NOTE 449 - This concludes the main language for JSON path expressions. Next comes the language for predicates, used only + in JSON_filter_expression. +*/ +JSON_predicate_primary ::= + JSON_delimited_predicate + | JSON_non_delimited_predicate + +JSON_delimited_predicate ::= + JSON_exists_path_predicate + | left_paren JSON_path_predicate right_paren + +JSON_non_delimited_predicate ::= + JSON_comparison_predicate + | JSON_like_regex_predicate + | JSON_starts_with_predicate + | JSON_unknown_predicate + +JSON_exists_path_predicate ::= + "exists" left_paren JSON_path_wff right_paren + +JSON_comparison_predicate ::= + JSON_path_wff JSON_comp_op JSON_path_wff +/* + NOTE 450 - Comparison operators are not left associative, unlike [ECMAScript]. +*/ +JSON_comp_op ::= + double_equals + | not_equals_operator + | less_than_operator + | greater_than_operator + | less_than_or_equals_operator + | greater_than_or_equals_operator +/* + NOTE 451 - Equality operators have the same precedence as inequality comparison operators, unlike [ECMAScript]. +*/ +JSON_like_regex_predicate ::= + JSON_path_wff "like_regex" JSON_like_regex_pattern + ( "flag" JSON_like_regex_flags )? + +JSON_like_regex_pattern ::= + JSON_path_string_literal +JSON_like_regex_flags ::= + JSON_path_string_literal + +JSON_starts_with_predicate ::= + JSON_starts_with_whole "starts" "with" JSON_starts_with_initial + +JSON_starts_with_whole ::= + JSON_path_wff + +JSON_starts_with_initial ::= + JSON_path_string_literal + | JSON_path_named_variable + +JSON_unknown_predicate ::= + left_paren JSON_path_predicate right_paren "is" "unknown" + +JSON_boolean_negation ::= + JSON_predicate_primary + | exclamation_mark JSON_delimited_predicate + +JSON_boolean_conjunction ::= + JSON_boolean_negation + | JSON_boolean_conjunction double_ampersand JSON_boolean_negation + +JSON_boolean_disjunction ::= + JSON_boolean_conjunction + | JSON_boolean_disjunction double_vertical_bar JSON_boolean_conjunction + +JSON_path_predicate ::= + JSON_boolean_disjunction +/* +9.44 Datetime templates + +Function +Specify the templates to use to convert between datetime types and character string types. + + +Format +*/ +datetime_template ::= + datetime_template_part+ + +datetime_template_part ::= + datetime_template_field + | datetime_template_delimiter + +datetime_template_field ::= + datetime_template_year + | datetime_template_rounded_year + | datetime_template_month + | datetime_template_day_of_month + | datetime_template_day_of_year + | datetime_template_12_hour + | datetime_template_24_hour + | datetime_template_minute + | datetime_template_second_of_minute + | datetime_template_second_of_day + | datetime_template_fraction + | datetime_template_am_pm + | datetime_template_time_zone_hour + | datetime_template_time_zone_minute + +datetime_template_delimiter ::= + minus_sign + | period + | solidus + | comma + | apostrophe + | semicolon + | colon + | space + +datetime_template_year ::= + YYYY | YYY | YY | "Y" + +datetime_template_rounded_year ::= + RRRR | RR +datetime_template_month ::= + MM + +datetime_template_day_of_month ::= + DD + +datetime_template_day_of_year ::= + DDD + +datetime_template_12_hour ::= + HH | "HH12" + +datetime_template_24_hour ::= + "HH24" + +datetime_template_minute ::= + MI + +datetime_template_second_of_minute ::= + SS + +datetime_template_second_of_day ::= + SSSSS + +datetime_template_fraction ::= + "FF1" | "FF2" | "FF3" | "FF4" | "FF5" | "FF6" | "FF7" | "FF8" | "FF9" + +datetime_template_am_pm ::= + "A.M." | "P.M." + +datetime_template_time_zone_hour ::= + TZH + +datetime_template_time_zone_minute ::= + TZM + +/* +10 Additional common elements + + +10.1 interval_qualifier + +Function +Specify the precision of an interval data type. + + +Format +*/ +interval_qualifier ::= + start_field TO end_field + | single_datetime_field + +start_field ::= + non_second_primary_datetime_field + ( left_paren interval_leading_field_precision right_paren )? + +end_field ::= + non_second_primary_datetime_field + | SECOND ( left_paren interval_fractional_seconds_precision right_paren )? + +single_datetime_field ::= + non_second_primary_datetime_field + ( left_paren interval_leading_field_precision right_paren )? + | SECOND ( left_paren interval_leading_field_precision + ( comma interval_fractional_seconds_precision )? right_paren )? + +primary_datetime_field ::= + non_second_primary_datetime_field + | SECOND + +non_second_primary_datetime_field ::= + YEAR + | MONTH + | DAY + | HOUR + | MINUTE + +interval_fractional_seconds_precision ::= + unsigned_integer + +interval_leading_field_precision ::= + unsigned_integer +/* +10.2 language_clause + + +Function +Specify a programming language. + + +Format +*/ +language_clause ::= + LANGUAGE language_name + +language_name ::= + ADA + | "C" + | COBOL + | FORTRAN + | ("M" | MUMPS) + | PASCAL + | PLI + | SQL +/* +10.3 path_specification + +Function +Specify an order for searching for an SQL-invoked routine. + + +Format +*/ +path_specification ::= + PATH schema_name_list + +schema_name_list ::= + schema_name ( comma schema_name )* +/* +10.4 routine_invocation + +Function +Invoke an SQL-invoked routine. + + +Format +*/ +routine_invocation ::= + routine_name SQL_argument_list + +routine_name ::= + schema_name period? qualified_identifier + +SQL_argument_list ::= + left_paren + ( SQL_argument ( comma SQL_argument )* copartition_clause? )? + right_paren + +SQL_argument ::= + value_expression + | generalized_expression + | target_specification + | contextually_typed_value_specification + | named_argument_specification + | table_argument + | descriptor_argument + +generalized_expression ::= + value_expression AS path_resolved_user_defined_type_name + +named_argument_specification ::= + SQL_parameter_name named_argument_assignment_token + named_argument_SQL_argument + +named_argument_SQL_argument ::= + value_expression + | target_specification + | contextually_typed_value_specification + | table_argument + | descriptor_argument + +table_argument ::= + table_argument_proper + ( AS? table_argument_correlation_name + table_argument_parenthesized_derived_column_list? )? + table_argument_partitioning? + table_argument_pruning? + table_argument_ordering? + +table_argument_correlation_name ::= + correlation_name + +table_argument_parenthesized_derived_column_list ::= + parenthesized_derived_column_list + +table_argument_proper ::= + TABLE left_paren table_or_query_name right_paren + | TABLE table_subquery + | table_function_invocation + +table_function_invocation ::= + routine_invocation + +table_argument_partitioning ::= + PARTITION BY table_argument_partitioning_list + +table_argument_partitioning_list ::= + column_reference + | left_paren ( column_reference ( comma column_reference )* )? right_paren + +table_argument_pruning ::= + PRUNE WHEN EMPTY + | KEEP WHEN EMPTY + +table_argument_ordering ::= + ORDER BY table_argument_ordering_list + +table_argument_ordering_list ::= + table_argument_ordering_column + | left_paren + table_argument_ordering_column + ( comma table_argument_ordering_column )* + right_paren + +table_argument_ordering_column ::= + column_reference ordering_specification? null_ordering? + +copartition_clause ::= + COPARTITION copartition_list + +copartition_list ::= + copartition_specification ( comma copartition_specification )* + +copartition_specification ::= + left_paren range_variable comma range_variable + ( comma range_variable )* right_paren + +range_variable ::= + table_name + | query_name + | correlation_name + +descriptor_argument ::= + descriptor_value_constructor + | CAST left_paren NULL AS DESCRIPTOR right_paren + +/* +10.5 character_set_specification + +Function +Identify a character set. + + +Format +*/ +character_set_specification ::= + standard_character_set_name + | implementation_defined_character_set_name + | user_defined_character_set_name + +standard_character_set_name ::= + character_set_name + +implementation_defined_character_set_name ::= + character_set_name + +user_defined_character_set_name ::= + character_set_name +/* +10.6 specific_routine_designator + +Function +Specify an SQL-invoked routine. + + +Format +*/ +specific_routine_designator ::= + SPECIFIC routine_type specific_name + | routine_type member_name ( FOR schema_resolved_user_defined_type_name )? + +routine_type ::= + ROUTINE + | FUNCTION + | PROCEDURE + | ( INSTANCE | STATIC | CONSTRUCTOR )? METHOD + +member_name ::= + member_name_alternatives data_type_list? + +member_name_alternatives ::= + schema_qualified_routine_name + | method_name + +data_type_list ::= + left_paren ( data_type ( comma data_type )* )? right_paren +/* +10.7 collate_clause + +Function +Specify a default collation. + + +Format +*/ +collate_clause ::= + COLLATE collation_name +/* +10.8 constraint_name_definition and constraint_characteristics + +Function +Specify the name of a constraint and its characteristics. + + +Format +*/ +constraint_name_definition ::= + CONSTRAINT constraint_name + +constraint_characteristics ::= + constraint_check_time ( NOT? DEFERRABLE )? constraint_enforcement? + | NOT? DEFERRABLE constraint_check_time? constraint_enforcement? + | constraint_enforcement + +constraint_check_time ::= + INITIALLY DEFERRED + | INITIALLY IMMEDIATE + +constraint_enforcement ::= + NOT? ENFORCED +/* +10.9 aggregate_function + +Function +Specify a value computed from a collection of rows. + + +Format +*/ +aggregate_function ::= + COUNT left_paren asterisk right_paren filter_clause? + | general_set_function filter_clause? + | binary_set_function filter_clause? + | ordered_set_function filter_clause? + | array_aggregate_function filter_clause? + | row_pattern_count_function filter_clause? + | JSON_aggregate_function filter_clause? + +general_set_function ::= + set_function_type left_paren set_quantifier? + value_expression right_paren + +set_function_type ::= + computational_operation + +computational_operation ::= + AVG + | MAX + | MIN + | SUM + | EVERY + | ANY + | SOME + | COUNT + | STDDEV_POP + | STDDEV_SAMP + | VAR_SAMP + | VAR_POP + | COLLECT + | FUSION + | INTERSECTION + +set_quantifier ::= + DISTINCT + | ALL + +filter_clause ::= + FILTER left_paren WHERE search_condition right_paren + +binary_set_function ::= + binary_set_function_type left_paren dependent_variable_expression comma + independent_variable_expression right_paren + +binary_set_function_type ::= + COVAR_POP + | COVAR_SAMP + | CORR + | REGR_SLOPE + | REGR_INTERCEPT + | REGR_COUNT + | "REGR_R2" + | REGR_AVGX + | REGR_AVGY + | REGR_SXX + | REGR_SYY + | REGR_SXY + +dependent_variable_expression ::= + numeric_value_expression + +independent_variable_expression ::= + numeric_value_expression + +ordered_set_function ::= + hypothetical_set_function + | inverse_distribution_function + | listagg_set_function + +hypothetical_set_function ::= + rank_function_type left_paren + hypothetical_set_function_value_expression_list right_paren + within_group_specification + +within_group_specification ::= + WITHIN GROUP left_paren ORDER BY sort_specification_list right_paren + +hypothetical_set_function_value_expression_list ::= + value_expression ( comma value_expression )* + +inverse_distribution_function ::= + inverse_distribution_function_type left_paren + inverse_distribution_function_argument right_paren + within_group_specification + +inverse_distribution_function_argument ::= + numeric_value_expression + +inverse_distribution_function_type ::= + PERCENTILE_CONT + | PERCENTILE_DISC + +listagg_set_function ::= + LISTAGG left_paren set_quantifier? character_value_expression + comma listagg_separator listagg_overflow_clause? right_paren + within_group_specification + +listagg_separator ::= + character_string_literal + +listagg_overflow_clause ::= + ON OVERFLOW overflow_behavior + +overflow_behavior ::= + ERROR + | TRUNCATE listagg_truncation_filler? listagg_count_indication + +listagg_truncation_filler ::= + character_string_literal + +listagg_count_indication ::= + WITH COUNT + | WITHOUT COUNT + +array_aggregate_function ::= + ARRAY_AGG + left_paren value_expression ( ORDER BY sort_specification_list )? right_paren + +row_pattern_count_function ::= + COUNT left_paren row_pattern_variable_name period asterisk right_paren +/* +10.10 sort_specification_list + +Function +Specify a sort order. + + +Format +*/ +sort_specification_list ::= + sort_specification ( comma sort_specification )* + +sort_specification ::= + sort_key ordering_specification? null_ordering? + +sort_key ::= + value_expression + +ordering_specification ::= + ASC + | DESC + +null_ordering ::= + NULLS FIRST + | NULLS LAST + +/* +10.11 JSON_aggregate_function + +Function +Construct a JSON object or a JSON array from an aggregation of SQL data. + + +Format +*/ +JSON_aggregate_function ::= + JSON_object_aggregate_constructor + | JSON_array_aggregate_constructor + +JSON_object_aggregate_constructor ::= + JSON_OBJECTAGG left_paren + JSON_name_and_value + JSON_constructor_null_clause? + JSON_key_uniqueness_constraint? + JSON_output_clause? + right_paren + +JSON_array_aggregate_constructor ::= + JSON_ARRAYAGG left_paren + JSON_value_expression + JSON_array_aggregate_order_by_clause? + JSON_constructor_null_clause? + JSON_output_clause? + right_paren + +JSON_array_aggregate_order_by_clause ::= + ORDER BY sort_specification_list + +/* +10.12 JSON_value_expression + +Function +Specify a value to be used as input by an SQL/JSON function. + + +Format +*/ +JSON_value_expression ::= + value_expression JSON_input_clause? + +JSON_input_clause ::= + FORMAT JSON_representation + +/* +10.13 JSON_output_clause + +Function +Specify the data type, format, and encoding of the JSON text created by a JSON-returning function. + + +Format +*/ +JSON_output_clause ::= + RETURNING data_type ( FORMAT JSON_representation )? + +JSON_representation ::= + JSON ( ENCODING ( "UTF8" | "UTF16" | "UTF32" ) )? + | implementation_defined_JSON_representation_option + +implementation_defined_JSON_representation_option ::= + "!! See the Syntax Rules." + +/* +10.14 JSON_API_common_syntax + +Subclause Signature +"" General Rules? ( + Parameter: "JSON API COMMON SYNTAX" +) Returns: STATUS and "SQL/JSON SEQUENCE" + + +Function +Define the inputs to JSON_VALUE, JSON_QUERY, JSON_TABLE, and JSON_EXISTS. + + +Format +*/ +JSON_API_common_syntax ::= + JSON_context_item comma JSON_path_specification ( AS JSON_table_path_name )? + JSON_passing_clause? + +JSON_context_item ::= + JSON_value_expression + +JSON_path_specification ::= + character_string_literal + +JSON_passing_clause ::= + PASSING JSON_argument ( comma JSON_argument )* + +JSON_argument ::= + JSON_value_expression AS identifier + +/* +11 Schema definition and manipulation + + +11.1 schema_definition + +Function +Define a schema. + + +Format +*/ +schema_definition ::= + CREATE SCHEMA schema_name_clause + schema_character_set_or_path? + schema_element* + +schema_character_set_or_path ::= + schema_character_set_specification + | schema_path_specification + | schema_character_set_specification schema_path_specification + | schema_path_specification schema_character_set_specification + +schema_name_clause ::= + schema_name + | AUTHORIZATION schema_authorization_identifier + | schema_name AUTHORIZATION schema_authorization_identifier + +schema_authorization_identifier ::= + authorization_identifier + +schema_character_set_specification ::= + DEFAULT CHARACTER SET character_set_specification + +schema_path_specification ::= + path_specification + +schema_element ::= + table_definition + | view_definition + | domain_definition + | character_set_definition + | collation_definition + | transliteration_definition + | assertion_definition + | trigger_definition + | user_defined_type_definition + | user_defined_cast_definition + | user_defined_ordering_definition + | transform_definition + | schema_routine + | sequence_generator_definition + | grant_statement + | role_definition +/* +11.2 drop_schema_statement + +Function +Destroy a schema. + + +Format +*/ +drop_schema_statement ::= + DROP SCHEMA schema_name drop_behavior + +drop_behavior ::= + CASCADE + | RESTRICT +/* +11.3 table_definition + +Function +Define a persistent base table, a created local temporary table, or a global temporary table. + + +Format +*/ +table_definition ::= + CREATE table_scope? TABLE table_name table_contents_source + ( WITH system_versioning_clause )? + ( ON COMMIT table_commit_action ROWS )? + +table_contents_source ::= + table_element_list + | typed_table_clause + | as_subquery_clause + +table_scope ::= + global_or_local TEMPORARY + +global_or_local ::= + GLOBAL + | LOCAL + +system_versioning_clause ::= + SYSTEM VERSIONING + +table_commit_action ::= + PRESERVE + | DELETE + +table_element_list ::= + left_paren table_element ( comma table_element )* right_paren + +table_element ::= + column_definition + | table_period_definition + | table_constraint_definition + | like_clause + +typed_table_clause ::= + OF path_resolved_user_defined_type_name subtable_clause? + typed_table_element_list? + +typed_table_element_list ::= + left_paren typed_table_element + ( comma typed_table_element )* right_paren + +typed_table_element ::= + column_options + | table_constraint_definition + | self_referencing_column_specification + +self_referencing_column_specification ::= + REF IS self_referencing_column_name reference_generation? + +reference_generation ::= + SYSTEM GENERATED + | USER GENERATED + | DERIVED + +self_referencing_column_name ::= + column_name + +column_options ::= + column_name WITH OPTIONS column_option_list + +column_option_list ::= + scope_clause? default_clause? column_constraint_definition* + +subtable_clause ::= + UNDER supertable_clause + +supertable_clause ::= + supertable_name + +supertable_name ::= + table_name + +like_clause ::= + LIKE table_name like_options? + +like_options ::= + like_option+ + +like_option ::= + identity_option + | column_default_option + | generation_option + +identity_option ::= + INCLUDING IDENTITY + | EXCLUDING IDENTITY + +column_default_option ::= + INCLUDING DEFAULTS + | EXCLUDING DEFAULTS + +generation_option ::= + INCLUDING GENERATED + | EXCLUDING GENERATED + +as_subquery_clause ::= + ( left_paren column_name_list right_paren )? AS table_subquery + with_or_without_data + +with_or_without_data ::= + WITH NO DATA + | WITH DATA + +table_period_definition ::= + system_or_application_time_period_specification + left_paren period_begin_column_name comma period_end_column_name right_paren + +system_or_application_time_period_specification ::= + system_time_period_specification + | application_time_period_specification + +system_time_period_specification ::= + PERIOD FOR SYSTEM_TIME + +application_time_period_specification ::= + PERIOD FOR application_time_period_name + +application_time_period_name ::= + identifier + +period_begin_column_name ::= + column_name + +period_end_column_name ::= + column_name +/* +11.4 column_definition + +Function +Define a column of a base table. + + +Format +*/ +column_definition ::= + column_name data_type_or_domain_name? + ( default_clause | identity_column_specification | generation_clause + | system_time_period_start_column_specification + | system_time_period_end_column_specification )? + column_constraint_definition* + collate_clause? + +data_type_or_domain_name ::= + data_type + | domain_name + +system_time_period_start_column_specification ::= + timestamp_generation_rule AS ROW START + +system_time_period_end_column_specification ::= + timestamp_generation_rule AS ROW END + +timestamp_generation_rule ::= + GENERATED ALWAYS + +column_constraint_definition ::= + constraint_name_definition? column_constraint constraint_characteristics? + +column_constraint ::= + NOT NULL + | unique_specification + | references_specification + | check_constraint_definition + +identity_column_specification ::= + GENERATED ( ALWAYS | BY DEFAULT ) AS IDENTITY + ( left_paren common_sequence_generator_options right_paren )? + +generation_clause ::= + generation_rule AS generation_expression + +generation_rule ::= + GENERATED ALWAYS + +generation_expression ::= + left_paren value_expression right_paren +/* +11.5 default_clause + +Function +Specify the default for a column, domain, or attribute. + + +Format +*/ +default_clause ::= + DEFAULT default_option + +default_option ::= + literal + | datetime_value_function + | USER + | CURRENT_USER + | CURRENT_ROLE + | SESSION_USER + | SYSTEM_USER + | CURRENT_CATALOG + | CURRENT_SCHEMA + | CURRENT_PATH + | implicitly_typed_value_specification +/* +11.6 table_constraint_definition + +Function +Specify an integrity constraint. + + +Format +*/ +table_constraint_definition ::= + constraint_name_definition? table_constraint + constraint_characteristics? + +table_constraint ::= + unique_constraint_definition + | referential_constraint_definition + | check_constraint_definition +/* +11.7 unique_constraint_definition + +Function +Specify a uniqueness constraint for a table. + + +Format +*/ +unique_constraint_definition ::= + unique_specification left_paren unique_column_list ( comma without_overlap_specification )? right_paren + | UNIQUE VALUE? + +unique_specification ::= + UNIQUE + | PRIMARY KEY + +unique_column_list ::= + column_name_list + +without_overlap_specification ::= + application_time_period_name WITHOUT OVERLAPS +/* +11.8 referential_constraint_definition + +Function +Specify a referential constraint. + + +Format +*/ +referential_constraint_definition ::= + FOREIGN KEY left_paren referencing_column_list + ( comma referencing_period_specification )? right_paren + references_specification + +references_specification ::= + REFERENCES referenced_table_and_columns + ( MATCH match_type )? referential_triggered_action? + +match_type ::= + FULL + | PARTIAL + | SIMPLE + +referencing_column_list ::= + column_name_list + +referencing_period_specification ::= + PERIOD application_time_period_name + +referenced_table_and_columns ::= + table_name ( left_paren referenced_column_list + ( comma referenced_period_specification )? right_paren )? + +referenced_column_list ::= + column_name_list + +referenced_period_specification ::= + PERIOD application_time_period_name + +referential_triggered_action ::= + update_rule delete_rule? + | delete_rule update_rule? + +update_rule ::= + ON UPDATE referential_action + +delete_rule ::= + ON DELETE referential_action + +referential_action ::= + CASCADE + | SET NULL + | SET DEFAULT + | RESTRICT + | NO ACTION +/* +11.9 check_constraint_definition + +Function +Specify a condition for the SQL-data. + + +Format +*/ +check_constraint_definition ::= + CHECK left_paren search_condition right_paren +/* +11.10 alter_table_statement + +Function +Change the definition of a table. + + +Format +*/ +alter_table_statement ::= + ALTER TABLE table_name alter_table_action + +alter_table_action ::= + add_column_definition + | alter_column_definition + | drop_column_definition + | add_table_constraint_definition + | alter_table_constraint_definition + | drop_table_constraint_definition + | add_table_period_definition + | drop_table_period_definition + | add_system_versioning_clause + | drop_system_versioning_clause +/* +11.11 add_column_definition + +Function +Add a column to a table. + + +Format +*/ +add_column_definition ::= + ADD COLUMN? column_definition +/* +11.12 alter_column_definition + +Function +Change a column and its definition. + + +Format +*/ +alter_column_definition ::= + + ALTER COLUMN? column_name alter_column_action + +alter_column_action ::= + set_column_default_clause + | drop_column_default_clause + | set_column_not_null_clause + | drop_column_not_null_clause + | add_column_scope_clause + | drop_column_scope_clause + | alter_column_data_type_clause + | alter_identity_column_specification + | drop_identity_property_clause + | drop_column_generation_expression_clause +/* +11.13 set_column_default_clause + +Function +Set the default clause for a column. + + +Format +*/ +set_column_default_clause ::= + SET default_clause +/* +11.14 drop_column_default_clause + +Function +Drop the default clause from a column. + + +Format +*/ +drop_column_default_clause ::= + DROP DEFAULT +/* +11.15 set_column_not_null_clause + +Function +Add a not null constraint to a column. + + +Format +*/ +set_column_not_null_clause ::= + SET NOT NULL +/* +11.16 drop_column_not_null_clause + +Function +Drop a not null constraint on a column. + + +Format +*/ +drop_column_not_null_clause ::= + DROP NOT NULL +/* +11.17 add_column_scope_clause + +Function +Add a non-empty scope for an existing column of data type REF in a base table. + + +Format +*/ +add_column_scope_clause ::= + ADD scope_clause +/* +11.18 drop_column_scope_clause + +Function +Drop the scope from an existing column of data type REF in a base table. + + +Format +*/ +drop_column_scope_clause ::= + DROP SCOPE drop_behavior +/* +11.19 alter_column_data_type_clause + +Function +Change the declared type of a column. + + +Format +*/ +alter_column_data_type_clause ::= + SET DATA TYPE data_type +/* +11.20 alter_identity_column_specification + +Function +Change the options specified for an identity column. + + +Format +*/ +alter_identity_column_specification ::= + set_identity_column_generation_clause alter_identity_column_option* + | alter_identity_column_option+ + +set_identity_column_generation_clause ::= + SET GENERATED ( ALWAYS | BY DEFAULT ) + +alter_identity_column_option ::= + alter_sequence_generator_restart_option + | SET basic_sequence_generator_option +/* +11.21 drop_identity_property_clause + +Function +Convert an identity column to a column that is not an identity column. + + +Format +*/ +drop_identity_property_clause ::= + DROP IDENTITY +/* +11.22 drop_column_generation_expression_clause + +Function +Convert a generated column to a column that is not a generated column. + + +Format +*/ +drop_column_generation_expression_clause ::= + DROP EXPRESSION +/* +11.23 drop_column_definition + +Function +Destroy a column of a base table. + + +Format +*/ +drop_column_definition ::= + DROP COLUMN? column_name drop_behavior +/* +11.24 add_table_constraint_definition + +Function +Add a constraint to a table. + + +Format +*/ +add_table_constraint_definition ::= + ADD table_constraint_definition +/* +11.25 alter_table_constraint_definition + +Function +Change the definition of a table constraint. + + +Format +*/ +alter_table_constraint_definition ::= + ALTER CONSTRAINT constraint_name constraint_enforcement +/* +11.26 drop_table_constraint_definition + +Function +Destroy a constraint on a table. + + +Format +*/ +drop_table_constraint_definition ::= + DROP CONSTRAINT constraint_name drop_behavior +/* +11.27 add_table_period_definition + +Function +Add a system-time period or an application-time period to a persistent base table. + + +Format +*/ +add_table_period_definition ::= + ADD table_period_definition add_system_time_period_column_list? + +add_system_time_period_column_list ::= + ADD COLUMN? column_definition_1 ADD COLUMN? column_definition_2 + +column_definition_1 ::= + column_definition + +column_definition_2 ::= + column_definition +/* +11.28 drop_table_period_definition + +Function +Remove a system-time period or application-time period from a persistent base table. + + +Format +*/ +drop_table_period_definition ::= + DROP system_or_application_time_period_specification drop_behavior +/* +11.29 add_system_versioning_clause + +Function +Alter a regular persistent base table to a system-versioned table. + + +Format +*/ +add_system_versioning_clause ::= + ADD system_versioning_clause +/* +11.30 drop_system_versioning_clause + +Function +Change a system-versioned table into a regular persistent base table. + + +Format +*/ +drop_system_versioning_clause ::= + DROP SYSTEM VERSIONING drop_behavior +/* +11.31 drop_table_statement + +Function +Destroy a table. + + +Format +*/ +drop_table_statement ::= + DROP TABLE table_name drop_behavior +/* +11.32 view_definition + +Function +Define a viewed table. + + +Format +*/ +view_definition ::= + CREATE RECURSIVE? VIEW table_name view_specification + AS query_expression ( WITH levels_clause? CHECK OPTION )? + +view_specification ::= + regular_view_specification + | referenceable_view_specification + +regular_view_specification ::= + ( left_paren view_column_list right_paren )? + +referenceable_view_specification ::= + OF path_resolved_user_defined_type_name subview_clause? + view_element_list? + +subview_clause ::= + UNDER table_name + +view_element_list ::= + left_paren view_element ( comma view_element )* right_paren + +view_element ::= + self_referencing_column_specification + | view_column_option + +view_column_option ::= + column_name WITH OPTIONS scope_clause + +levels_clause ::= + CASCADED + | LOCAL + +view_column_list ::= + column_name_list +/* +11.33 drop_view_statement + +Function +Destroy a view. + + +Format +*/ +drop_view_statement ::= + DROP VIEW table_name drop_behavior +/* +11.34 domain_definition + +Function +Define a domain. + + +Format +*/ +domain_definition ::= + CREATE DOMAIN domain_name AS? predefined_type + default_clause? + domain_constraint* + collate_clause? + +domain_constraint ::= + constraint_name_definition? check_constraint_definition + constraint_characteristics? +/* +11.35 alter_domain_statement + +Function +Change a domain and its definition. + + +Format +*/ +alter_domain_statement ::= + ALTER DOMAIN domain_name alter_domain_action + +alter_domain_action ::= + set_domain_default_clause + | drop_domain_default_clause + | add_domain_constraint_definition + | drop_domain_constraint_definition +/* +11.36 set_domain_default_clause + +Function +Set the default value in a domain. + + +Format +*/ +set_domain_default_clause ::= + SET default_clause +/* +11.37 drop_domain_default_clause + +Function +Remove the default clause of a domain. + + +Format +*/ +drop_domain_default_clause ::= + DROP DEFAULT + +/* +11.38 add_domain_constraint_definition + +Function +Add a constraint to a domain. + + +Format +*/ +add_domain_constraint_definition ::= + ADD domain_constraint +/* +11.39 drop_domain_constraint_definition + +Function +Destroy a constraint on a domain. + + +Format +*/ +drop_domain_constraint_definition ::= + DROP CONSTRAINT constraint_name +/* +11.40 drop_domain_statement + +Function +Destroy a domain. + + +Format +*/ +drop_domain_statement ::= + DROP DOMAIN domain_name drop_behavior +/* +11.41 character_set_definition + +Function +Define a character set. + + +Format +*/ +character_set_definition ::= + CREATE CHARACTER SET character_set_name AS? + character_set_source collate_clause? + +character_set_source ::= + GET character_set_specification +/* +11.42 drop_character_set_statement + +Function +Destroy a character set. + + +Format +*/ +drop_character_set_statement ::= + DROP CHARACTER SET character_set_name +/* +11.43 collation_definition + +Function +Define a collation. + + +Format +*/ +collation_definition ::= + CREATE COLLATION collation_name FOR character_set_specification + FROM existing_collation_name pad_characteristic? + +existing_collation_name ::= + collation_name + +pad_characteristic ::= + NO PAD + | PAD SPACE +/* +11.44 drop_collation_statement + +Function +Destroy a collation. + + +Format +*/ +drop_collation_statement ::= + DROP COLLATION collation_name drop_behavior +/* +11.45 transliteration_definition + +Function +Define a character transliteration. + + +Format +*/ +transliteration_definition ::= + CREATE TRANSLATION transliteration_name FOR source_character_set_specification + TO target_character_set_specification FROM transliteration_source + +source_character_set_specification ::= + character_set_specification + +target_character_set_specification ::= + character_set_specification + +transliteration_source ::= + existing_transliteration_name + | transliteration_routine + +existing_transliteration_name ::= + transliteration_name + +transliteration_routine ::= + specific_routine_designator +/* +11.46 drop_transliteration_statement + +Function +Destroy a character transliteration. + + +Format +*/ +drop_transliteration_statement ::= + DROP TRANSLATION transliteration_name +/* +11.47 assertion_definition + +Function +Specify an integrity constraint. + + +Format +*/ +assertion_definition ::= + CREATE ASSERTION constraint_name + CHECK left_paren search_condition right_paren + constraint_characteristics? +/* +11.48 drop_assertion_statement + +Function +Destroy an assertion. + + +Format +*/ +drop_assertion_statement ::= + DROP ASSERTION constraint_name drop_behavior? +/* +11.49 trigger_definition + +Function +Define triggered SQL-statements. + + +Format +*/ +trigger_definition ::= + CREATE TRIGGER trigger_name trigger_action_time trigger_event + ON table_name ( REFERENCING transition_table_or_variable_list )? + triggered_action + +trigger_action_time ::= + BEFORE + | AFTER + | INSTEAD OF + +trigger_event ::= + INSERT + | DELETE + | UPDATE ( OF trigger_column_list )? + +trigger_column_list ::= + column_name_list + +triggered_action ::= + ( FOR EACH ( ROW | STATEMENT ) )? + triggered_when_clause? + triggered_SQL_statement + +triggered_when_clause ::= + WHEN left_paren search_condition right_paren + +triggered_SQL_statement ::= + SQL_procedure_statement + | BEGIN ATOMIC ( SQL_procedure_statement semicolon)+ END + +transition_table_or_variable_list ::= + transition_table_or_variable+ + +transition_table_or_variable ::= + OLD ROW? AS? old_transition_variable_name + | NEW ROW? AS? new_transition_variable_name + | OLD TABLE AS? old_transition_table_name + | NEW TABLE AS? new_transition_table_name + +old_transition_table_name ::= + transition_table_name + +new_transition_table_name ::= + transition_table_name + +transition_table_name ::= + identifier + +old_transition_variable_name ::= + correlation_name + +new_transition_variable_name ::= + correlation_name +/* +11.50 drop_trigger_statement + +Function +Destroy a trigger. + + +Format +*/ +drop_trigger_statement ::= + DROP TRIGGER trigger_name +/* +11.51 user_defined_type_definition + +Function +Define a user-defined type. + + +Format +*/ +user_defined_type_definition ::= + CREATE TYPE user_defined_type_body + +user_defined_type_body ::= + schema_resolved_user_defined_type_name + subtype_clause? + ( AS representation )? + user_defined_type_option_list? + method_specification_list? + +user_defined_type_option_list ::= + user_defined_type_option user_defined_type_option* + +user_defined_type_option ::= + instantiable_clause + | finality + | reference_type_specification + | cast_to_ref + | cast_to_type + | cast_to_distinct + | cast_to_source + +subtype_clause ::= + UNDER supertype_name + +supertype_name ::= + path_resolved_user_defined_type_name + +representation ::= + predefined_type + | collection_type + | member_list + +member_list ::= + left_paren member ( comma member )* right_paren + +member ::= + attribute_definition + +instantiable_clause ::= + INSTANTIABLE + | NOT INSTANTIABLE + +finality ::= + FINAL + | NOT FINAL + +reference_type_specification ::= + user_defined_representation + | derived_representation + | system_generated_representation + +user_defined_representation ::= + REF USING predefined_type + +derived_representation ::= + REF FROM list_of_attributes + +system_generated_representation ::= + REF IS SYSTEM GENERATED + +cast_to_ref ::= + CAST left_paren SOURCE AS REF right_paren WITH cast_to_ref_identifier + +cast_to_ref_identifier ::= + identifier + +cast_to_type ::= + CAST left_paren REF AS SOURCE right_paren WITH cast_to_type_identifier + +cast_to_type_identifier ::= + identifier + +list_of_attributes ::= + left_paren attribute_name ( comma attribute_name )* right_paren + +cast_to_distinct ::= + CAST left_paren SOURCE AS DISTINCT right_paren + WITH cast_to_distinct_identifier + +cast_to_distinct_identifier ::= + identifier + +cast_to_source ::= + CAST left_paren DISTINCT AS SOURCE right_paren + WITH cast_to_source_identifier + +cast_to_source_identifier ::= + identifier + +method_specification_list ::= + method_specification ( comma method_specification )* + +method_specification ::= + original_method_specification + | overriding_method_specification + +original_method_specification ::= + partial_method_specification ( SELF AS RESULT ) ( SELF AS LOCATOR ) + method_characteristics? + +overriding_method_specification ::= + OVERRIDING partial_method_specification + +partial_method_specification ::= + ( INSTANCE | STATIC | CONSTRUCTOR ) + METHOD method_name SQL_parameter_declaration_list + returns_clause + ( SPECIFIC specific_method_name ) + +specific_method_name ::= + ( schema_name period )? qualified_identifier + +method_characteristics ::= + method_characteristic+ + +method_characteristic ::= + language_clause + | parameter_style_clause + | deterministic_characteristic + | SQL_data_access_indication + | null_call_clause +/* +11.52 attribute_definition + +Function +Define an attribute of a structured type. + + +Format +*/ +attribute_definition ::= + attribute_name data_type + attribute_default? + collate_clause? + +attribute_default ::= + default_clause +/* +11.53 alter_type_statement + +Function +Change the definition of a user-defined type. + + +Format +*/ +alter_type_statement ::= + ALTER TYPE schema_resolved_user_defined_type_name alter_type_action + +alter_type_action ::= + add_attribute_definition + | drop_attribute_definition + | add_original_method_specification + | add_overriding_method_specification + | drop_method_specification +/* +11.54 add_attribute_definition + +Function +Add an attribute to a user-defined type. + + +Format +*/ +add_attribute_definition ::= + ADD ATTRIBUTE attribute_definition +/* +11.55 drop_attribute_definition + +Function +Destroy an attribute of a user-defined type. + + +Format +*/ +drop_attribute_definition ::= + DROP ATTRIBUTE attribute_name RESTRICT +/* +11.56 add_original_method_specification + +Function +Add an original method specification to a user-defined type. + + +Format +*/ +add_original_method_specification ::= + ADD original_method_specification +/* +11.57 add_overriding_method_specification + +Function +Add an overriding method specification to a user-defined type. + + +Format +*/ +add_overriding_method_specification ::= + ADD overriding_method_specification +/* +11.58 drop_method_specification + +Function +Remove a method specification from a user-defined type. + + +Format +*/ +drop_method_specification ::= + DROP specific_method_specification_designator RESTRICT + +specific_method_specification_designator ::= + ( INSTANCE | STATIC | CONSTRUCTOR )? + METHOD method_name data_type_list +/* +11.59 drop_data_type_statement + + +Function +Destroy a user-defined type. + + +Format +*/ +drop_data_type_statement ::= + DROP TYPE schema_resolved_user_defined_type_name drop_behavior +/* +11.60 SQL_invoked_routine + +Function +Define an SQL-invoked routine. + + +Format +*/ +SQL_invoked_routine ::= + schema_routine + +schema_routine ::= + schema_procedure + | schema_function + +schema_procedure ::= + CREATE SQL_invoked_procedure + +schema_function ::= + CREATE SQL_invoked_function + +SQL_invoked_procedure ::= + PROCEDURE schema_qualified_routine_name SQL_parameter_declaration_list + routine_characteristics + routine_body + +SQL_invoked_function ::= + ( function_specification | method_specification_designator ) routine_body + +SQL_parameter_declaration_list ::= + left_paren ( SQL_parameter_declaration + ( comma SQL_parameter_declaration )* )? right_paren + +SQL_parameter_declaration ::= + parameter_mode? + SQL_parameter_name? + parameter_type RESULT? + ( DEFAULT parameter_default )? + +parameter_default ::= + value_expression + | contextually_typed_value_specification + | descriptor_value_constructor + +parameter_mode ::= + IN + | OUT + | INOUT + +parameter_type ::= + data_type locator_indication? + | generic_table_parameter_type + | descriptor_parameter_type + +generic_table_parameter_type ::= + TABLE pass_through_option? generic_table_semantics? + +pass_through_option ::= + PASS THROUGH + | NO PASS THROUGH + +generic_table_semantics ::= + WITH ROW SEMANTICS + | WITH SET SEMANTICS generic_table_pruning? + +generic_table_pruning ::= + PRUNE ON EMPTY + | KEEP ON EMPTY + +descriptor_parameter_type ::= + DESCRIPTOR + +locator_indication ::= + AS LOCATOR + +function_specification ::= + FUNCTION schema_qualified_routine_name SQL_parameter_declaration_list + returns_clause + routine_characteristics + dispatch_clause? + +method_specification_designator ::= + SPECIFIC METHOD specific_method_name + | ( INSTANCE | STATIC | CONSTRUCTOR ) + METHOD method_name SQL_parameter_declaration_list + returns_clause? + FOR schema_resolved_user_defined_type_name + +routine_characteristics ::= + routine_characteristic* + +routine_characteristic ::= + language_clause + | parameter_style_clause + | SPECIFIC specific_name + | deterministic_characteristic + | SQL_data_access_indication + | null_call_clause + | returned_result_sets_characteristic + | savepoint_level_indication + +savepoint_level_indication ::= + NEW SAVEPOINT LEVEL + | OLD SAVEPOINT LEVEL + +returned_result_sets_characteristic ::= + DYNAMIC RESULT SETS maximum_returned_result_sets + +parameter_style_clause ::= + PARAMETER STYLE parameter_style + +dispatch_clause ::= + STATIC DISPATCH + +returns_clause ::= + RETURNS returns_type + +returns_type ::= + returns_data_type result_cast? + | returns_table_type + +returns_table_type ::= + TABLE table_function_column_list? + | ONLY PASS THROUGH + +table_function_column_list ::= + left_paren table_function_column_list_element + ( comma table_function_column_list_element )* right_paren + +table_function_column_list_element ::= + column_name data_type + +result_cast ::= + CAST FROM result_cast_from_type + +result_cast_from_type ::= + data_type locator_indication? + +returns_data_type ::= + data_type locator_indication? + +routine_body ::= + SQL_routine_spec + | external_body_reference + | polymorphic_table_function_body + +SQL_routine_spec ::= + rights_clause? SQL_routine_body + +rights_clause ::= + SQL SECURITY INVOKER + | SQL SECURITY DEFINER + +SQL_routine_body ::= + SQL_procedure_statement + +external_body_reference ::= + EXTERNAL ( NAME external_routine_name )? + parameter_style_clause? + transform_group_specification? + external_security_clause? + +polymorphic_table_function_body ::= + PTF_private_parameters? + ( DESCRIBE WITH PTF_describe_component_procedure )? + ( START WITH PTF_start_component_procedure )? + FULFILL WITH PTF_fulfill_component_procedure + ( FINISH WITH PTF_finish_component_procedure )? +PTF_private_parameters ::= + PRIVATE DATA? private_parameter_declaration_list + +private_parameter_declaration_list ::= + left_paren ( SQL_parameter_declaration + ( comma SQL_parameter_declaration )* )? + right_paren + +PTF_describe_component_procedure ::= + specific_routine_designator + +PTF_start_component_procedure ::= + specific_routine_designator + +PTF_fulfill_component_procedure ::= + specific_routine_designator + +PTF_finish_component_procedure ::= + specific_routine_designator + +external_security_clause ::= + EXTERNAL SECURITY DEFINER + | EXTERNAL SECURITY INVOKER + | EXTERNAL SECURITY IMPLEMENTATION DEFINED + +parameter_style ::= + SQL + | GENERAL + +deterministic_characteristic ::= + DETERMINISTIC + | NOT DETERMINISTIC + +SQL_data_access_indication ::= + NO SQL + | CONTAINS SQL + | READS SQL DATA + | MODIFIES SQL DATA + +null_call_clause ::= + RETURNS NULL ON NULL INPUT + | CALLED ON NULL INPUT + +maximum_returned_result_sets ::= + unsigned_integer + +transform_group_specification ::= + TRANSFORM GROUP ( single_group_specification | multiple_group_specification ) + +single_group_specification ::= + group_name + +multiple_group_specification ::= + group_specification ( comma group_specification )* + +group_specification ::= + group_name FOR TYPE path_resolved_user_defined_type_name +/* +11.61 alter_routine_statement + +Function +Alter a characteristic of an SQL-invoked routine. + + +Format +*/ +alter_routine_statement ::= + ALTER specific_routine_designator + alter_routine_characteristics alter_routine_behavior + +alter_routine_characteristics ::= + alter_routine_characteristic+ + +alter_routine_characteristic ::= + language_clause + | parameter_style_clause + | SQL_data_access_indication + | null_call_clause + | returned_result_sets_characteristic + | NAME external_routine_name + +alter_routine_behavior ::= + RESTRICT +/* +11.62 drop_routine_statement + +Function +Destroy an SQL-invoked routine. + + +Format +*/ +drop_routine_statement ::= + DROP specific_routine_designator drop_behavior +/* +11.63 user_defined_cast_definition + +Function +Define a user-defined cast. + + +Format +*/ +user_defined_cast_definition ::= + CREATE CAST left_paren source_data_type AS target_data_type right_paren + WITH cast_function + ( AS ASSIGNMENT )? + +cast_function ::= + specific_routine_designator + +source_data_type ::= + data_type + +target_data_type ::= + data_type +/* +11.64 drop_user_defined_cast_statement + +Function +Destroy a user-defined cast. + + +Format +*/ +drop_user_defined_cast_statement ::= + DROP CAST left_paren source_data_type AS target_data_type right_paren + drop_behavior +/* +11.65 user_defined_ordering_definition + +Function +Define a user-defined ordering for a user-defined type. + + +Format +*/ +user_defined_ordering_definition ::= + CREATE ORDERING FOR schema_resolved_user_defined_type_name ordering_form + +ordering_form ::= + equals_ordering_form + | full_ordering_form + +equals_ordering_form ::= + EQUALS ONLY BY ordering_category + +full_ordering_form ::= + ORDER FULL BY ordering_category + +ordering_category ::= + relative_category + | map_category + | state_category + +relative_category ::= + RELATIVE WITH relative_function_specification + +map_category ::= + MAP WITH map_function_specification + +state_category ::= + STATE specific_name? + +relative_function_specification ::= + specific_routine_designator + +map_function_specification ::= + specific_routine_designator +/* +11.66 drop_user_defined_ordering_statement + +Function +Destroy a user-defined ordering method. + + +Format +*/ +drop_user_defined_ordering_statement ::= + DROP ORDERING FOR schema_resolved_user_defined_type_name drop_behavior +/* +11.67 transform_definition + +Function +Define one or more transform functions for a user-defined type. + + +Format +*/ +transform_definition ::= + CREATE ( TRANSFORM | TRANSFORMS ) FOR + schema_resolved_user_defined_type_name transform_group+ + +transform_group ::= + group_name left_paren transform_element_list right_paren + +group_name ::= + identifier + +transform_element_list ::= + transform_element ( comma transform_element )? + +transform_element ::= + to_sql + | from_sql + +to_sql ::= + TO SQL WITH to_sql_function + +from_sql ::= + FROM SQL WITH from_sql_function + +to_sql_function ::= + specific_routine_designator + +from_sql_function ::= + specific_routine_designator +/* +11.68 alter_transform_statement + +Function +Change the definition of one or more transform groups. + + +Format +*/ +alter_transform_statement ::= + ALTER ( TRANSFORM | TRANSFORMS ) + FOR schema_resolved_user_defined_type_name alter_group+ + +alter_group ::= + group_name left_paren alter_transform_action_list right_paren + +alter_transform_action_list ::= + alter_transform_action ( comma alter_transform_action )* + +alter_transform_action ::= + add_transform_element_list + | drop_transform_element_list +/* +11.69 add_transform_element_list + +Function +Add a transform element ( and/or ) to an existing transform group. + + +Format +*/ +add_transform_element_list ::= + ADD left_paren transform_element_list right_paren +/* +11.70 drop_transform_element_list + +Function +Remove a transform element ( and/or ) from a transform group. + + +Format +*/ +drop_transform_element_list ::= + DROP left_paren transform_kind + ( comma transform_kind )? drop_behavior right_paren + +transform_kind ::= + TO SQL + | FROM SQL +/* +11.71 drop_transform_statement + +Function +Remove one or more transform functions associated with a transform. + + +Format +*/ +drop_transform_statement ::= + DROP ( TRANSFORM | TRANSFORMS ) transforms_to_be_dropped + FOR schema_resolved_user_defined_type_name drop_behavior + +transforms_to_be_dropped ::= + ALL + | transform_group_element + +transform_group_element ::= + group_name +/* +11.72 sequence_generator_definition + +Function +Define an external sequence generator. + + +Format +*/ +sequence_generator_definition ::= + CREATE SEQUENCE sequence_generator_name sequence_generator_options? + +sequence_generator_options ::= + sequence_generator_option+ + +sequence_generator_option ::= + sequence_generator_data_type_option + | common_sequence_generator_options + +common_sequence_generator_options ::= + common_sequence_generator_option+ + +common_sequence_generator_option ::= + sequence_generator_start_with_option + | basic_sequence_generator_option + +basic_sequence_generator_option ::= + sequence_generator_increment_by_option + | sequence_generator_maxvalue_option + | sequence_generator_minvalue_option + | sequence_generator_cycle_option + +sequence_generator_data_type_option ::= + AS data_type + +sequence_generator_start_with_option ::= + START WITH sequence_generator_start_value + +sequence_generator_start_value ::= + signed_numeric_literal + +sequence_generator_increment_by_option ::= + INCREMENT BY sequence_generator_increment + +sequence_generator_increment ::= + signed_numeric_literal + +sequence_generator_maxvalue_option ::= + MAXVALUE sequence_generator_max_value + | NO MAXVALUE + +sequence_generator_max_value ::= + signed_numeric_literal + +sequence_generator_minvalue_option ::= + MINVALUE sequence_generator_min_value + | NO MINVALUE + +sequence_generator_min_value ::= + signed_numeric_literal + +sequence_generator_cycle_option ::= + CYCLE + | NO CYCLE +/* +11.73 alter_sequence_generator_statement + +Function +Change the definition of an external sequence generator. + + +Format +*/ +alter_sequence_generator_statement ::= + ALTER SEQUENCE sequence_generator_name alter_sequence_generator_options + +alter_sequence_generator_options ::= + alter_sequence_generator_option+ + +alter_sequence_generator_option ::= + alter_sequence_generator_restart_option + | basic_sequence_generator_option + +alter_sequence_generator_restart_option ::= + RESTART ( WITH sequence_generator_restart_value )? + +sequence_generator_restart_value ::= + signed_numeric_literal +/* +11.74 drop_sequence_generator_statement + +Function +Destroy an external sequence generator. + + +Format +*/ +drop_sequence_generator_statement ::= + DROP SEQUENCE sequence_generator_name drop_behavior +/* +12 Access control + + +12.1 grant_statement + +Function +Define privileges and role authorizations. + + +Format +*/ +grant_statement ::= + grant_privilege_statement + | grant_role_statement +/* +12.2 grant_privilege_statement + +Function +Define privileges. + + +Format +*/ +grant_privilege_statement ::= + GRANT privileges TO grantee ( comma grantee )* + ( WITH HIERARCHY OPTION )? + ( WITH GRANT OPTION )? + ( GRANTED BY grantor )? +/* +12.3 privileges + +Function +Specify privileges. + + +Format +*/ +privileges ::= + object_privileges ON object_name + +object_name ::= + TABLE? table_name + | DOMAIN domain_name + | COLLATION collation_name + | CHARACTER SET character_set_name + | TRANSLATION transliteration_name + | TYPE schema_resolved_user_defined_type_name + | SEQUENCE sequence_generator_name + | specific_routine_designator + +object_privileges ::= + ALL PRIVILEGES + | action ( comma action )* + +action ::= + SELECT + | SELECT left_paren privilege_column_list right_paren + | SELECT left_paren privilege_method_list right_paren + | DELETE + | INSERT ( left_paren privilege_column_list right_paren )? + | UPDATE ( left_paren privilege_column_list right_paren )? + | REFERENCES ( left_paren privilege_column_list right_paren )? + | USAGE + | TRIGGER + | UNDER + | EXECUTE + +privilege_method_list ::= + specific_routine_designator ( comma specific_routine_designator )* + +privilege_column_list ::= + column_name_list + +grantee ::= + PUBLIC + | authorization_identifier + +grantor ::= + CURRENT_USER + | CURRENT_ROLE +/* +12.4 role_definition + +Function +Define a role. + + +Format +*/ +role_definition ::= + CREATE ROLE role_name ( WITH ADMIN grantor )? +/* +12.5 grant_role_statement + +Function +Define role authorizations. + + +Format +*/ +grant_role_statement ::= + GRANT role_granted ( comma role_granted )* + TO grantee ( comma grantee )* + ( WITH ADMIN OPTION )? + ( GRANTED BY grantor )? + +role_granted ::= + role_name +/* +12.6 drop_role_statement + +Function +Destroy a role. + + +Format +*/ +drop_role_statement ::= + DROP ROLE role_name +/* +12.7 revoke_statement + +Function +Destroy privileges and role authorizations. + + +Format +*/ +revoke_statement ::= + revoke_privilege_statement + | revoke_role_statement + +revoke_privilege_statement ::= + REVOKE revoke_option_extension? privileges + FROM grantee ( comma grantee )* + ( GRANTED BY grantor )? + drop_behavior + +revoke_option_extension ::= + GRANT OPTION FOR + | HIERARCHY OPTION FOR + +revoke_role_statement ::= + REVOKE ( ADMIN OPTION FOR )? role_revoked ( comma role_revoked )* + FROM grantee ( comma grantee )* + ( GRANTED BY grantor )? + drop_behavior + +role_revoked ::= + role_name +/* +13 SQL-client modules + + +13.1 SQL_client_module_definition + +Function +Define an SQL-client module. + + +Format +*/ +SQL_client_module_definition ::= + module_name_clause language_clause module_authorization_clause + module_path_specification? + module_transform_group_specification? + module_collations? + temporary_table_declaration* + module_contents+ + +module_authorization_clause ::= + SCHEMA schema_name + | AUTHORIZATION module_authorization_identifier + ( FOR STATIC ( ONLY | AND DYNAMIC ) )? + | SCHEMA schema_name AUTHORIZATION module_authorization_identifier + ( FOR STATIC ( ONLY | AND DYNAMIC ) )? + +module_authorization_identifier ::= + authorization_identifier + +module_path_specification ::= + path_specification + +module_transform_group_specification ::= + transform_group_specification + +module_collations ::= + module_collation_specification+ + +module_collation_specification ::= + COLLATION collation_name ( FOR character_set_specification_list )? + +character_set_specification_list ::= + character_set_specification ( comma character_set_specification )* + +module_contents ::= + declare_cursor + | dynamic_declare_cursor + | externally_invoked_procedure +/* +13.2 module_name_clause + +Function +Name an SQL-client module. + + +Format +*/ +module_name_clause ::= + MODULE SQL_client_module_name? module_character_set_specification? + +module_character_set_specification ::= + NAMES ARE character_set_specification +/* +13.3 externally_invoked_procedure + +Function +Define an externally-invoked procedure. + + +Format +*/ +externally_invoked_procedure ::= + PROCEDURE procedure_name host_parameter_declaration_list semicolon + SQL_procedure_statement semicolon + +host_parameter_declaration_list ::= + left_paren host_parameter_declaration + ( comma host_parameter_declaration )? right_paren + +host_parameter_declaration ::= + host_parameter_name host_parameter_data_type + | status_parameter + +host_parameter_data_type ::= + data_type locator_indication? + +status_parameter ::= + SQLSTATE +/* +13.4 SQL_procedure_statement + +Function +Define all of the SQL-statements that are s. + + +Format +*/ +SQL_procedure_statement ::= + SQL_executable_statement + +SQL_executable_statement ::= + SQL_schema_statement + | SQL_data_statement + | SQL_control_statement + | SQL_transaction_statement + | SQL_connection_statement + | SQL_session_statement + | SQL_diagnostics_statement + | SQL_dynamic_statement + +SQL_schema_statement ::= + SQL_schema_definition_statement + | SQL_schema_manipulation_statement + +SQL_schema_definition_statement ::= + schema_definition + | table_definition + | view_definition + | SQL_invoked_routine + | grant_statement + | role_definition + | domain_definition + | character_set_definition + | collation_definition + | transliteration_definition + | assertion_definition + | trigger_definition + | user_defined_type_definition + | user_defined_cast_definition + | user_defined_ordering_definition + | transform_definition + | sequence_generator_definition + +SQL_schema_manipulation_statement ::= + drop_schema_statement + | alter_table_statement + | drop_table_statement + | drop_view_statement + | alter_routine_statement + | drop_routine_statement + | drop_user_defined_cast_statement + | revoke_statement + | drop_role_statement + | alter_domain_statement + | drop_domain_statement + | drop_character_set_statement + | drop_collation_statement + | drop_transliteration_statement + | drop_assertion_statement + | drop_trigger_statement + | alter_type_statement + | drop_data_type_statement + | drop_user_defined_ordering_statement + | alter_transform_statement + | drop_transform_statement + | alter_sequence_generator_statement + | drop_sequence_generator_statement + +SQL_data_statement ::= + open_statement + | fetch_statement + | close_statement + | select_statement__single_row + | free_locator_statement + | hold_locator_statement + | SQL_data_change_statement + +SQL_data_change_statement ::= + delete_statement__positioned + | delete_statement__searched + | insert_statement + | update_statement__positioned + | update_statement__searched + | truncate_table_statement + | merge_statement + +SQL_control_statement ::= + call_statement + | return_statement + +SQL_transaction_statement ::= + start_transaction_statement + | set_transaction_statement + | set_constraints_mode_statement + | savepoint_statement + | release_savepoint_statement + | commit_statement + | rollback_statement + +SQL_connection_statement ::= + connect_statement + | set_connection_statement + | disconnect_statement + +SQL_session_statement ::= + set_session_user_identifier_statement + | set_role_statement + | set_local_time_zone_statement + | set_session_characteristics_statement + | set_catalog_statement + | set_schema_statement + | set_names_statement + | set_path_statement + | set_transform_group_statement + | set_session_collation_statement + +SQL_diagnostics_statement ::= + get_diagnostics_statement + +SQL_dynamic_statement ::= + SQL_descriptor_statement + | prepare_statement + | deallocate_prepared_statement + | describe_statement + | execute_statement + | execute_immediate_statement + | SQL_dynamic_data_statement + | copy_descriptor_statement + | pipe_row_statement + +SQL_dynamic_data_statement ::= + allocate_extended_dynamic_cursor_statement + | allocate_received_cursor_statement + | dynamic_open_statement + | dynamic_fetch_statement + | dynamic_close_statement + | dynamic_delete_statement__positioned + | dynamic_update_statement__positioned + +SQL_descriptor_statement ::= + allocate_descriptor_statement + | deallocate_descriptor_statement + | set_descriptor_statement + | get_descriptor_statement +/* +14 Data manipulation + + +14.1 declare_cursor + +Function +Declare a standing cursor. + + +Format +*/ +declare_cursor ::= + DECLARE cursor_name cursor_properties + FOR cursor_specification +/* +14.2 cursor_properties + +Function +Specify the declared properties of a cursor. + + +Format +*/ +cursor_properties ::= + cursor_sensitivity? cursor_scrollability? CURSOR + cursor_holdability? + cursor_returnability? + +cursor_sensitivity ::= + SENSITIVE + | INSENSITIVE + | ASENSITIVE + +cursor_scrollability ::= + SCROLL + | NO SCROLL + +cursor_holdability ::= + WITH HOLD + | WITHOUT HOLD + +cursor_returnability ::= + WITH RETURN + | WITHOUT RETURN +/* +14.3 cursor_specification + +Function +Define a result set. + + +Format +*/ +cursor_specification ::= + query_expression updatability_clause? + +updatability_clause ::= + FOR ( READ ONLY | UPDATE ( OF column_name_list )? ) +/* +14.4 open_statement + +Function +Open a standing cursor. + + +Format +*/ +open_statement ::= + OPEN cursor_name +/* +14.5 fetch_statement + +Function +Position a standing cursor on a specified row of the standing cursor's result set and retrieve values from that +row. + + +Format +*/ +fetch_statement ::= + FETCH ( fetch_orientation? FROM )? cursor_name INTO fetch_target_list + +fetch_orientation ::= + NEXT + | PRIOR + | FIRST + | LAST + | ( ABSOLUTE | RELATIVE ) simple_value_specification + +fetch_target_list ::= + target_specification ( comma target_specification )? +/* +14.6 close_statement + +Function +Close a standing cursor. + + +Format +*/ +close_statement ::= + CLOSE cursor_name +/* +14.7 select_statement__single_row + +Function +Retrieve values from a specified row of a table. + + +Format +*/ +select_statement__single_row ::= + SELECT set_quantifier? select_list + INTO select_target_list + table_expression + +select_target_list ::= + target_specification ( comma target_specification )* +/* +14.8 delete_statement__positioned + +Function +Delete a row of a table. + + +Format +*/ +delete_statement__positioned ::= + DELETE FROM target_table ( AS? correlation_name )? + WHERE CURRENT OF cursor_name + +target_table ::= + table_name + | ONLY left_paren table_name right_paren +/* +14.9 delete_statement__searched + +Function +Delete rows of a table. + + +Format +*/ +delete_statement__searched ::= + DELETE FROM target_table + ( FOR PORTION OF application_time_period_name + FROM point_in_time_1 TO point_in_time_2 )? + ( AS? correlation_name )? + ( WHERE search_condition )? +/* +14.10 truncate_table_statement + +Function +Delete all rows of a base table without causing any triggered action. + + +Format +*/ +truncate_table_statement ::= + TRUNCATE TABLE target_table identity_column_restart_option? + +identity_column_restart_option ::= + CONTINUE IDENTITY + | RESTART IDENTITY +/* +14.11 insert_statement + +Function +Create new rows in a table. + + +Format +*/ +insert_statement ::= + INSERT INTO insertion_target insert_columns_and_source + +insertion_target ::= + table_name + +insert_columns_and_source ::= + from_subquery + | from_constructor + | from_default + +from_subquery ::= + ( left_paren insert_column_list right_paren )? + override_clause? + query_expression + +from_constructor ::= + ( left_paren insert_column_list right_paren ) + override_clause? + contextually_typed_table_value_constructor + +override_clause ::= + OVERRIDING USER VALUE + | OVERRIDING SYSTEM VALUE + +from_default ::= + DEFAULT VALUES + +insert_column_list ::= + column_name_list +/* +14.12 merge_statement + +Function +Conditionally update and/or delete rows of a table and/or insert new rows into a table. + + +Format +*/ +merge_statement ::= + MERGE INTO target_table ( AS? merge_correlation_name ) + USING table_reference + ON search_condition merge_operation_specification + +merge_correlation_name ::= + correlation_name + +merge_operation_specification ::= + merge_when_clause+ + +merge_when_clause ::= + merge_when_matched_clause + | merge_when_not_matched_clause + +merge_when_matched_clause ::= + WHEN MATCHED ( AND search_condition )? + THEN merge_update_or_delete_specification + +merge_update_or_delete_specification ::= + merge_update_specification + | merge_delete_specification + +merge_when_not_matched_clause ::= + WHEN NOT MATCHED ( AND search_condition )? + THEN merge_insert_specification + +merge_update_specification ::= + UPDATE SET set_clause_list + +merge_delete_specification ::= + DELETE + +merge_insert_specification ::= + INSERT ( left_paren insert_column_list right_paren )? + override_clause? + VALUES merge_insert_value_list + +merge_insert_value_list ::= + left_paren + merge_insert_value_element ( comma merge_insert_value_element )* + right_paren + +merge_insert_value_element ::= + value_expression + | contextually_typed_value_specification +/* +14.13 update_statement__positioned + +Function +Update a row of a table. + + +Format +*/ +update_statement__positioned ::= + UPDATE target_table ( AS? correlation_name )? + SET set_clause_list + WHERE CURRENT OF cursor_name +/* +14.14 update_statement__searched + +Function +Update rows of a table. + + +Format +*/ +update_statement__searched ::= + UPDATE target_table + ( FOR PORTION OF application_time_period_name + FROM point_in_time_1 TO point_in_time_2 )? + ( AS? correlation_name )? + SET set_clause_list + ( WHERE search_condition )? +/* +14.15 set_clause_list + +Function +Specify a list of updates. + + +Format +*/ +set_clause_list ::= + set_clause ( comma set_clause )* + +set_clause ::= + multiple_column_assignment + | set_target equals_operator update_source + +set_target ::= + update_target + | mutated_set_clause + +multiple_column_assignment ::= + set_target_list equals_operator assigned_row + +set_target_list ::= + left_paren set_target ( comma set_target )* right_paren + +assigned_row ::= + contextually_typed_row_value_expression + +update_target ::= + object_column + | object_column + left_bracket_or_trigraph simple_value_specification right_bracket_or_trigraph + +object_column ::= + column_name + +mutated_set_clause ::= + mutated_target period method_name + +mutated_target ::= + object_column + | mutated_set_clause + +update_source ::= + value_expression + | contextually_typed_value_specification +/* +14.16 temporary_table_declaration + +Function +Declare a declared local temporary table. + + +Format +*/ +temporary_table_declaration ::= + DECLARE LOCAL TEMPORARY TABLE table_name table_element_list + ( ON COMMIT table_commit_action ROWS )? +/* +14.17 free_locator_statement + +Function +Remove the association between a locator variable and the value that is represented by that locator. + + +Format +*/ +free_locator_statement ::= + FREE LOCATOR locator_reference ( comma locator_reference )* + +locator_reference ::= + host_parameter_name + | embedded_variable_name + | dynamic_parameter_specification +/* +14.18 hold_locator_statement + +Function +Mark a locator variable as being holdable. + + +Format +*/ +hold_locator_statement ::= + HOLD LOCATOR locator_reference ( comma locator_reference )* + +/* +16 Control statements + +16.1 call_statement + + +Function +Invoke an SQL-invoked routine. + + +Format +*/ +call_statement ::= + CALL routine_invocation +/* +16.2 return_statement + +Function +Return a value from an SQL routine that is an SQL-invoked function. + + +Format +*/ +return_statement ::= + RETURN return_value + +return_value ::= + value_expression + | NULL +/* +17 Transaction management + + +17.1 start_transaction_statement + +Function +Start an SQL-transaction and set its characteristics. + + +Format +*/ +start_transaction_statement ::= + START TRANSACTION transaction_characteristics? +/* +17.2 set_transaction_statement + +Function +Set the characteristics of the next SQL-transaction for the SQL-agent. + NOTE 711 - This statement has no effect on any SQL-transactions subsequent to the next SQL-transaction. + + +Format +*/ +set_transaction_statement ::= + SET LOCAL? TRANSACTION transaction_characteristics +/* +17.3 transaction_characteristics + +Function +Specify transaction characteristics. + + +Format +*/ +transaction_characteristics ::= + ( transaction_mode ( comma transaction_mode )* )? + +transaction_mode ::= + isolation_level + | transaction_access_mode + | diagnostics_size + +transaction_access_mode ::= + READ ONLY + | READ WRITE + +isolation_level ::= + ISOLATION LEVEL level_of_isolation + +level_of_isolation ::= + READ UNCOMMITTED + | READ COMMITTED + | REPEATABLE READ + | SERIALIZABLE + +diagnostics_size ::= + DIAGNOSTICS SIZE number_of_conditions + +number_of_conditions ::= + simple_value_specification +/* +17.4 set_constraints_mode_statement + +Function +If an SQL-transaction is currently active, then set the constraint mode for that SQL-transaction in the current +SQL-session. If no SQL-transaction is currently active, then set the constraint mode for the next SQL-transaction +in the current SQL-session for the SQL-agent. + NOTE 713 - This statement has no effect on any SQL-transactions subsequent to this SQL-transaction. + + +Format +*/ +set_constraints_mode_statement ::= + SET CONSTRAINTS constraint_name_list ( DEFERRED | IMMEDIATE ) + +constraint_name_list ::= + ALL + | constraint_name ( comma constraint_name )* +/* +17.5 savepoint_statement + +Function +Establish a savepoint. + + +Format +*/ +savepoint_statement ::= + SAVEPOINT savepoint_specifier + +savepoint_specifier ::= + savepoint_name +/* +17.6 release_savepoint_statement + +Function +Destroy a savepoint. + + +Format +*/ +release_savepoint_statement ::= + RELEASE SAVEPOINT savepoint_specifier +/* +17.7 commit_statement + +Function +Terminate the current SQL-transaction with commit. + + +Format +*/ +commit_statement ::= + COMMIT WORK? ( AND NO? CHAIN )? +/* +17.8 rollback_statement + +Function +Terminate the current SQL-transaction with rollback, or rollback all actions affecting SQL-data and/or schemas +since the establishment of a savepoint. + + +Format +*/ +rollback_statement ::= + ROLLBACK WORK? ( AND NO? CHAIN )? savepoint_clause? + +savepoint_clause ::= + TO SAVEPOINT savepoint_specifier + +/* +18 Connection management + + +18.1 connect_statement + +Function +Establish an SQL-session. + + +Format +*/ +connect_statement ::= + CONNECT TO connection_target + +connection_target ::= + SQL_server_name ( AS connection_name )? ( USER connection_user_name )? + | DEFAULT +/* +18.2 set_connection_statement + +Function +Select an SQL-connection from the available SQL-connections. + + +Format +*/ +set_connection_statement ::= + SET CONNECTION connection_object + +connection_object ::= + DEFAULT + | connection_name +/* +18.3 disconnect_statement + +Function +Terminate an SQL-connection. + + +Format +*/ +disconnect_statement ::= + DISCONNECT disconnect_object + +disconnect_object ::= + connection_object + | ALL + | CURRENT +/* +19 Session management + +19.1 set_session_characteristics_statement + +Function +Set one or more characteristics for the current SQL-session. + + +Format +*/ +set_session_characteristics_statement ::= + SET SESSION CHARACTERISTICS AS session_characteristic_list + +session_characteristic_list ::= + session_characteristic ( comma session_characteristic )* + +session_characteristic ::= + session_transaction_characteristics + +session_transaction_characteristics ::= + TRANSACTION transaction_mode ( comma transaction_mode )* +/* +19.2 set_session_user_identifier_statement + +Function +Set the SQL-session user identifier and the current user identifier of the current SQL-session context. + + +Format +*/ +set_session_user_identifier_statement ::= + SET SESSION AUTHORIZATION value_specification +/* +19.3 set_role_statement + +Function +Set the SQL-session role name and the current role name for the current SQL-session context. + + +Format +*/ +set_role_statement ::= + SET ROLE role_specification + +role_specification ::= + value_specification + | NONE +/* +19.4 set_local_time_zone_statement + +Function +Set the current default time zone displacement for the current SQL-session. + + +Format +*/ +set_local_time_zone_statement ::= + SET TIME ZONE set_time_zone_value + +set_time_zone_value ::= + interval_value_expression + | LOCAL +/* +19.5 set_catalog_statement + +Function +Set the default catalog name for unqualified s in s that are prepared in +the current SQL-session by an execute_immediate_statement or a prepare_statement and in s that are invoked directly. + + +Format +*/ +set_catalog_statement ::= + SET catalog_name_characteristic + +catalog_name_characteristic ::= + CATALOG value_specification +/* +19.6 set_schema_statement + +Function +Set the default schema name for unqualified s in s that are +prepared in the current SQL-session by an execute_immediate_statement or a prepare_statement and in +s that are invoked directly. + + +Format +*/ +set_schema_statement ::= + SET schema_name_characteristic + +schema_name_characteristic ::= + SCHEMA value_specification +/* +19.7 set_names_statement + +Function +Set the default character set name for s in s that are prepared +in the current SQL-session by an execute_immediate_statement or a prepare_statement and in s that are invoked directly. + + +Format +*/ +set_names_statement ::= + SET character_set_name_characteristic + +character_set_name_characteristic ::= + NAMES value_specification +/* +19.8 set_path_statement + +Function +Set the SQL-path used to determine the subject routine of s with unqualified s in s that are prepared in the current SQL-session by an or a prepare_statement and in s that are invoked directly. The SQL-path +remains the current SQL-path of the SQL-session until another SQL-path is successfully set. + + +Format +*/ +set_path_statement ::= + SET SQL_path_characteristic + +SQL_path_characteristic ::= + PATH value_specification +/* +19.9 set_transform_group_statement + +Function +Set the group name that identifies the group of transform functions for mapping values of user-defined types +to predefined data types. + + +Format +*/ +set_transform_group_statement ::= + SET transform_group_characteristic + +transform_group_characteristic ::= + DEFAULT TRANSFORM GROUP value_specification + | TRANSFORM GROUP FOR TYPE path_resolved_user_defined_type_name value_specification +/* +19.10 set_session_collation_statement + +Function +Set the SQL-session collation of the SQL-session for one or more character sets. An SQL-session collation +remains effective until another SQL-session collation for the same character set is successfully set. + + +Format +*/ +set_session_collation_statement ::= + SET COLLATION collation_specification ( FOR character_set_specification_list )? + | SET NO COLLATION ( FOR character_set_specification_list )? + +collation_specification ::= + value_specification +/* +20 Dynamic SQL + +20.2 allocate_descriptor_statement + +Function +Allocate an SQL descriptor area. + + +Format +*/ +allocate_descriptor_statement ::= + ALLOCATE SQL? DESCRIPTOR conventional_descriptor_name ( WITH MAX occurrences )? + +occurrences ::= + simple_value_specification + +/* +20.3 deallocate_descriptor_statement + +Function +Deallocate an SQL descriptor area. + + +Format +*/ +deallocate_descriptor_statement ::= + DEALLOCATE SQL? DESCRIPTOR conventional_descriptor_name +/* +20.4 get_descriptor_statement + +Function +Get information from an SQL descriptor area. + + +Format +*/ +get_descriptor_statement ::= + GET SQL? DESCRIPTOR descriptor_name get_descriptor_information + +get_descriptor_information ::= + get_header_information ( comma get_header_information )* + | VALUE item_number get_item_information + ( comma get_item_information )* + +get_header_information ::= + simple_target_specification_1 equals_operator header_item_name + +header_item_name ::= + COUNT + | KEY_TYPE + | DYNAMIC_FUNCTION + | DYNAMIC_FUNCTION_CODE + | TOP_LEVEL_COUNT + +get_item_information ::= + simple_target_specification_2 equals_operator descriptor_item_name + +item_number ::= + simple_value_specification + +simple_target_specification_1 ::= + simple_target_specification + +simple_target_specification_2 ::= + simple_target_specification + +descriptor_item_name ::= + CARDINALITY + | CHARACTER_SET_CATALOG + | CHARACTER_SET_NAME + | CHARACTER_SET_SCHEMA + | COLLATION_CATALOG + | COLLATION_NAME + | COLLATION_SCHEMA + | DATA + | DATETIME_INTERVAL_CODE + | DATETIME_INTERVAL_PRECISION + | DEGREE + | INDICATOR + | KEY_MEMBER + | LENGTH + | LEVEL + | NAME + | NULLABLE + | NULL_ORDERING + | OCTET_LENGTH + | PARAMETER_MODE + | PARAMETER_ORDINAL_POSITION + | PARAMETER_SPECIFIC_CATALOG + | PARAMETER_SPECIFIC_NAME + | PARAMETER_SPECIFIC_SCHEMA + | PRECISION + | RETURNED_CARDINALITY + | RETURNED_LENGTH + | RETURNED_OCTET_LENGTH + | SCALE + | SCOPE_CATALOG + | SCOPE_NAME + | SCOPE_SCHEMA + | SORT_DIRECTION + | TYPE + | UNNAMED + | USER_DEFINED_TYPE_CATALOG + | USER_DEFINED_TYPE_NAME + | USER_DEFINED_TYPE_SCHEMA + | USER_DEFINED_TYPE_CODE +/* +20.5 set_descriptor_statement + +Function +Set information in an SQL descriptor area. + + +Format +*/ +set_descriptor_statement ::= + SET SQL? DESCRIPTOR descriptor_name set_descriptor_information + +set_descriptor_information ::= + set_header_information ( comma set_header_information )* + | VALUE item_number set_item_information + ( comma set_item_information )* + +set_header_information ::= + header_item_name equals_operator simple_value_specification_1 + +set_item_information ::= + descriptor_item_name equals_operator simple_value_specification_2 + +simple_value_specification_1 ::= + simple_value_specification + +simple_value_specification_2 ::= + simple_value_specification +/* +20.6 copy_descriptor_statement + +Function +Copy one SQL descriptor area, in whole or in part, to another SQL descriptor area. + + +Format +*/ +copy_descriptor_statement ::= + copy_whole_descriptor_statement + | copy_item_descriptor_statement + +copy_whole_descriptor_statement ::= + COPY source_descriptor_name TO target_descriptor_name + +copy_item_descriptor_statement ::= + COPY source_descriptor_name VALUE item_number_1 + left_paren copy_descriptor_options right_paren + TO target_descriptor_name VALUE item_number_2 + +source_descriptor_name ::= + descriptor_name + +target_descriptor_name ::= + PTF_descriptor_name + +item_number_1 ::= + simple_value_specification + +item_number_2 ::= + simple_value_specification + +copy_descriptor_options ::= + NAME + | TYPE + | NAME comma TYPE + | DATA +/* +20.7 prepare_statement + +Function +Prepare a statement for execution. + + +Format +*/ +prepare_statement ::= + PREPARE SQL_statement_name attributes_specification? + FROM SQL_statement_variable + +attributes_specification ::= + ATTRIBUTES attributes_variable + +attributes_variable ::= + simple_value_specification + +SQL_statement_variable ::= + simple_value_specification + +preparable_statement ::= + preparable_SQL_data_statement + | preparable_SQL_schema_statement + | preparable_SQL_transaction_statement + | preparable_SQL_control_statement + | preparable_SQL_session_statement + | preparable_implementation_defined_statement + +preparable_SQL_data_statement ::= + delete_statement__searched + | dynamic_single_row_select_statement + | insert_statement + | dynamic_select_statement + | update_statement__searched + | truncate_table_statement + | merge_statement + | preparable_dynamic_delete_statement__positioned + | preparable_dynamic_update_statement__positioned + | hold_locator_statement + | free_locator_statement + +preparable_SQL_schema_statement ::= + SQL_schema_statement + +preparable_SQL_transaction_statement ::= + SQL_transaction_statement + +preparable_SQL_control_statement ::= + SQL_control_statement + +preparable_SQL_session_statement ::= + SQL_session_statement + +dynamic_select_statement ::= + cursor_specification + +preparable_implementation_defined_statement ::= + "!! See the Syntax Rules." +/* +20.8 cursor_attributes + +Function +Specify a list of cursor attributes. + + +Format +*/ +cursor_attributes ::= + cursor_attribute+ + +cursor_attribute ::= + cursor_sensitivity + | cursor_scrollability + | cursor_holdability + | cursor_returnability +/* +20.9 deallocate_prepared_statement + +Function +Deallocate SQL-statements that have been prepared with a prepare_statement. + + +Format +*/ +deallocate_prepared_statement ::= + DEALLOCATE PREPARE SQL_statement_name +/* +20.10 describe_statement + + +Function +Obtain information about the select_list columns or s contained in a prepared +statement or about the columns of the result set associated with a cursor. + + +Format +*/ +describe_statement ::= + describe_input_statement + | describe_output_statement + +describe_input_statement ::= + DESCRIBE INPUT SQL_statement_name using_descriptor nesting_option? + +describe_output_statement ::= + DESCRIBE OUTPUT? described_object using_descriptor nesting_option? + +nesting_option ::= + WITH NESTING + | WITHOUT NESTING + +using_descriptor ::= + USING SQL? DESCRIPTOR descriptor_name + +described_object ::= + SQL_statement_name + | CURSOR cursor_name STRUCTURE +/* +20.11 input_using_clause + +Function +Supply input values for an SQL_dynamic_statement. + + +Format +*/ +input_using_clause ::= + using_arguments + | using_input_descriptor + +using_arguments ::= + USING using_argument ( comma using_argument )* + +using_argument ::= + general_value_specification + +using_input_descriptor ::= + using_descriptor +/* +20.12 output_using_clause + + +Function +Supply output variables for an SQL_dynamic_statement. + + +Format +*/ +output_using_clause ::= + into_arguments + | into_descriptor + +into_arguments ::= + INTO into_argument ( comma into_argument )* + +into_argument ::= + target_specification + +into_descriptor ::= + INTO SQL? DESCRIPTOR descriptor_name +/* +20.13 execute_statement + +Function +Associate input SQL parameters and output targets with a prepared statement and execute the statement. + + +Format +*/ +execute_statement ::= + EXECUTE SQL_statement_name result_using_clause? parameter_using_clause? + +result_using_clause ::= + output_using_clause + +parameter_using_clause ::= + input_using_clause +/* +20.14 execute_immediate_statement + +Function +Dynamically prepare and execute a preparable statement. + + +Format +*/ +execute_immediate_statement ::= + EXECUTE IMMEDIATE SQL_statement_variable +/* +20.15 dynamic_declare_cursor + +Function +Declare a declared dynamic cursor to be associated with a , which may in turn be associated +with a cursor_specification. + + +Format +*/ +dynamic_declare_cursor ::= + DECLARE cursor_name + cursor_properties + FOR statement_name +/* +20.16 descriptor_value_constructor + +Function +Construct a PTF descriptor. + + +Format +*/ +descriptor_value_constructor ::= + DESCRIPTOR left_paren descriptor_column_list right_paren + +descriptor_column_list ::= + descriptor_column_specification ( comma descriptor_column_specification )* + +descriptor_column_specification ::= + column_name data_type? +/* +20.17 allocate_extended_dynamic_cursor_statement + +Function +Define a cursor based on a prepared statement for a cursor_specification. + + +Format +*/ +allocate_extended_dynamic_cursor_statement ::= + ALLOCATE extended_cursor_name + cursor_properties + FOR extended_statement_name +/* +20.18 allocate_received_cursor_statement + +Function +Assign a cursor to the result set sequence returned from an SQL-invoked procedure. + + +Format +*/ +allocate_received_cursor_statement ::= + ALLOCATE cursor_name + CURSOR? FOR PROCEDURE specific_routine_designator +/* +20.19 dynamic_open_statement + +Function +Associate input dynamic parameters with a cursor_specification and open the dynamic cursor. + + +Format +*/ +dynamic_open_statement ::= + OPEN conventional_dynamic_cursor_name input_using_clause? +/* +20.20 dynamic_fetch_statement + +Function +Fetch a row for a dynamic cursor. + + +Format +*/ +dynamic_fetch_statement ::= + FETCH ( fetch_orientation? FROM )? dynamic_cursor_name output_using_clause +/* +20.21 dynamic_single_row_select_statement + +Function +Retrieve values from a dynamically-specified row of a table. + + +Format +*/ +dynamic_single_row_select_statement ::= + query_specification +/* +20.22 dynamic_close_statement + +Function +Close a dynamic cursor. + + +Format +*/ +dynamic_close_statement ::= + CLOSE conventional_dynamic_cursor_name +/* +20.23 dynamic_delete_statement__positioned + +Function +Delete a row of a table. + + +Format +*/ +dynamic_delete_statement__positioned ::= + DELETE FROM target_table WHERE CURRENT OF conventional_dynamic_cursor_name + +/* +20.24 dynamic_update_statement__positioned + +Function +Update a row of a table. + + +Format +*/ +dynamic_update_statement__positioned ::= + UPDATE target_table SET set_clause_list + WHERE CURRENT OF conventional_dynamic_cursor_name +/* +20.25 preparable_dynamic_delete_statement__positioned + +Function +Delete a row of a table through a dynamic cursor. + + +Format +*/ +preparable_dynamic_delete_statement__positioned ::= + DELETE ( FROM target_table )? + WHERE CURRENT OF preparable_dynamic_cursor_name +/* +20.26 preparable_dynamic_cursor_name + +Function +Specify the cursor of a preparable_dynamic_delete_statement__positioned or a . + + +Format +*/ +preparable_dynamic_cursor_name ::= + scope_option? cursor_name +/* +20.27 preparable_dynamic_update_statement__positioned + +Function +Update a row of a table through a dynamic cursor. + + +Format +*/ +preparable_dynamic_update_statement__positioned ::= + UPDATE target_table? SET set_clause_list + WHERE CURRENT OF preparable_dynamic_cursor_name +/* +20.28 pipe_row_statement + +Function +Output a row from a polymorphic table function. + + +Format +*/ +pipe_row_statement ::= + PIPE ROW PTF_descriptor_name +/* +21 Embedded SQL + + +21.1 embedded_SQL_host_program + +Function +Specify an embedded_SQL_host_program. + + +Format +*/ +embedded_SQL_host_program ::= + embedded_SQL_Ada_program + | embedded_SQL_C_program + | embedded_SQL_COBOL_program + | embedded_SQL_Fortran_program + | embedded_SQL_MUMPS_program + | embedded_SQL_Pascal_program + | embedded_SQL_PL_I_program + +embedded_SQL_statement ::= + SQL_prefix statement_or_declaration SQL_terminator? + +statement_or_declaration ::= + declare_cursor + | dynamic_declare_cursor + | temporary_table_declaration + | embedded_authorization_declaration + | embedded_path_specification + | embedded_transform_group_specification + | embedded_collation_specification + | embedded_exception_declaration + | SQL_procedure_statement + +SQL_prefix ::= + EXEC SQL + | ampersand SQL left_paren + +SQL_terminator ::= + END EXEC + | semicolon + | right_paren + +embedded_authorization_declaration ::= + DECLARE embedded_authorization_clause + +embedded_authorization_clause ::= + SCHEMA schema_name + | AUTHORIZATION embedded_authorization_identifier + ( FOR STATIC ( ONLY | AND DYNAMIC ) )? + | SCHEMA schema_name AUTHORIZATION embedded_authorization_identifier + ( FOR STATIC ( ONLY | AND DYNAMIC ) )? + +embedded_authorization_identifier ::= + module_authorization_identifier + +embedded_path_specification ::= + path_specification + +embedded_transform_group_specification ::= + transform_group_specification + +embedded_collation_specification ::= + module_collations + +embedded_SQL_declare_section ::= + embedded_SQL_begin_declare + embedded_character_set_declaration? + host_variable_definition* + embedded_SQL_end_declare + | embedded_SQL_MUMPS_declare + +embedded_character_set_declaration ::= + SQL NAMES ARE character_set_specification + +embedded_SQL_begin_declare ::= + SQL_prefix BEGIN DECLARE SECTION SQL_terminator? + +embedded_SQL_end_declare ::= + SQL_prefix END DECLARE SECTION SQL_terminator? + +embedded_SQL_MUMPS_declare ::= + SQL_prefix + BEGIN DECLARE SECTION + embedded_character_set_declaration? + host_variable_definition* + END DECLARE SECTION + SQL_terminator + +host_variable_definition ::= + Ada_variable_definition + | C_variable_definition + | COBOL_variable_definition + | Fortran_variable_definition + | MUMPS_variable_definition + | Pascal_variable_definition + | PL_I_variable_definition + +embedded_variable_name ::= + colon host_identifier + +host_identifier ::= + Ada_host_identifier + | C_host_identifier + | COBOL_host_identifier + | Fortran_host_identifier + | MUMPS_host_identifier + | Pascal_host_identifier + | PL_I_host_identifier +/* +21.2 embedded_exception_declaration + +Function +Specify the action to be taken when an SQL-statement causes a specific class of condition to be raised. + + +Format +*/ +embedded_exception_declaration ::= + WHENEVER condition condition_action + +condition ::= + SQL_condition + +SQL_condition ::= + major_category + | SQLSTATE ( SQLSTATE_class_code ( ',' SQLSTATE_subclass_code )? ) + | CONSTRAINT constraint_name + +major_category ::= + SQLEXCEPTION + | SQLWARNING + | NOT FOUND + +SQLSTATE_class_code ::= + SQLSTATE_char SQLSTATE_char "!! See the Syntax Rules." + +SQLSTATE_subclass_code ::= + SQLSTATE_char SQLSTATE_char SQLSTATE_char "!! See the Syntax Rules." + +SQLSTATE_char ::= + simple_Latin_upper_case_letter + | digit + +condition_action ::= + CONTINUE + | go_to + +go_to ::= + ( GOTO | GO TO ) goto_target + +goto_target ::= + host_label_identifier + | unsigned_integer + | host_PL_I_label_variable + +host_label_identifier ::= + "!! See the Syntax Rules." + +host_PL_I_label_variable ::= + "!! See the Syntax Rules." +/* +21.3 embedded_SQL_Ada_program + +Function +Specify an embedded_SQL_Ada_program. + + +Format +*/ +embedded_SQL_Ada_program ::= + "!! See the Syntax Rules." + +Ada_variable_definition ::= + Ada_host_identifier ( comma Ada_host_identifier )* colon + Ada_type_specification Ada_initial_value? + +Ada_initial_value ::= + Ada_assignment_operator character_representation+ + +Ada_assignment_operator ::= + colon equals_operator + +Ada_host_identifier ::= + "!! See the Syntax Rules." + +Ada_type_specification ::= + Ada_qualified_type_specification + | Ada_unqualified_type_specification + | Ada_derived_type_specification + +Ada_qualified_type_specification ::= + Interfaces.SQL.CHAR + ( CHARACTER SET IS? character_set_specification )? + left_paren "1" double_period character_length right_paren + | Interfaces.SQL.SMALLINT + | Interfaces.SQL.INT + | Interfaces.SQL.BIGINT + | Interfaces.SQL.REAL + | Interfaces.SQL.DOUBLE_PRECISION + | Interfaces.SQL.BOOLEAN + | Interfaces.SQL.SQLSTATE_TYPE + | Interfaces.SQL.INDICATOR_TYPE + +Ada_unqualified_type_specification ::= + CHAR left_paren "1" double_period character_length right_paren + | SMALLINT + | INT + | BIGINT + | REAL + | DOUBLE_PRECISION + | BOOLEAN + | SQLSTATE_TYPE + | INDICATOR_TYPE + +Ada_derived_type_specification ::= + Ada_CLOB_variable + | Ada_CLOB_locator_variable + | Ada_BINARY_variable + | Ada_VARBINARY_variable + | Ada_BLOB_variable + | Ada_BLOB_locator_variable + | Ada_user_defined_type_variable + | Ada_user_defined_type_locator_variable + | Ada_REF_variable + | Ada_array_locator_variable + | Ada_multiset_locator_variable + +Ada_CLOB_variable ::= + SQL TYPE IS CLOB left_paren character_large_object_length right_paren + ( CHARACTER SET IS? character_set_specification )? + +Ada_CLOB_locator_variable ::= + SQL TYPE IS CLOB AS LOCATOR + +Ada_BINARY_variable ::= + SQL TYPE IS BINARY left_paren length right_paren + +Ada_VARBINARY_variable ::= + SQL TYPE IS VARBINARY left_paren length right_paren + +Ada_BLOB_variable ::= + SQL TYPE IS BLOB left_paren large_object_length right_paren + +Ada_BLOB_locator_variable ::= + SQL TYPE IS BLOB AS LOCATOR + +Ada_user_defined_type_variable ::= + SQL TYPE IS path_resolved_user_defined_type_name AS predefined_type + +Ada_user_defined_type_locator_variable ::= + SQL TYPE IS path_resolved_user_defined_type_name AS LOCATOR + +Ada_REF_variable ::= + SQL TYPE IS reference_type + +Ada_array_locator_variable ::= + SQL TYPE IS array_type AS LOCATOR + +Ada_multiset_locator_variable ::= + SQL TYPE IS multiset_type AS LOCATOR +/* +21.4 embedded_SQL_C_program + +Function +Specify an embedded_SQL_C_program. + + +Format +*/ +embedded_SQL_C_program ::= + "!! See the Syntax Rules." + +C_variable_definition ::= + C_storage_class? C_class_modifier? + C_variable_specification semicolon + +C_variable_specification ::= + C_numeric_variable + | C_character_variable + | C_derived_variable + +C_storage_class ::= + "auto" + | "extern" + | "static" + +C_class_modifier ::= + "const" + | "volatile" + +C_numeric_variable ::= + ( "long" "long" | "long" | "short" | "float" | "double" ) + C_host_identifier C_initial_value? + ( comma C_host_identifier C_initial_value? )* + +C_character_variable ::= + C_character_type ( CHARACTER SET IS? character_set_specification )? + C_host_identifier C_array_specification C_initial_value? + ( comma C_host_identifier C_array_specification + C_initial_value? )* + +C_character_type ::= + "char" + | "unsigned" "char" + | "unsigned" "short" + +C_array_specification ::= + left_bracket character_length right_bracket + +C_host_identifier ::= + "!! See the Syntax Rules." + +C_derived_variable ::= + C_VARCHAR_variable + | C_NCHAR_variable + | C_NCHAR_VARYING_variable + | C_CLOB_variable + | C_NCLOB_variable + | C_BINARY_variable + | C_VARBINARY_variable + | C_BLOB_variable + | C_user_defined_type_variable + | C_CLOB_locator_variable + | C_BLOB_locator_variable + | C_array_locator_variable + | C_multiset_locator_variable + | C_user_defined_type_locator_variable + | C_REF_variable + +C_VARCHAR_variable ::= + VARCHAR ( CHARACTER SET IS? character_set_specification )? + C_host_identifier C_array_specification C_initial_value? + ( comma C_host_identifier C_array_specification C_initial_value? )* + +C_NCHAR_variable ::= + NCHAR C_host_identifier C_array_specification C_initial_value? + ( comma C_host_identifier C_array_specification + C_initial_value? )* + +C_NCHAR_VARYING_variable ::= + NCHAR VARYING C_host_identifier C_array_specification C_initial_value? + ( comma C_host_identifier C_array_specification C_initial_value? )* + +C_CLOB_variable ::= + SQL TYPE IS CLOB left_paren character_large_object_length right_paren + ( CHARACTER SET IS? character_set_specification )? + C_host_identifier C_initial_value? ( comma C_host_identifier C_initial_value? )* + +C_NCLOB_variable ::= + SQL TYPE IS NCLOB left_paren character_large_object_length right_paren + C_host_identifier C_initial_value? ( comma C_host_identifier + C_initial_value? )* + +C_user_defined_type_variable ::= + SQL TYPE IS path_resolved_user_defined_type_name AS predefined_type + C_host_identifier C_initial_value? + ( comma C_host_identifier C_initial_value? )* + +C_BINARY_variable ::= + SQL TYPE IS BINARY left_paren length right_paren + C_host_identifier C_initial_value? + ( comma C_host_identifier C_initial_value? )* + +C_VARBINARY_variable ::= + SQL TYPE IS VARBINARY left_paren length right_paren + C_host_identifier C_initial_value? + ( comma C_host_identifier C_initial_value? )* + +C_BLOB_variable ::= + SQL TYPE IS BLOB left_paren large_object_length right_paren + C_host_identifier C_initial_value? + ( comma C_host_identifier C_initial_value? )* + +C_CLOB_locator_variable ::= + SQL TYPE IS CLOB AS LOCATOR + C_host_identifier C_initial_value? + ( comma C_host_identifier C_initial_value? )* + +C_BLOB_locator_variable ::= + SQL TYPE IS BLOB AS LOCATOR + C_host_identifier C_initial_value? + ( comma C_host_identifier C_initial_value? )* + +C_array_locator_variable ::= + SQL TYPE IS array_type AS LOCATOR + C_host_identifier C_initial_value? + ( comma C_host_identifier C_initial_value? )* + +C_multiset_locator_variable ::= + SQL TYPE IS multiset_type AS LOCATOR + C_host_identifier C_initial_value? + ( comma C_host_identifier C_initial_value? )* + +C_user_defined_type_locator_variable ::= + SQL TYPE IS path_resolved_user_defined_type_name AS LOCATOR + C_host_identifier C_initial_value? + ( comma C_host_identifier C_initial_value? )* + +C_REF_variable ::= + SQL TYPE IS reference_type C_host_identifier C_initial_value? + ( comma C_host_identifier C_initial_value? )* + +C_initial_value ::= + equals_operator character_representation+ +/* +21.5 embedded_SQL_COBOL_program + +Function +Specify an embedded_SQL_COBOL_program. + + +Format +*/ +embedded_SQL_COBOL_program ::= + "!! See the Syntax Rules." + +COBOL_variable_definition ::= + ( "01" | "77" ) COBOL_host_identifier + COBOL_type_specification character_representation* period + +COBOL_host_identifier ::= + "!! See the Syntax Rules." + +COBOL_type_specification ::= + COBOL_character_type + | COBOL_national_character_type + | COBOL_numeric_type + | COBOL_integer_type + | COBOL_derived_type_specification + +COBOL_derived_type_specification ::= + COBOL_CLOB_variable + | COBOL_NCLOB_variable + | COBOL_BINARY_variable + | COBOL_BLOB_variable + | COBOL_user_defined_type_variable + | COBOL_CLOB_locator_variable + | COBOL_BLOB_locator_variable + | COBOL_array_locator_variable + | COBOL_multiset_locator_variable + | COBOL_user_defined_type_locator_variable + | COBOL_REF_variable + +COBOL_character_type ::= + ( CHARACTER SET IS? character_set_specification )? + ( PIC | PICTURE ) IS? ( "X" ( left_paren character_length right_paren )? )+ + +COBOL_national_character_type ::= + ( PIC | PICTURE ) IS? ( "N" ( left_paren character_length right_paren )? )+ + +COBOL_CLOB_variable ::= + ( USAGE IS? )? SQL TYPE IS CLOB left_paren character_large_object_length right_paren + ( CHARACTER SET IS? character_set_specification )? + +COBOL_NCLOB_variable ::= + ( USAGE IS? )? SQL TYPE IS NCLOB left_paren character_large_object_length right_paren + +COBOL_BINARY_variable ::= + ( USAGE IS? )? SQL TYPE IS BINARY left_paren length right_paren + +COBOL_BLOB_variable ::= + ( USAGE IS? )? SQL TYPE IS BLOB left_paren large_object_length right_paren + +COBOL_user_defined_type_variable ::= + ( USAGE IS? )? SQL TYPE IS path_resolved_user_defined_type_name + AS predefined_type + +COBOL_CLOB_locator_variable ::= + ( USAGE IS? )? SQL TYPE IS CLOB AS LOCATOR + +COBOL_BLOB_locator_variable ::= + ( USAGE IS? )? SQL TYPE IS BLOB AS LOCATOR + +COBOL_array_locator_variable ::= + ( USAGE IS? )? SQL TYPE IS array_type AS LOCATOR + +COBOL_multiset_locator_variable ::= + ( USAGE IS? )? SQL TYPE IS multiset_type AS LOCATOR + +COBOL_user_defined_type_locator_variable ::= + ( USAGE IS? )? SQL TYPE IS path_resolved_user_defined_type_name AS LOCATOR + +COBOL_REF_variable ::= + ( USAGE IS? )? SQL TYPE IS reference_type + +COBOL_numeric_type ::= + ( PIC | PICTURE ) IS? "S" COBOL_nines_specification + ( USAGE IS? )? DISPLAY SIGN LEADING SEPARATE + +COBOL_nines_specification ::= + COBOL_nines ( "V" COBOL_nines? )? + | "V" COBOL_nines + +COBOL_integer_type ::= + ( PIC | PICTURE ) IS? "S" COBOL_nines + ( USAGE IS? )? BINARY + +COBOL_nines ::= + ( "9" ( left_paren length right_paren )? )+ +/* +21.6 embedded_SQL_Fortran_program + +Function +Specify an embedded_SQL_Fortran_program. + + +Format +*/ +embedded_SQL_Fortran_program ::= + "!! See the Syntax Rules." + +Fortran_variable_definition ::= + Fortran_type_specification Fortran_host_identifier + ( comma Fortran_host_identifier )* + +Fortran_host_identifier ::= + "!! See the Syntax Rules." + +Fortran_type_specification ::= + CHARACTER ( asterisk character_length )? ( CHARACTER SET + IS? character_set_specification )? + | CHARACTER KIND "=" "n" ( asterisk character_length )? + ( CHARACTER SET IS? character_set_specification )? + | INTEGER + | REAL + | DOUBLE PRECISION + | LOGICAL + | Fortran_derived_type_specification + +Fortran_derived_type_specification ::= + Fortran_CLOB_variable + | Fortran_BINARY_variable + | Fortran_VARBINARY_variable + | Fortran_BLOB_variable + | Fortran_user_defined_type_variable + | Fortran_CLOB_locator_variable + | Fortran_BLOB_locator_variable + | Fortran_user_defined_type_locator_variable + | Fortran_array_locator_variable + | Fortran_multiset_locator_variable + | Fortran_REF_variable + +Fortran_CLOB_variable ::= + SQL TYPE IS CLOB left_paren character_large_object_length right_paren + ( CHARACTER SET IS? character_set_specification )? + +Fortran_BINARY_variable ::= + SQL TYPE IS BINARY left_paren length right_paren + +Fortran_VARBINARY_variable ::= + SQL TYPE IS VARBINARY left_paren length right_paren + +Fortran_BLOB_variable ::= + SQL TYPE IS BLOB left_paren large_object_length right_paren + +Fortran_user_defined_type_variable ::= + SQL TYPE IS path_resolved_user_defined_type_name AS predefined_type + +Fortran_CLOB_locator_variable ::= + SQL TYPE IS CLOB AS LOCATOR + +Fortran_BLOB_locator_variable ::= + SQL TYPE IS BLOB AS LOCATOR + +Fortran_user_defined_type_locator_variable ::= + SQL TYPE IS path_resolved_user_defined_type_name AS LOCATOR + +Fortran_array_locator_variable ::= + SQL TYPE IS array_type AS LOCATOR + +Fortran_multiset_locator_variable ::= + SQL TYPE IS multiset_type AS LOCATOR + +Fortran_REF_variable ::= + SQL TYPE IS reference_type +/* +21.7 embedded_SQL_MUMPS_program + +Function +Specify an embedded_SQL_MUMPS_program. + + +Format +*/ +embedded_SQL_MUMPS_program ::= + "!! See the Syntax Rules." + +MUMPS_variable_definition ::= + MUMPS_numeric_variable semicolon + | MUMPS_character_variable semicolon + | MUMPS_derived_type_specification MUMPS_host_identifier semicolon + +MUMPS_character_variable ::= + VARCHAR MUMPS_character_variable_specifier + ( comma MUMPS_character_variable_specifier )* + +MUMPS_character_variable_specifier ::= + MUMPS_host_identifier MUMPS_length_specification + ( CHARACTER SET IS? character_set_specification )? + +MUMPS_host_identifier ::= + "!! See the Syntax Rules." + +MUMPS_length_specification ::= + left_paren character_length right_paren + +MUMPS_numeric_variable ::= + MUMPS_type_specification MUMPS_host_identifier + ( comma MUMPS_host_identifier )* + +MUMPS_type_specification ::= + INT + | DEC ( left_paren precision ( comma scale )? right_paren )? + | REAL + +MUMPS_derived_type_specification ::= + MUMPS_user_defined_type_variable + | MUMPS_CLOB_locator_variable + | MUMPS_BLOB_locator_variable + | MUMPS_user_defined_type_locator_variable + | MUMPS_array_locator_variable + | MUMPS_multiset_locator_variable + | MUMPS_REF_variable + +MUMPS_user_defined_type_variable ::= + SQL TYPE IS path_resolved_user_defined_type_name AS predefined_type + +MUMPS_CLOB_locator_variable ::= + SQL TYPE IS CLOB AS LOCATOR + +MUMPS_BLOB_locator_variable ::= + SQL TYPE IS BLOB AS LOCATOR + +MUMPS_user_defined_type_locator_variable ::= + SQL TYPE IS path_resolved_user_defined_type_name AS LOCATOR + +MUMPS_array_locator_variable ::= + SQL TYPE IS array_type AS LOCATOR + +MUMPS_multiset_locator_variable ::= + SQL TYPE IS multiset_type AS LOCATOR + +MUMPS_REF_variable ::= + SQL TYPE IS reference_type +/* +21.8 embedded_SQL_Pascal_program + +Function +Specify an embedded_SQL_Pascal_program. + + +Format +*/ +embedded_SQL_Pascal_program ::= + "!! See the Syntax Rules." + +Pascal_variable_definition ::= + Pascal_host_identifier ( comma Pascal_host_identifier )* colon + Pascal_type_specification semicolon + +Pascal_host_identifier ::= + "!! See the Syntax Rules." + +Pascal_type_specification ::= + PACKED ARRAY left_bracket "1" double_period character_length right_bracket + OF CHAR ( CHARACTER SET IS? character_set_specification )? + | INTEGER + | REAL + | CHAR ( CHARACTER SET IS? character_set_specification )? + | BOOLEAN + | Pascal_derived_type_specification + +Pascal_derived_type_specification ::= + Pascal_CLOB_variable + | Pascal_BINARY_variable + | Pascal_BLOB_variable + | Pascal_user_defined_type_variable + | Pascal_CLOB_locator_variable + | Pascal_BLOB_locator_variable + | Pascal_user_defined_type_locator_variable + | Pascal_array_locator_variable + | Pascal_multiset_locator_variable + | Pascal_REF_variable + +Pascal_CLOB_variable ::= + SQL TYPE IS CLOB left_paren character_large_object_length right_paren + ( CHARACTER SET IS? character_set_specification )? + +Pascal_BINARY_variable ::= + SQL TYPE IS BINARY left_paren length right_paren + +Pascal_BLOB_variable ::= + SQL TYPE IS BLOB left_paren large_object_length right_paren + +Pascal_CLOB_locator_variable ::= + SQL TYPE IS CLOB AS LOCATOR + +Pascal_user_defined_type_variable ::= + SQL TYPE IS path_resolved_user_defined_type_name AS predefined_type + +Pascal_BLOB_locator_variable ::= + SQL TYPE IS BLOB AS LOCATOR + +Pascal_user_defined_type_locator_variable ::= + SQL TYPE IS path_resolved_user_defined_type_name AS LOCATOR + +Pascal_array_locator_variable ::= + SQL TYPE IS array_type AS LOCATOR + +Pascal_multiset_locator_variable ::= + SQL TYPE IS multiset_type AS LOCATOR + +Pascal_REF_variable ::= + SQL TYPE IS reference_type +/* +21.9 embedded_SQL_PL_I_program + +Function +Specify an embedded_SQL_PL_I_program. + + +Format +*/ +embedded_SQL_PL_I_program ::= + "!! See the Syntax Rules." + +PL_I_variable_definition ::= + ( DCL | DECLARE ) PL_I_type_specification character_representation* semicolon + | ( PL_I_host_identifier | left_paren PL_I_host_identifier + ( comma PL_I_host_identifier )* right_paren ) + PL_I_type_specification character_representation* semicolon + +PL_I_host_identifier ::= + "!! See the Syntax Rules." + +PL_I_type_specification ::= + ( CHAR | CHARACTER ) VARYING? left_paren character_length right_paren + ( CHARACTER SET IS? character_set_specification )? + | PL_I_type_fixed_decimal left_paren precision ( comma scale )? right_paren + | PL_I_type_fixed_binary ( left_paren precision right_paren )? + | PL_I_type_float_binary left_paren precision right_paren + | PL_I_derived_type_specification + +PL_I_derived_type_specification ::= + PL_I_CLOB_variable + | PL_I_BINARY_variable + | PL_I_VARBINARY_variable + | PL_I_BLOB_variable + | PL_I_user_defined_type_variable + | PL_I_CLOB_locator_variable + | PL_I_BLOB_locator_variable + | PL_I_user_defined_type_locator_variable + | PL_I_array_locator_variable + | PL_I_multiset_locator_variable + | PL_I_REF_variable + +PL_I_CLOB_variable ::= + SQL TYPE IS CLOB left_paren character_large_object_length right_paren + ( CHARACTER SET IS? character_set_specification )? + +PL_I_BINARY_variable ::= + SQL TYPE IS BINARY left_paren length right_paren + +PL_I_VARBINARY_variable ::= + SQL TYPE IS VARBINARY left_paren length right_paren + +PL_I_BLOB_variable ::= + SQL TYPE IS BLOB left_paren large_object_length right_paren + +PL_I_user_defined_type_variable ::= + SQL TYPE IS path_resolved_user_defined_type_name AS predefined_type + +PL_I_CLOB_locator_variable ::= + SQL TYPE IS CLOB AS LOCATOR + +PL_I_BLOB_locator_variable ::= + SQL TYPE IS BLOB AS LOCATOR + +PL_I_user_defined_type_locator_variable ::= + SQL TYPE IS path_resolved_user_defined_type_name AS LOCATOR + +PL_I_array_locator_variable ::= + SQL TYPE IS array_type AS LOCATOR + +PL_I_multiset_locator_variable ::= + SQL TYPE IS multiset_type AS LOCATOR + +PL_I_REF_variable ::= + SQL TYPE IS reference_type + +PL_I_type_fixed_decimal ::= + ( DEC | DECIMAL ) FIXED + | FIXED ( DEC | DECIMAL ) + +PL_I_type_fixed_binary ::= + ( BIN | BINARY ) FIXED + | FIXED ( BIN | BINARY ) + +PL_I_type_float_binary ::= + ( BIN | BINARY ) FLOAT + | FLOAT ( BIN | BINARY ) + +/* +22.2 direct_select_statement__multiple_rows + +Function +Specify a statement to retrieve multiple rows from a specified table. + + +Format +*/ +direct_select_statement__multiple_rows ::= + cursor_specification +/* +23 Diagnostics management + + +23.1 get_diagnostics_statement + +Function +Get exception or completion condition information from a diagnostics area. + + +Format +*/ +get_diagnostics_statement ::= + GET DIAGNOSTICS SQL_diagnostics_information + +SQL_diagnostics_information ::= + statement_information + | condition_information + | all_information + +statement_information ::= + statement_information_item ( comma statement_information_item )* + +statement_information_item ::= + simple_target_specification equals_operator statement_information_item_name + +statement_information_item_name ::= + NUMBER + | MORE + | COMMAND_FUNCTION + | COMMAND_FUNCTION_CODE + | DYNAMIC_FUNCTION + | DYNAMIC_FUNCTION_CODE + | ROW_COUNT + | TRANSACTIONS_COMMITTED + | TRANSACTIONS_ROLLED_BACK + | TRANSACTION_ACTIVE + +condition_information ::= + CONDITION condition_number condition_information_item + ( comma condition_information_item )* + +condition_information_item ::= + simple_target_specification equals_operator condition_information_item_name + +condition_information_item_name ::= + CATALOG_NAME + | CLASS_ORIGIN + | COLUMN_NAME + | CONDITION_NUMBER + | CONNECTION_NAME + | CONSTRAINT_CATALOG + | CONSTRAINT_NAME + | CONSTRAINT_SCHEMA + | CURSOR_NAME + | MESSAGE_LENGTH + | MESSAGE_OCTET_LENGTH + | MESSAGE_TEXT + | PARAMETER_MODE + | PARAMETER_NAME + | PARAMETER_ORDINAL_POSITION + | RETURNED_SQLSTATE + | ROUTINE_CATALOG + | ROUTINE_NAME + | ROUTINE_SCHEMA + | SCHEMA_NAME + | SERVER_NAME + | SPECIFIC_NAME + | SUBCLASS_ORIGIN + | TABLE_NAME + | TRIGGER_CATALOG + | TRIGGER_NAME + | TRIGGER_SCHEMA + +all_information ::= + all_info_target equals_operator ALL all_qualifier? + +all_info_target ::= + simple_target_specification + +all_qualifier ::= + STATEMENT + | CONDITION condition_number? + +condition_number ::= + simple_value_specification + +// Tokens + +//non_reserved_word + + A ::= "A*" +ABSOLUTE ::= "ABSOLUTE*" +ACTION ::= "ACTION*" +ADA ::= "ADA*" +ADD ::= "ADD*" +ADMIN ::= "ADMIN*" +AFTER ::= "AFTER*" +ALWAYS ::= "ALWAYS*" +ASC ::= "ASC*" +ASSERTION ::= "ASSERTION*" +ASSIGNMENT ::= "ASSIGNMENT*" +ATTRIBUTE ::= "ATTRIBUTE*" +ATTRIBUTES ::= "ATTRIBUTES*" +BEFORE ::= "BEFORE*" +BERNOULLI ::= "BERNOULLI*" +BREADTH ::= "BREADTH*" +C ::= "C*" +CASCADE ::= "CASCADE*" +CATALOG ::= "CATALOG*" +CATALOG_NAME ::= "CATALOG_NAME*" +CHAIN ::= "CHAIN*" +CHAINING ::= "CHAINING*" +CHARACTER_SET_CATALOG ::= "CHARACTER_SET_CATALOG*" +CHARACTER_SET_NAME ::= "CHARACTER_SET_NAME*" +CHARACTER_SET_SCHEMA ::= "CHARACTER_SET_SCHEMA*" +CHARACTERISTICS ::= "CHARACTERISTICS*" +CHARACTERS ::= "CHARACTERS*" +CLASS_ORIGIN ::= "CLASS_ORIGIN*" +COBOL ::= "COBOL*" +COLLATION ::= "COLLATION*" +COLLATION_CATALOG ::= "COLLATION_CATALOG*" +COLLATION_NAME ::= "COLLATION_NAME*" +COLLATION_SCHEMA ::= "COLLATION_SCHEMA*" +COLUMNS ::= "COLUMNS*" +COLUMN_NAME ::= "COLUMN_NAME*" +COMMAND_FUNCTION ::= "COMMAND_FUNCTION*" +COMMAND_FUNCTION_CODE ::= "COMMAND_FUNCTION_CODE*" +COMMITTED ::= "COMMITTED*" +CONDITIONAL ::= "CONDITIONAL*" +CONDITION_NUMBER ::= "CONDITION_NUMBER*" +CONNECTION ::= "CONNECTION*" +CONNECTION_NAME ::= "CONNECTION_NAME*" +CONSTRAINT_CATALOG ::= "CONSTRAINT_CATALOG*" +CONSTRAINT_NAME ::= "CONSTRAINT_NAME*" +CONSTRAINT_SCHEMA ::= "CONSTRAINT_SCHEMA*" +CONSTRAINTS ::= "CONSTRAINTS*" +CONSTRUCTOR ::= "CONSTRUCTOR*" +CONTINUE ::= "CONTINUE*" +CURSOR_NAME ::= "CURSOR_NAME*" +DATA ::= "DATA*" +DATETIME_INTERVAL_CODE ::= "DATETIME_INTERVAL_CODE*" +DATETIME_INTERVAL_PRECISION ::= "DATETIME_INTERVAL_PRECISION*" +DEFAULTS ::= "DEFAULTS*" +DEFERRABLE ::= "DEFERRABLE*" +DEFERRED ::= "DEFERRED*" +DEFINED ::= "DEFINED*" +DEFINER ::= "DEFINER*" +DEGREE ::= "DEGREE*" +DEPTH ::= "DEPTH*" +DERIVED ::= "DERIVED*" +DESC ::= "DESC*" +DESCRIBE_CATALOG ::= "DESCRIBE_CATALOG*" +DESCRIBE_NAME ::= "DESCRIBE_NAME*" +DESCRIBE_PROCEDURE_SPECIFIC_CATALOG ::= "DESCRIBE_PROCEDURE_SPECIFIC_CATALOG*" +DESCRIBE_PROCEDURE_SPECIFIC_NAME ::= "DESCRIBE_PROCEDURE_SPECIFIC_NAME*" +DESCRIBE_PROCEDURE_SPECIFIC_SCHEMA ::= "DESCRIBE_PROCEDURE_SPECIFIC_SCHEMA*" +DESCRIBE_SCHEMA ::= "DESCRIBE_SCHEMA*" +DESCRIPTOR ::= "DESCRIPTOR*" +DIAGNOSTICS ::= "DIAGNOSTICS*" +DISPATCH ::= "DISPATCH*" +DOMAIN ::= "DOMAIN*" +DYNAMIC_FUNCTION ::= "DYNAMIC_FUNCTION*" +DYNAMIC_FUNCTION_CODE ::= "DYNAMIC_FUNCTION_CODE*" +ENCODING ::= "ENCODING*" +ENFORCED ::= "ENFORCED*" +ERROR ::= "ERROR*" +EXCLUDE ::= "EXCLUDE*" +EXCLUDING ::= "EXCLUDING*" +EXPRESSION ::= "EXPRESSION*" +FINAL ::= "FINAL*" +FINISH ::= "FINISH*" +FINISH_CATALOG ::= "FINISH_CATALOG*" +FINISH_NAME ::= "FINISH_NAME*" +FINISH_PROCEDURE_SPECIFIC_CATALOG ::= "FINISH_PROCEDURE_SPECIFIC_CATALOG*" +FINISH_PROCEDURE_SPECIFIC_NAME ::= "FINISH_PROCEDURE_SPECIFIC_NAME*" +FINISH_PROCEDURE_SPECIFIC_SCHEMA ::= "FINISH_PROCEDURE_SPECIFIC_SCHEMA*" +FINISH_SCHEMA ::= "FINISH_SCHEMA*" +FIRST ::= "FIRST*" +FLAG ::= "FLAG*" +FOLLOWING ::= "FOLLOWING*" +FORMAT ::= "FORMAT*" +FORTRAN ::= "FORTRAN*" +FOUND ::= "FOUND*" +FULFILL ::= "FULFILL*" +FULFILL_CATALOG ::= "FULFILL_CATALOG*" +FULFILL_NAME ::= "FULFILL_NAME*" +FULFILL_PROCEDURE_SPECIFIC_CATALOG ::= "FULFILL_PROCEDURE_SPECIFIC_CATALOG*" +FULFILL_PROCEDURE_SPECIFIC_NAME ::= "FULFILL_PROCEDURE_SPECIFIC_NAME*" +FULFILL_PROCEDURE_SPECIFIC_SCHEMA ::= "FULFILL_PROCEDURE_SPECIFIC_SCHEMA*" +FULFILL_SCHEMA ::= "FULFILL_SCHEMA*" +G ::= "G*" +GENERAL ::= "GENERAL*" +GENERATED ::= "GENERATED*" +GO ::= "GO*" +GOTO ::= "GOTO*" +GRANTED ::= "GRANTED*" +HAS_PASS_THROUGH_COLUMNS ::= "HAS_PASS_THROUGH_COLUMNS*" +HAS_PASS_THRU_COLS ::= "HAS_PASS_THRU_COLS*" +HIERARCHY ::= "HIERARCHY*" +IGNORE ::= "IGNORE*" +IMMEDIATE ::= "IMMEDIATE*" +IMMEDIATELY ::= "IMMEDIATELY*" +IMPLEMENTATION ::= "IMPLEMENTATION*" +INCLUDING ::= "INCLUDING*" +INCREMENT ::= "INCREMENT*" +INITIALLY ::= "INITIALLY*" +INPUT ::= "INPUT*" +INSTANCE ::= "INSTANCE*" +INSTANTIABLE ::= "INSTANTIABLE*" +INSTEAD ::= "INSTEAD*" +INVOKER ::= "INVOKER*" +ISOLATION ::= "ISOLATION*" +IS_PRUNABLE ::= "IS_PRUNABLE*" +JSON ::= "JSON*" +K ::= "K*" +KEEP ::= "KEEP*" +KEY ::= "KEY*" +KEYS ::= "KEYS*" +KEY_MEMBER ::= "KEY_MEMBER*" +KEY_TYPE ::= "KEY_TYPE*" +LAST ::= "LAST*" +LENGTH ::= "LENGTH*" +LEVEL ::= "LEVEL*" +LOCATOR ::= "LOCATOR*" +M ::= "M*" +MAP ::= "MAP*" +MATCHED ::= "MATCHED*" +MAXVALUE ::= "MAXVALUE*" +MESSAGE_LENGTH ::= "MESSAGE_LENGTH*" +MESSAGE_OCTET_LENGTH ::= "MESSAGE_OCTET_LENGTH*" +MESSAGE_TEXT ::= "MESSAGE_TEXT*" +MINVALUE ::= "MINVALUE*" +MORE ::= "MORE*" +MUMPS ::= "MUMPS*" +NAME ::= "NAME*" +NAMES ::= "NAMES*" +NESTED ::= "NESTED*" +NESTING ::= "NESTING*" +NEXT ::= "NEXT*" +NFC ::= "NFC*" +NFD ::= "NFD*" +NFKC ::= "NFKC*" +NFKD ::= "NFKD*" +NORMALIZED ::= "NORMALIZED*" +NULLABLE ::= "NULLABLE*" +NULLS ::= "NULLS*" +NUMBER ::= "NUMBER*" +OBJECT ::= "OBJECT*" +OCTETS ::= "OCTETS*" +OPTION ::= "OPTION*" +OPTIONS ::= "OPTIONS*" +ORDERING ::= "ORDERING*" +ORDINALITY ::= "ORDINALITY*" +OTHERS ::= "OTHERS*" +OUTPUT ::= "OUTPUT*" +OVERFLOW ::= "OVERFLOW*" +OVERRIDING ::= "OVERRIDING*" +P ::= "P*" +PAD ::= "PAD*" +PARAMETER_MODE ::= "PARAMETER_MODE*" +PARAMETER_NAME ::= "PARAMETER_NAME*" +PARAMETER_ORDINAL_POSITION ::= "PARAMETER_ORDINAL_POSITION*" +PARAMETER_SPECIFIC_CATALOG ::= "PARAMETER_SPECIFIC_CATALOG*" +PARAMETER_SPECIFIC_NAME ::= "PARAMETER_SPECIFIC_NAME*" +PARAMETER_SPECIFIC_SCHEMA ::= "PARAMETER_SPECIFIC_SCHEMA*" +PARTIAL ::= "PARTIAL*" +PASCAL ::= "PASCAL*" +PASS ::= "PASS*" +PASSING ::= "PASSING*" +PAST ::= "PAST*" +PATH ::= "PATH*" +PLACING ::= "PLACING*" +PLAN ::= "PLAN*" +PLI ::= "PLI*" +PRECEDING ::= "PRECEDING*" +PRESERVE ::= "PRESERVE*" +PRIOR ::= "PRIOR*" +PRIVATE ::= "PRIVATE*" +PRIVATE_PARAMETERS ::= "PRIVATE_PARAMETERS*" +PRIVATE_PARAMS_S ::= "PRIVATE_PARAMS_S*" +PRIVILEGES ::= "PRIVILEGES*" +PRUNE ::= "PRUNE*" +PUBLIC ::= "PUBLIC*" +QUOTES ::= "QUOTES*" +READ ::= "READ*" +RELATIVE ::= "RELATIVE*" +REPEATABLE ::= "REPEATABLE*" +RESPECT ::= "RESPECT*" +RESTART ::= "RESTART*" +RESTRICT ::= "RESTRICT*" +RETURNED_CARDINALITY ::= "RETURNED_CARDINALITY*" +RETURNED_LENGTH ::= "RETURNED_LENGTH*" +RETURNED_OCTET_LENGTH ::= "RETURNED_OCTET_LENGTH*" +RETURNED_SQLSTATE ::= "RETURNED_SQLSTATE*" +RETURNING ::= "RETURNING*" +RETURNS_ONLY_PASS_THROUGH ::= "RETURNS_ONLY_PASS_THROUGH*" +RET_ONLY_PASS_THRU ::= "RET_ONLY_PASS_THRU*" +ROLE ::= "ROLE*" +ROUTINE ::= "ROUTINE*" +ROUTINE_CATALOG ::= "ROUTINE_CATALOG*" +ROUTINE_NAME ::= "ROUTINE_NAME*" +ROUTINE_SCHEMA ::= "ROUTINE_SCHEMA*" +ROW_COUNT ::= "ROW_COUNT*" +SCALAR ::= "SCALAR*" +SCALE ::= "SCALE*" +SCHEMA ::= "SCHEMA*" +SCHEMA_NAME ::= "SCHEMA_NAME*" +SCOPE_CATALOG ::= "SCOPE_CATALOG*" +SCOPE_NAME ::= "SCOPE_NAME*" +SCOPE_SCHEMA ::= "SCOPE_SCHEMA*" +SECTION ::= "SECTION*" +SECURITY ::= "SECURITY*" +SELF ::= "SELF*" +SEQUENCE ::= "SEQUENCE*" +SERIALIZABLE ::= "SERIALIZABLE*" +SERVER_NAME ::= "SERVER_NAME*" +SESSION ::= "SESSION*" +SETS ::= "SETS*" +SIMPLE ::= "SIMPLE*" +SIZE ::= "SIZE*" +SOURCE ::= "SOURCE*" +SPACE ::= "SPACE*" +SPECIFIC_NAME ::= "SPECIFIC_NAME*" +START_CATALOG ::= "START_CATALOG*" +START_NAME ::= "START_NAME*" +START_PROCEDURE_SPECIFIC_CATALOG ::= "START_PROCEDURE_SPECIFIC_CATALOG*" +START_PROCEDURE_SPECIFIC_NAME ::= "START_PROCEDURE_SPECIFIC_NAME*" +START_PROCEDURE_SPECIFIC_SCHEMA ::= "START_PROCEDURE_SPECIFIC_SCHEMA*" +START_SCHEMA ::= "START_SCHEMA*" +STATE ::= "STATE*" +STATEMENT ::= "STATEMENT*" +STRING ::= "STRING*" +STRUCTURE ::= "STRUCTURE*" +STYLE ::= "STYLE*" +SUBCLASS_ORIGIN ::= "SUBCLASS_ORIGIN*" +T ::= "T*" +TABLE_NAME ::= "TABLE_NAME*" +TABLE_SEMANTICS ::= "TABLE_SEMANTICS*" +TEMPORARY ::= "TEMPORARY*" +THROUGH ::= "THROUGH*" +TIES ::= "TIES*" +TOP_LEVEL_COUNT ::= "TOP_LEVEL_COUNT*" +TRANSACTION ::= "TRANSACTION*" +TRANSACTION_ACTIVE ::= "TRANSACTION_ACTIVE*" +TRANSACTIONS_COMMITTED ::= "TRANSACTIONS_COMMITTED*" +TRANSACTIONS_ROLLED_BACK ::= "TRANSACTIONS_ROLLED_BACK*" +TRANSFORM ::= "TRANSFORM*" +TRANSFORMS ::= "TRANSFORMS*" +TRIGGER_CATALOG ::= "TRIGGER_CATALOG*" +TRIGGER_NAME ::= "TRIGGER_NAME*" +TRIGGER_SCHEMA ::= "TRIGGER_SCHEMA*" +TYPE ::= "TYPE*" +UNBOUNDED ::= "UNBOUNDED*" +UNCOMMITTED ::= "UNCOMMITTED*" +UNCONDITIONAL ::= "UNCONDITIONAL*" +UNDER ::= "UNDER*" +UNNAMED ::= "UNNAMED*" +USAGE ::= "USAGE*" +USER_DEFINED_TYPE_CATALOG ::= "USER_DEFINED_TYPE_CATALOG*" +USER_DEFINED_TYPE_CODE ::= "USER_DEFINED_TYPE_CODE*" +USER_DEFINED_TYPE_NAME ::= "USER_DEFINED_TYPE_NAME*" +USER_DEFINED_TYPE_SCHEMA ::= "USER_DEFINED_TYPE_SCHEMA*" +UTF16 ::= "UTF16*" +UTF32 ::= "UTF32*" +UTF8 ::= "UTF8*" +VIEW ::= "VIEW*" +WORK ::= "WORK*" +WRAPPER ::= "WRAPPER*" +WRITE ::= "WRITE*" +ZONE ::= "ZONE*" + +//reserved_word + +ABS ::= "ABS" +ACOS ::= "ACOS" +ALL ::= "ALL" +ALLOCATE ::= "ALLOCATE" +ALTER ::= "ALTER" +AND ::= "AND" +ANY ::= "ANY" +ARE ::= "ARE" +ARRAY ::= "ARRAY" +ARRAY_AGG ::= "ARRAY_AGG" +ARRAY_MAX_CARDINALITY ::= "ARRAY_MAX_CARDINALITY" +AS ::= "AS" +ASENSITIVE ::= "ASENSITIVE" +ASIN ::= "ASIN" +ASYMMETRIC ::= "ASYMMETRIC" +AT ::= "AT" +ATAN ::= "ATAN" +ATOMIC ::= "ATOMIC" +AUTHORIZATION ::= "AUTHORIZATION" +AVG ::= "AVG" +BEGIN ::= "BEGIN" +BEGIN_FRAME ::= "BEGIN_FRAME" +BEGIN_PARTITION ::= "BEGIN_PARTITION" +BETWEEN ::= "BETWEEN" +BIGINT ::= "BIGINT" +BINARY ::= "BINARY" +BLOB ::= "BLOB" +BOOLEAN ::= "BOOLEAN" +BOTH ::= "BOTH" +BY ::= "BY" +CALL ::= "CALL" +CALLED ::= "CALLED" +CARDINALITY ::= "CARDINALITY" +CASCADED ::= "CASCADED" +CASE ::= "CASE" +CAST ::= "CAST" +CEIL ::= "CEIL" +CEILING ::= "CEILING" +CHAR ::= "CHAR" +CHAR_LENGTH ::= "CHAR_LENGTH" +CHARACTER ::= "CHARACTER" +CHARACTER_LENGTH ::= "CHARACTER_LENGTH" +CHECK ::= "CHECK" +CLASSIFIER ::= "CLASSIFIER" +CLOB ::= "CLOB" +CLOSE ::= "CLOSE" +COALESCE ::= "COALESCE" +COLLATE ::= "COLLATE" +COLLECT ::= "COLLECT" +COLUMN ::= "COLUMN" +COMMIT ::= "COMMIT" +CONDITION ::= "CONDITION" +CONNECT ::= "CONNECT" +CONSTRAINT ::= "CONSTRAINT" +CONTAINS ::= "CONTAINS" +CONVERT ::= "CONVERT" +COPY ::= "COPY" +CORR ::= "CORR" +CORRESPONDING ::= "CORRESPONDING" +COS ::= "COS" +COSH ::= "COSH" +COUNT ::= "COUNT" +COVAR_POP ::= "COVAR_POP" +COVAR_SAMP ::= "COVAR_SAMP" +CREATE ::= "CREATE" +CROSS ::= "CROSS" +CUBE ::= "CUBE" +CUME_DIST ::= "CUME_DIST" +CURRENT ::= "CURRENT" +CURRENT_CATALOG ::= "CURRENT_CATALOG" +CURRENT_DATE ::= "CURRENT_DATE" +CURRENT_DEFAULT_TRANSFORM_GROUP ::= "CURRENT_DEFAULT_TRANSFORM_GROUP" +CURRENT_PATH ::= "CURRENT_PATH" +CURRENT_ROLE ::= "CURRENT_ROLE" +CURRENT_ROW ::= "CURRENT_ROW" +CURRENT_SCHEMA ::= "CURRENT_SCHEMA" +CURRENT_TIME ::= "CURRENT_TIME" +CURRENT_TIMESTAMP ::= "CURRENT_TIMESTAMP" +CURRENT_PATH ::= "CURRENT_PATH" +CURRENT_ROLE ::= "CURRENT_ROLE" +CURRENT_TRANSFORM_GROUP_FOR_TYPE ::= "CURRENT_TRANSFORM_GROUP_FOR_TYPE" +CURRENT_USER ::= "CURRENT_USER" +CURSOR ::= "CURSOR" +CYCLE ::= "CYCLE" +DATE ::= "DATE" +DAY ::= "DAY" +DEALLOCATE ::= "DEALLOCATE" +DEC ::= "DEC" +DECIMAL ::= "DECIMAL" +DECFLOAT ::= "DECFLOAT" +DECLARE ::= "DECLARE" +DEFAULT ::= "DEFAULT" +DEFINE ::= "DEFINE" +DELETE ::= "DELETE" +DENSE_RANK ::= "DENSE_RANK" +DEREF ::= "DEREF" +DESCRIBE ::= "DESCRIBE" +DETERMINISTIC ::= "DETERMINISTIC" +DISCONNECT ::= "DISCONNECT" +DISTINCT ::= "DISTINCT" +DOUBLE ::= "DOUBLE" +DROP ::= "DROP" +DYNAMIC ::= "DYNAMIC" +EACH ::= "EACH" +ELEMENT ::= "ELEMENT" +ELSE ::= "ELSE" +EMPTY ::= "EMPTY" +END ::= "END" +END_FRAME ::= "END_FRAME" +END_PARTITION ::= "END_PARTITION" +END-EXEC ::= "END-EXEC" +EQUALS ::= "EQUALS" +ESCAPE ::= "ESCAPE" +EVERY ::= "EVERY" +EXCEPT ::= "EXCEPT" +EXEC ::= "EXEC" +EXECUTE ::= "EXECUTE" +EXISTS ::= "EXISTS" +EXP ::= "EXP" +EXTERNAL ::= "EXTERNAL" +EXTRACT ::= "EXTRACT" +FALSE ::= "FALSE" +FETCH ::= "FETCH" +FILTER ::= "FILTER" +FIRST_VALUE ::= "FIRST_VALUE" +FLOAT ::= "FLOAT" +FLOOR ::= "FLOOR" +FOR ::= "FOR" +FOREIGN ::= "FOREIGN" +FRAME_ROW ::= "FRAME_ROW" +FREE ::= "FREE" +FROM ::= "FROM" +FULL ::= "FULL" +FUNCTION ::= "FUNCTION" +FUSION ::= "FUSION" +GET ::= "GET" +GLOBAL ::= "GLOBAL" +GRANT ::= "GRANT" +GROUP ::= "GROUP" +GROUPING ::= "GROUPING" +GROUPS ::= "GROUPS" +HAVING ::= "HAVING" +HOLD ::= "HOLD" +HOUR ::= "HOUR" +IDENTITY ::= "IDENTITY" +IN ::= "IN" +INDICATOR ::= "INDICATOR" +INITIAL ::= "INITIAL" +INNER ::= "INNER" +INOUT ::= "INOUT" +INSENSITIVE ::= "INSENSITIVE" +INSERT ::= "INSERT" +INT ::= "INT" +INTEGER ::= "INTEGER" +INTERSECT ::= "INTERSECT" +INTERSECTION ::= "INTERSECTION" +INTERVAL ::= "INTERVAL" +INTO ::= "INTO" +IS ::= "IS" +JOIN ::= "JOIN" +JSON_ARRAY ::= "JSON_ARRAY" +JSON_ARRAYAGG ::= "JSON_ARRAYAGG" +JSON_EXISTS ::= "JSON_EXISTS" +JSON_OBJECT ::= "JSON_OBJECT" +JSON_OBJECTAGG ::= "JSON_OBJECTAGG" +JSON_QUERY ::= "JSON_QUERY" +JSON_TABLE ::= "JSON_TABLE" +JSON_TABLE_PRIMITIVE ::= "JSON_TABLE_PRIMITIVE" +JSON_VALUE ::= "JSON_VALUE" +LAG ::= "LAG" +LANGUAGE ::= "LANGUAGE" +LARGE ::= "LARGE" +LAST_VALUE ::= "LAST_VALUE" +LATERAL ::= "LATERAL" +LEAD ::= "LEAD" +LEADING ::= "LEADING" +LEFT ::= "LEFT" +LIKE ::= "LIKE" +LIKE_REGEX ::= "LIKE_REGEX" +LISTAGG ::= "LISTAGG" +LN ::= "LN" +LOCAL ::= "LOCAL" +LOCALTIME ::= "LOCALTIME" +LOCALTIMESTAMP ::= "LOCALTIMESTAMP" +LOG ::= "LOG" +LOG10 ::= "LOG10" +LOWER ::= "LOWER" +MATCH ::= "MATCH" +MATCH_NUMBER ::= "MATCH_NUMBER" +MATCH_RECOGNIZE ::= "MATCH_RECOGNIZE" +MATCHES ::= "MATCHES" +MAX ::= "MAX" +MEMBER ::= "MEMBER" +MERGE ::= "MERGE" +METHOD ::= "METHOD" +MIN ::= "MIN" +MINUTE ::= "MINUTE" +MOD ::= "MOD" +MODIFIES ::= "MODIFIES" +MODULE ::= "MODULE" +MONTH ::= "MONTH" +MULTISET ::= "MULTISET" +NATIONAL ::= "NATIONAL" +NATURAL ::= "NATURAL" +NCHAR ::= "NCHAR" +NCLOB ::= "NCLOB" +NEW ::= "NEW" +NO ::= "NO" +NONE ::= "NONE" +NORMALIZE ::= "NORMALIZE" +NOT ::= "NOT" +NTH_VALUE ::= "NTH_VALUE" +NTILE ::= "NTILE" +NULL ::= "NULL" +NULLIF ::= "NULLIF" +NUMERIC ::= "NUMERIC" +OCTET_LENGTH ::= "OCTET_LENGTH" +OCCURRENCES_REGEX ::= "OCCURRENCES_REGEX" +OF ::= "OF" +OFFSET ::= "OFFSET" +OLD ::= "OLD" +OMIT ::= "OMIT" +ON ::= "ON" +ONE ::= "ONE" +ONLY ::= "ONLY" +OPEN ::= "OPEN" +OR ::= "OR" +ORDER ::= "ORDER" +OUT ::= "OUT" +OUTER ::= "OUTER" +OVER ::= "OVER" +OVERLAPS ::= "OVERLAPS" +OVERLAY ::= "OVERLAY" +PARAMETER ::= "PARAMETER" +PARTITION ::= "PARTITION" +PATTERN ::= "PATTERN" +PER ::= "PER" +PERCENT ::= "PERCENT" +PERCENT_RANK ::= "PERCENT_RANK" +PERCENTILE_CONT ::= "PERCENTILE_CONT" +PERCENTILE_DISC ::= "PERCENTILE_DISC" +PERIOD ::= "PERIOD" +PORTION ::= "PORTION" +POSITION ::= "POSITION" +POSITION_REGEX ::= "POSITION_REGEX" +POWER ::= "POWER" +PRECEDES ::= "PRECEDES" +PRECISION ::= "PRECISION" +PREPARE ::= "PREPARE" +PRIMARY ::= "PRIMARY" +PROCEDURE ::= "PROCEDURE" +PTF ::= "PTF" +RANGE ::= "RANGE" +RANK ::= "RANK" +READS ::= "READS" +REAL ::= "REAL" +RECURSIVE ::= "RECURSIVE" +REF ::= "REF" +REFERENCES ::= "REFERENCES" +REFERENCING ::= "REFERENCING" +REGR_AVGX ::= "REGR_AVGX" +REGR_AVGY ::= "REGR_AVGY" +REGR_COUNT ::= "REGR_COUNT" +REGR_INTERCEPT ::= "REGR_INTERCEPT" +REGR_R2 ::= "REGR_R2" +REGR_SLOPE ::= "REGR_SLOPE" +REGR_SXX ::= "REGR_SXX" +REGR_SXY ::= "REGR_SXY" +REGR_SYY ::= "REGR_SYY" +RELEASE ::= "RELEASE" +RESULT ::= "RESULT" +RETURN ::= "RETURN" +RETURNS ::= "RETURNS" +REVOKE ::= "REVOKE" +RIGHT ::= "RIGHT" +ROLLBACK ::= "ROLLBACK" +ROLLUP ::= "ROLLUP" +ROW ::= "ROW" +ROW_NUMBER ::= "ROW_NUMBER" +ROWS ::= "ROWS" +RUNNING ::= "RUNNING" +SAVEPOINT ::= "SAVEPOINT" +SCOPE ::= "SCOPE" +SCROLL ::= "SCROLL" +SEARCH ::= "SEARCH" +SECOND ::= "SECOND" +SEEK ::= "SEEK" +SELECT ::= "SELECT" +SENSITIVE ::= "SENSITIVE" +SESSION_USER ::= "SESSION_USER" +SET ::= "SET" +SHOW ::= "SHOW" +SIMILAR ::= "SIMILAR" +SIN ::= "SIN" +SINH ::= "SINH" +SKIP ::= "SKIP" +SMALLINT ::= "SMALLINT" +SOME ::= "SOME" +SPECIFIC ::= "SPECIFIC" +SPECIFICTYPE ::= "SPECIFICTYPE" +SQL ::= "SQL" +SQLEXCEPTION ::= "SQLEXCEPTION" +SQLSTATE ::= "SQLSTATE" +SQLWARNING ::= "SQLWARNING" +SQRT ::= "SQRT" +START ::= "START" +STATIC ::= "STATIC" +STDDEV_POP ::= "STDDEV_POP" +STDDEV_SAMP ::= "STDDEV_SAMP" +SUBMULTISET ::= "SUBMULTISET" +SUBSET ::= "SUBSET" +SUBSTRING ::= "SUBSTRING" +SUBSTRING_REGEX ::= "SUBSTRING_REGEX" +SUCCEEDS ::= "SUCCEEDS" +SUM ::= "SUM" +SYMMETRIC ::= "SYMMETRIC" +SYSTEM ::= "SYSTEM" +SYSTEM_TIME ::= "SYSTEM_TIME" +SYSTEM_USER ::= "SYSTEM_USER" +TABLE ::= "TABLE" +TABLESAMPLE ::= "TABLESAMPLE" +TAN ::= "TAN" +TANH ::= "TANH" +THEN ::= "THEN" +TIME ::= "TIME" +TIMESTAMP ::= "TIMESTAMP" +TIMEZONE_HOUR ::= "TIMEZONE_HOUR" +TIMEZONE_MINUTE ::= "TIMEZONE_MINUTE" +TO ::= "TO" +TRAILING ::= "TRAILING" +TRANSLATE ::= "TRANSLATE" +TRANSLATE_REGEX ::= "TRANSLATE_REGEX" +TRANSLATION ::= "TRANSLATION" +TREAT ::= "TREAT" +TRIGGER ::= "TRIGGER" +TRIM ::= "TRIM" +TRIM_ARRAY ::= "TRIM_ARRAY" +TRUE ::= "TRUE" +TRUNCATE ::= "TRUNCATE" +UESCAPE ::= "UESCAPE" +UNION ::= "UNION" +UNIQUE ::= "UNIQUE" +UNKNOWN ::= "UNKNOWN" +UNNEST ::= "UNNEST" +UPDATE ::= "UPDATE" +UPPER ::= "UPPER" +USER ::= "USER" +USING ::= "USING" +VALUE ::= "VALUE" +VALUES ::= "VALUES" +VALUE_OF ::= "VALUE_OF" +VAR_POP ::= "VAR_POP" +VAR_SAMP ::= "VAR_SAMP" +VARBINARY ::= "VARBINARY" +VARCHAR ::= "VARCHAR" +VARYING ::= "VARYING" +VERSIONING ::= "VERSIONING" +WHEN ::= "WHEN" +WHENEVER ::= "WHENEVER" +WHERE ::= "WHERE" +WIDTH_BUCKET ::= "WIDTH_BUCKET" +WINDOW ::= "WINDOW" +WITH ::= "WITH" +WITHIN ::= "WITHIN" +WITHOUT ::= "WITHOUT" +YEAR ::= "YEAR" From 1989381dc3dbccfb646e1fe9d9f2840866338c17 Mon Sep 17 00:00:00 2001 From: Ron Savage Date: Thu, 5 Aug 2021 18:43:04 +1000 Subject: [PATCH 32/33] Add sql-2016.ebnf.readme and update sql-2003-2.ebnf.readme --- sql-2003-2.ebnf.readme | 6 ++++-- sql-2016.ebnf.readme | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 sql-2016.ebnf.readme diff --git a/sql-2003-2.ebnf.readme b/sql-2003-2.ebnf.readme index b894617..3548673 100644 --- a/sql-2003-2.ebnf.readme +++ b/sql-2003-2.ebnf.readme @@ -5,12 +5,14 @@ Many thanx Domingo! It is the latter file as pure ebnf, i.e. with the original markup stripped. -It can be rendered as railroad diagrams on the website https://www.bottlecaps.de/rr/ui. +The corresponding XHTML + SVG file is sql-2003-2-railway-diagrams.xhtml. + +The grammar can be rendered as railroad diagrams on the website https://www.bottlecaps.de/rr/ui. Just copy it into the Edit Grammar tab, and click View Diagram. Then wait a moment :-). Domingo notes: 1. Non reserved words appear with * as suffix, ex: SUBSTRING -> SUBSTRING*. -2. You can navigate through the grammar by clicking the rectangular boxes. +2. You can navigate through the railway's grammar by clicking the rectangular boxes. Finally, you can download the rendered railroad as either XHTML + SVG or HTML + PNG. diff --git a/sql-2016.ebnf.readme b/sql-2016.ebnf.readme new file mode 100644 index 0000000..e96a71a --- /dev/null +++ b/sql-2016.ebnf.readme @@ -0,0 +1,16 @@ +How to use sql-2016.ebnf +======================== +This file was created manually by Domingo Alvarez Duarte. +Many thanx Domingo! + +The corresponding XHTML + SVG file is sql-2016-railway-diagrams.xhtml. + +The grammar can be rendered as railroad diagrams on the website https://www.bottlecaps.de/rr/ui. +Just copy it into the Edit Grammar tab, and click View Diagram. Then wait a good minute or so :-). + +Domingo notes: +1. Non reserved words appear with * as suffix, ex: SUBSTRING -> SUBSTRING*. + +2. You can navigate through the railway's grammar by clicking the rectangular boxes. + +Finally, you can download the rendered railroad as either XHTML + SVG or HTML + PNG. From 19215adc8639d031a44acad7873c209444b71f1f Mon Sep 17 00:00:00 2001 From: Ron Savage Date: Thu, 5 Aug 2021 19:01:59 +1000 Subject: [PATCH 33/33] Rename railway to railroad everywhere --- sql-2003-2-railway-diagrams.xhtml | 71703 ---------------------- sql-2003-2.ebnf.readme | 4 +- sql-2016-railway-diagrams.xhtml | 91823 ---------------------------- sql-2016.ebnf.readme | 4 +- 4 files changed, 4 insertions(+), 163530 deletions(-) delete mode 100644 sql-2003-2-railway-diagrams.xhtml delete mode 100644 sql-2016-railway-diagrams.xhtml diff --git a/sql-2003-2-railway-diagrams.xhtml b/sql-2003-2-railway-diagrams.xhtml deleted file mode 100644 index 82a3bca..0000000 --- a/sql-2003-2-railway-diagrams.xhtml +++ /dev/null @@ -1,71703 +0,0 @@ - - - - - - - - - - - direct_SQL_statement: - - - - - - - - directly_executable_statement - - ; - - - - - -
             ::= directly_executable_statement ';'
    -
    - no referencesdirectly_executable_statement: - - - - - - - - direct_SQL_data_statement - - - SQL_schema_statement - - - SQL_transaction_statement - - - SQL_connection_statement - - - SQL_session_statement - - - direct_implementation_defined_statement - - - - -
             ::= direct_SQL_data_statement
    -
               | SQL_schema_statement
    -
               | SQL_transaction_statement
    -
               | SQL_connection_statement
    -
               | SQL_session_statement
    -
    -
    - referenced by: - - direct_SQL_statement - - direct_SQL_data_statement: - - - - - - - - delete_statement__searched - - - direct_select_statement__multiple_rows - - - insert_statement - - - update_statement__searched - - - merge_statement - - - temporary_table_declaration - - - - -
             ::= delete_statement__searched
    - -
               | insert_statement
    -
               | update_statement__searched
    -
               | merge_statement
    -
               | temporary_table_declaration
    -
    - referenced by: - - directly_executable_statement - - SQL_terminal_character: - - - - - - - - SQL_language_character - - - - -
             ::= SQL_language_character
    -
    - no referencesSQL_language_character: - - - - - - - - simple_Latin_letter - - - digit - - - SQL_special_character - - - - -
             ::= simple_Latin_letter
    -
               | digit
    -
               | SQL_special_character
    -
    - referenced by: - - SQL_terminal_character - - simple_Latin_letter: - - - - - - - - simple_Latin_upper_case_letter - - - simple_Latin_lower_case_letter - - - - -
             ::= simple_Latin_upper_case_letter
    -
               | simple_Latin_lower_case_letter
    -
    - referenced by: - - SQL_language_character - SQL_language_identifier_part - SQL_language_identifier_start - - simple_Latin_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 - - - W - - - X - - - Y - - - Z - - - - - -
             ::= 'A'
    -
               | 'B'
    -
               | 'C'
    -
               | 'D'
    -
               | 'E'
    -
               | 'F'
    -
               | 'G'
    -
               | 'H'
    -
               | 'I'
    -
               | 'J'
    -
               | 'K'
    -
               | 'L'
    -
               | 'M'
    -
               | 'N'
    -
               | 'O'
    -
               | 'P'
    -
               | 'Q'
    -
               | 'R'
    -
               | 'S'
    -
               | 'T'
    -
               | 'U'
    -
               | 'V'
    -
               | 'W'
    -
               | 'X'
    -
               | 'Y'
    -
               | 'Z'
    -
    - referenced by: - - SQLSTATE_char - simple_Latin_letter - - simple_Latin_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 - - - y - - - z - - - - - -
             ::= 'a'
    -
               | 'b'
    -
               | 'c'
    -
               | 'd'
    -
               | 'e'
    -
               | 'f'
    -
               | 'g'
    -
               | 'h'
    -
               | 'i'
    -
               | 'j'
    -
               | 'k'
    -
               | 'l'
    -
               | 'm'
    -
               | 'n'
    -
               | 'o'
    -
               | 'p'
    -
               | 'q'
    -
               | 'r'
    -
               | 's'
    -
               | 't'
    -
               | 'u'
    -
               | 'v'
    -
               | 'w'
    -
               | 'x'
    -
               | 'y'
    -
               | 'z'
    -
    - referenced by: - - simple_Latin_letter - - digit: - - - - - - - - 0 - - - 1 - - - 2 - - - 3 - - - 4 - - - 5 - - - 6 - - - 7 - - - 8 - - - 9 - - - - -
    digit    ::= '0'
    -
               | '1'
    -
               | '2'
    -
               | '3'
    -
               | '4'
    -
               | '5'
    -
               | '6'
    -
               | '7'
    -
               | '8'
    -
               | '9'
    -
    - referenced by: - - SQLSTATE_char - SQL_language_character - SQL_language_identifier_part - hexit - large_object_length_token - unsigned_integer - - SQL_special_character: - - - - - - - - space - - " - - - % - - - & - - - ' - - - ( - - - ) - - - * - - - + - - - , - - - - - - - . - - - / - - - : - - - ; - - - < - - - = - - - > - - - ? - - - [ - - - ] - - - ^ - - - _ - - - | - - - { - - - } - - - - - -
             ::= space
    -
               | '"'
    -
               | '%'
    -
               | '&'
    -
               | "'"
    -
               | '('
    -
               | ')'
    -
               | '*'
    -
               | '+'
    -
               | ','
    -
               | '-'
    -
               | '.'
    -
               | '/'
    -
               | ':'
    -
               | ';'
    -
               | '<'
    -
               | '='
    -
               | '>'
    -
               | '?'
    -
               | '['
    -
               | ']'
    -
               | '^'
    -
               | '_'
    -
               | '|'
    -
               | '{'
    -
               | '}'
    -
    - referenced by: - - SQL_language_character - delimiter_token - - space: - - - - - - - - - -
    space ::=
    -
    - referenced by: - - SQL_special_character - day_time_interval - unquoted_timestamp_string - - left_bracket_or_trigraph: - - - - - - - - [ - - - ??( - - - - - -
             ::= '['
    -
               | '??('
    -
    - referenced by: - - array_element_reference - array_type - array_value_constructor_by_enumeration - empty_specification - multiset_value_constructor_by_enumeration - target_array_element_specification - update_target - - right_bracket_or_trigraph: - - - - - - - - ] - - - ??) - - - - - -
             ::= ']'
    -
               | '??)'
    -
    - referenced by: - - array_element_reference - array_type - array_value_constructor_by_enumeration - empty_specification - multiset_value_constructor_by_enumeration - target_array_element_specification - update_target - - token: - - - - - - - - nondelimiter_token - - - delimiter_token - - - - -
               | delimiter_token
    -
    - no referencesnondelimiter_token: - - - - - - - - regular_identifier - - - key_word - - - unsigned_numeric_literal - - - national_character_string_literal - - - bit_string_literal - - - hex_string_literal - - - large_object_length_token - - - multiplier - - - - -
             ::= regular_identifier
    -
               | key_word
    -
               | unsigned_numeric_literal
    -
               | national_character_string_literal
    -
               | bit_string_literal
    -
               | hex_string_literal
    -
               | large_object_length_token
    -
               | multiplier
    -
    - referenced by: - - token - - regular_identifier: - - - - - - - - identifier_body - - - - -
             ::= identifier_body
    -
    - referenced by: - - actual_identifier - nondelimiter_token - - identifier_body: - - - - - - - - identifier_start - - - identifier_part - - - - -
             ::= identifier_start identifier_part?
    -
    - referenced by: - - regular_identifier - - identifier_part: - - - - - - - - identifier_start - - - identifier_extend - - - - -
             ::= identifier_start
    -
               | identifier_extend
    -
    - referenced by: - - identifier_body - - identifier_start: - - - - - - - - - - -
             ::=
    -
    - referenced by: - - identifier_body - identifier_part - - identifier_extend: - - - - - - - - - - -
             ::=
    -
    - referenced by: - - identifier_part - - large_object_length_token: - - - - - - - - digit - - . - - - . - - - . - - - multiplier - - - - -
             ::= digit . . . multiplier
    -
    - referenced by: - - large_object_length - nondelimiter_token - - multiplier: - - - - - - - - K - - - M - - - G - - - - - -
             ::= 'K'
    -
               | 'M'
    -
               | 'G'
    -
    - referenced by: - - large_object_length - large_object_length_token - nondelimiter_token - - delimited_identifier: - - - - - - - - " - - - delimited_identifier_body - - " - - - - - -
             ::= '"' delimited_identifier_body '"'
    -
    - referenced by: - - actual_identifier - delimiter_token - - delimited_identifier_body: - - - - - - - - delimited_identifier_part - - . - - - . - - - . - - - - - -
             ::= delimited_identifier_part . . .
    -
    - referenced by: - - delimited_identifier - - delimited_identifier_part: - - - - - - - - nondoublequote_character - - - doublequote_symbol - - - - -
             ::= nondoublequote_character
    -
               | doublequote_symbol
    -
    - referenced by: - - Unicode_identifier_part - delimited_identifier_body - - Unicode_delimited_identifier: - - - - - - - - U - - & - - - " - - - Unicode_delimiter_body - - " - - - Unicode_escape_specifier - - - - -
             ::= U '&' '"' Unicode_delimiter_body '"' Unicode_escape_specifier
    -
    - referenced by: - - delimiter_token - - Unicode_escape_specifier: - - - - - - - - UESCAPE - - - ' - - - Unicode_escape_character - - ' - - - - - -
             ::= ( 'UESCAPE' "'" Unicode_escape_character "'" )?
    -
    - referenced by: - - Unicode_delimited_identifier - - Unicode_delimiter_body: - - - - - - - - Unicode_identifier_part - - . - - - . - - - . - - - - - -
             ::= Unicode_identifier_part . . .
    -
    - referenced by: - - Unicode_delimited_identifier - - Unicode_identifier_part: - - - - - - - - delimited_identifier_part - - - Unicode_escape_value - - - - -
             ::= delimited_identifier_part
    -
               | Unicode_escape_value
    -
    - referenced by: - - Unicode_delimiter_body - - Unicode_escape_value: - - - - - - - - Unicode_4_digit_escape_value - - - Unicode_6_digit_escape_value - - - Unicode_character_escape_value - - - - -
             ::= Unicode_4_digit_escape_value
    -
               | Unicode_6_digit_escape_value
    -
               | Unicode_character_escape_value
    -
    - referenced by: - - Unicode_identifier_part - Unicode_representation - - Unicode_4_digit_escape_value: - - - - - - - - Unicode_escape_character - - - hexit - - - hexit - - - hexit - - - hexit - - - - - - - referenced by: - - Unicode_escape_value - - Unicode_6_digit_escape_value: - - - - - - - - Unicode_escape_character - - + - - - hexit - - - hexit - - - hexit - - - hexit - - - hexit - - - hexit - - - - - - - referenced by: - - Unicode_escape_value - - Unicode_character_escape_value: - - - - - - - - Unicode_escape_character - - - Unicode_escape_character - - - - - - - referenced by: - - Unicode_escape_value - - Unicode_escape_character: - - - - - - - - - - -
             ::=
    -
    - referenced by: - - Unicode_4_digit_escape_value - Unicode_6_digit_escape_value - Unicode_character_escape_value - Unicode_escape_specifier - - nondoublequote_character: - - - - - - - - - - -
             ::=
    -
    - referenced by: - - delimited_identifier_part - - doublequote_symbol: - - - - - - - - " - - - " - - - - - -
             ::= '"' '"'
    -
    - referenced by: - - delimited_identifier_part - - delimiter_token: - - - - - - - - character_string_literal - - - date_string - - - time_string - - - timestamp_string - - - interval_string - - - delimited_identifier - - - Unicode_delimited_identifier - - - SQL_special_character - - <> - - - >= - - - <= - - - || - - - -> - - - ??( - - - ??) - - - :: - - - .. - - - - - -
             ::= character_string_literal
    -
               | date_string
    -
               | time_string
    -
               | timestamp_string
    -
               | interval_string
    -
               | delimited_identifier
    -
               | Unicode_delimited_identifier
    -
               | SQL_special_character
    -
               | '<>'
    -
               | '>='
    -
               | '<='
    -
               | '||'
    -
               | '->'
    -
               | '??('
    -
               | '??)'
    -
               | '::'
    -
               | '..'
    -
    - referenced by: - - token - - separator: - - - - - - - - comment - - - white_space - - - - -
             ::= ( comment | white_space )*
    -
    - referenced by: - - Unicode_character_string_literal - binary_string_literal - bracketed_comment_contents - character_string_literal - national_character_string_literal - - comment: - - - - - - - - simple_comment - - - bracketed_comment - - - - -
               | bracketed_comment
    -
    - referenced by: - - separator - - simple_comment: - - - - - - - - simple_comment_introducer - - - comment_character - - - newline - - - - - - - referenced by: - - comment - - simple_comment_introducer: - - - - - - - - - - - - - - - - - - -
             ::= '-' '-'+
    -
    - referenced by: - - simple_comment - - bracketed_comment: - - - - - - - - bracketed_comment_introducer - - - bracketed_comment_contents - - - bracketed_comment_terminator - - - - - - - referenced by: - - comment - - bracketed_comment_introducer: - - - - - - - - slash - - * - - - - - -
             ::= slash '*'
    -
    - referenced by: - - bracketed_comment - - bracketed_comment_terminator: - - - - - - - - * - - - slash - - - - -
             ::= '*' slash
    -
    - referenced by: - - bracketed_comment - - bracketed_comment_contents: - - - - - - - - comment_character - - - separator - - - - -
             ::= ( comment_character | separator )*
    -
    - referenced by: - - bracketed_comment - - comment_character: - - - - - - - - nonquote_character - - ' - - - - - -
             ::= nonquote_character
    -
               | "'"
    -
    - referenced by: - - bracketed_comment_contents - simple_comment - - newline: - - - - - - - - - - - - referenced by: - - simple_comment - - key_word: - - - - - - - - reserved_word - - - non_reserved_word - - - - -
               | non_reserved_word
    -
    - referenced by: - - nondelimiter_token - - non_reserved_word: - - - - - - - - A* - - - ABS* - - - ABSOLUTE* - - - ACTION* - - - ADA* - - - ADMIN* - - - AFTER* - - - ALWAYS* - - - ASC* - - - ASSERTION* - - - ASSIGNMENT* - - - ATTRIBUTE* - - - ATTRIBUTES* - - - AVG* - - - BEFORE* - - - BERNOULLI* - - - BREADTH* - - - C* - - - CARDINALITY* - - - CASCADE* - - - CATALOG* - - - CATALOG_NAME* - - - CEIL* - - - CEILING* - - - CHAIN* - - - CHARACTERISTICS* - - - CHARACTERS* - - - CHARACTER_LENGTH* - - - CHARACTER_SET_CATALOG* - - - CHARACTER_SET_NAME* - - - CHARACTER_SET_SCHEMA* - - - CHAR_LENGTH* - - - CHECKED* - - - CLASS_ORIGIN* - - - COALESCE* - - - COBOL* - - - CODE_UNITS* - - - COLLATION* - - - COLLATION_CATALOG* - - - COLLATION_NAME* - - - COLLATION_SCHEMA* - - - COLLECT* - - - COLUMN_NAME* - - - COMMAND_FUNCTION* - - - COMMAND_FUNCTION_CODE* - - - COMMITTED* - - - CONDITION* - - - CONDITION_NUMBER* - - - CONNECTION_NAME* - - - CONSTRAINTS* - - - CONSTRAINT_CATALOG* - - - CONSTRAINT_NAME* - - - CONSTRAINT_SCHEMA* - - - CONSTRUCTORS* - - - CONTAINS* - - - CONVERT* - - - CORR* - - - COUNT* - - - COVAR_POP* - - - COVAR_SAMP* - - - CUME_DIST* - - - CURRENT_COLLATION* - - - CURSOR_NAME* - - - DATA* - - - DATETIME_INTERVAL_CODE* - - - DATETIME_INTERVAL_PRECISION* - - - DEFAULTS* - - - DEFERRABLE* - - - DEFERRED* - - - DEFINED* - - - DEFINER* - - - DEGREE* - - - DENSE_RANK* - - - DEPTH* - - - DERIVED* - - - DESC* - - - DESCRIPTOR* - - - DIAGNOSTICS* - - - DISPATCH* - - - DOMAIN* - - - DYNAMIC_FUNCTION* - - - DYNAMIC_FUNCTION_CODE* - - - EQUALS* - - - EVERY* - - - EXCEPTION* - - - EXCLUDE* - - - EXCLUDING* - - - EXP* - - - EXTRACT* - - - FINAL* - - - FIRST* - - - FLOOR* - - - FOLLOWING* - - - FORTRAN* - - - FOUND* - - - FUSION* - - - G* - - - GENERAL* - - - GO* - - - GOTO* - - - GRANTED* - - - HIERARCHY* - - - IMPLEMENTATION* - - - INCLUDING* - - - INCREMENT* - - - INITIALLY* - - - INSTANCE* - - - INSTANTIABLE* - - - INTERSECTION* - - - INVOKER* - - - ISOLATION - - K* - - - KEY* - - - KEY_MEMBER* - - - KEY_TYPE* - - - LAST* - - - LENGTH* - - - LEVEL* - - - LN* - - - LOCATOR* - - - LOWER* - - - M* - - - MAP* - - - MATCHED* - - - MAX* - - - MAXVALUE* - - - MESSAGE_LENGTH* - - - MESSAGE_OCTET_LENGTH* - - - MESSAGE_TEXT* - - - MIN* - - - MINVALUE* - - - MOD* - - - MORE* - - - MUMPS* - - - NAME* - - - NAMES* - - - NESTING* - - - NEXT* - - - NORMALIZE* - - - NORMALIZED* - - - NULLABLE* - - - NULLIF* - - - NULLS* - - - NUMBER* - - - OBJECT* - - - OCTETS* - - - OCTET_LENGTH* - - - OPTION* - - - OPTIONS* - - - ORDERING* - - - ORDINALITY* - - - OTHERS* - - - OVERLAY* - - - OVERRIDING* - - - PAD* - - - PARAMETER_MODE* - - - PARAMETER_NAME* - - - PARAMETER_ORDINAL_POSITION* - - - PARAMETER_SPECIFIC_CATALOG* - - - PARAMETER_SPECIFIC_NAME* - - - PARAMETER_SPECIFIC_SCHEMA* - - - PARTIAL* - - - PASCAL* - - - PATH* - - - PERCENTILE_CONT* - - - PERCENTILE_DISC* - - - PERCENT_RANK* - - - PLACING* - - - PLI* - - - POSITION* - - - POWER* - - - PRECEDING* - - - PRESERVE* - - - PRIOR* - - - PRIVILEGES* - - - PUBLIC* - - - RANK* - - - READ* - - - RELATIVE* - - - REPEATABLE* - - - RESTART* - - - RETURNED_CARDINALITY* - - - RETURNED_LENGTH* - - - RETURNED_OCTET_LENGTH* - - - RETURNED_SQLSTATE* - - - ROLE* - - - ROUTINE* - - - ROUTINE_CATALOG* - - - ROUTINE_NAME* - - - ROUTINE_SCHEMA* - - - ROW_COUNT* - - - ROW_NUMBER* - - - SCALE* - - - SCHEMA* - - - SCHEMA_NAME* - - - SCOPE_CATALOG* - - - SCOPE_NAME* - - - SCOPE_SCHEMA* - - - SECTION* - - - SECURITY* - - - SELF* - - - SEQUENCE* - - - SERIALIZABLE* - - - SERVER_NAME* - - - SESSION* - - - SETS* - - - SIMPLE* - - - SIZE* - - - SOURCE* - - - SPACE* - - - SPECIFIC_NAME* - - - SQRT* - - - STATE* - - - STATEMENT* - - - STDDEV_POP* - - - STDDEV_SAMP* - - - STRUCTURE* - - - STYLE* - - - SUBCLASS_ORIGIN* - - - SUBSTRING* - - - SUM* - - - TABLESAMPLE* - - - TABLE_NAME* - - - TEMPORARY* - - - TIES* - - - TOP_LEVEL_COUNT* - - - TRANSACTION* - - - TRANSACTIONS_COMMITTED* - - - TRANSACTIONS_ROLLED_BACK* - - - TRANSACTION_ACTIVE* - - - TRANSFORM* - - - TRANSFORMS* - - - TRANSLATE* - - - TRIGGER_CATALOG* - - - TRIGGER_NAME* - - - TRIGGER_SCHEMA* - - - TRIM* - - - TYPE* - - - UNBOUNDED* - - - UNCOMMITTED* - - - UNDER* - - - UNNAMED* - - - USAGE* - - - USER_DEFINED_TYPE_CATALOG* - - - USER_DEFINED_TYPE_CODE* - - - USER_DEFINED_TYPE_NAME* - - - USER_DEFINED_TYPE_SCHEMA* - - - VIEW* - - - WORK* - - - WRITE* - - - ZONE* - - - - - -
             ::= 'A*'
    -
               | 'ABS*'
    -
               | 'ABSOLUTE*'
    -
               | 'ACTION*'
    -
               | 'ADA*'
    -
               | 'ADMIN*'
    -
               | 'AFTER*'
    -
               | 'ALWAYS*'
    -
               | 'ASC*'
    -
               | 'ASSERTION*'
    -
               | 'ASSIGNMENT*'
    -
               | 'ATTRIBUTE*'
    -
               | 'ATTRIBUTES*'
    -
               | 'AVG*'
    -
               | 'BEFORE*'
    -
               | 'BERNOULLI*'
    -
               | 'BREADTH*'
    -
               | 'C*'
    -
               | 'CARDINALITY*'
    -
               | 'CASCADE*'
    -
               | 'CATALOG*'
    -
               | 'CATALOG_NAME*'
    -
               | 'CEIL*'
    -
               | 'CEILING*'
    -
               | 'CHAIN*'
    -
               | 'CHARACTERISTICS*'
    -
               | 'CHARACTERS*'
    -
               | 'CHARACTER_LENGTH*'
    -
               | 'CHARACTER_SET_CATALOG*'
    -
               | 'CHARACTER_SET_NAME*'
    -
               | 'CHARACTER_SET_SCHEMA*'
    -
               | 'CHAR_LENGTH*'
    -
               | 'CHECKED*'
    -
               | 'CLASS_ORIGIN*'
    -
               | 'COALESCE*'
    -
               | 'COBOL*'
    -
               | 'CODE_UNITS*'
    -
               | 'COLLATION*'
    -
               | 'COLLATION_CATALOG*'
    -
               | 'COLLATION_NAME*'
    -
               | 'COLLATION_SCHEMA*'
    -
               | 'COLLECT*'
    -
               | 'COLUMN_NAME*'
    -
               | 'COMMAND_FUNCTION*'
    -
               | 'COMMAND_FUNCTION_CODE*'
    -
               | 'COMMITTED*'
    -
               | 'CONDITION*'
    -
               | 'CONDITION_NUMBER*'
    -
               | 'CONNECTION_NAME*'
    -
               | 'CONSTRAINTS*'
    -
               | 'CONSTRAINT_CATALOG*'
    -
               | 'CONSTRAINT_NAME*'
    -
               | 'CONSTRAINT_SCHEMA*'
    -
               | 'CONSTRUCTORS*'
    -
               | 'CONTAINS*'
    -
               | 'CONVERT*'
    -
               | 'CORR*'
    -
               | 'COUNT*'
    -
               | 'COVAR_POP*'
    -
               | 'COVAR_SAMP*'
    -
               | 'CUME_DIST*'
    -
               | 'CURRENT_COLLATION*'
    -
               | 'CURSOR_NAME*'
    -
               | 'DATA*'
    -
               | 'DATETIME_INTERVAL_CODE*'
    -
               | 'DATETIME_INTERVAL_PRECISION*'
    -
               | 'DEFAULTS*'
    -
               | 'DEFERRABLE*'
    -
               | 'DEFERRED*'
    -
               | 'DEFINED*'
    -
               | 'DEFINER*'
    -
               | 'DEGREE*'
    -
               | 'DENSE_RANK*'
    -
               | 'DEPTH*'
    -
               | 'DERIVED*'
    -
               | 'DESC*'
    -
               | 'DESCRIPTOR*'
    -
               | 'DIAGNOSTICS*'
    -
               | 'DISPATCH*'
    -
               | 'DOMAIN*'
    -
               | 'DYNAMIC_FUNCTION*'
    -
               | 'DYNAMIC_FUNCTION_CODE*'
    -
               | 'EQUALS*'
    -
               | 'EVERY*'
    -
               | 'EXCEPTION*'
    -
               | 'EXCLUDE*'
    -
               | 'EXCLUDING*'
    -
               | 'EXP*'
    -
               | 'EXTRACT*'
    -
               | 'FINAL*'
    -
               | 'FIRST*'
    -
               | 'FLOOR*'
    -
               | 'FOLLOWING*'
    -
               | 'FORTRAN*'
    -
               | 'FOUND*'
    -
               | 'FUSION*'
    -
               | 'G*'
    -
               | 'GENERAL*'
    -
               | 'GO*'
    -
               | 'GOTO*'
    -
               | 'GRANTED*'
    -
               | 'HIERARCHY*'
    -
               | 'IMPLEMENTATION*'
    -
               | 'INCLUDING*'
    -
               | 'INCREMENT*'
    -
               | 'INITIALLY*'
    -
               | 'INSTANCE*'
    -
               | 'INSTANTIABLE*'
    -
               | 'INTERSECTION*'
    -
               | 'INVOKER*'
    -
               | ISOLATION
    -
               | 'K*'
    -
               | 'KEY*'
    -
               | 'KEY_MEMBER*'
    -
               | 'KEY_TYPE*'
    -
               | 'LAST*'
    -
               | 'LENGTH*'
    -
               | 'LEVEL*'
    -
               | 'LN*'
    -
               | 'LOCATOR*'
    -
               | 'LOWER*'
    -
               | 'M*'
    -
               | 'MAP*'
    -
               | 'MATCHED*'
    -
               | 'MAX*'
    -
               | 'MAXVALUE*'
    -
               | 'MESSAGE_LENGTH*'
    -
               | 'MESSAGE_OCTET_LENGTH*'
    -
               | 'MESSAGE_TEXT*'
    -
               | 'MIN*'
    -
               | 'MINVALUE*'
    -
               | 'MOD*'
    -
               | 'MORE*'
    -
               | 'MUMPS*'
    -
               | 'NAME*'
    -
               | 'NAMES*'
    -
               | 'NESTING*'
    -
               | 'NEXT*'
    -
               | 'NORMALIZE*'
    -
               | 'NORMALIZED*'
    -
               | 'NULLABLE*'
    -
               | 'NULLIF*'
    -
               | 'NULLS*'
    -
               | 'NUMBER*'
    -
               | 'OBJECT*'
    -
               | 'OCTETS*'
    -
               | 'OCTET_LENGTH*'
    -
               | 'OPTION*'
    -
               | 'OPTIONS*'
    -
               | 'ORDERING*'
    -
               | 'ORDINALITY*'
    -
               | 'OTHERS*'
    -
               | 'OVERLAY*'
    -
               | 'OVERRIDING*'
    -
               | 'PAD*'
    -
               | 'PARAMETER_MODE*'
    -
               | 'PARAMETER_NAME*'
    -
               | 'PARAMETER_ORDINAL_POSITION*'
    -
               | 'PARAMETER_SPECIFIC_CATALOG*'
    -
               | 'PARAMETER_SPECIFIC_NAME*'
    -
               | 'PARAMETER_SPECIFIC_SCHEMA*'
    -
               | 'PARTIAL*'
    -
               | 'PASCAL*'
    -
               | 'PATH*'
    -
               | 'PERCENTILE_CONT*'
    -
               | 'PERCENTILE_DISC*'
    -
               | 'PERCENT_RANK*'
    -
               | 'PLACING*'
    -
               | 'PLI*'
    -
               | 'POSITION*'
    -
               | 'POWER*'
    -
               | 'PRECEDING*'
    -
               | 'PRESERVE*'
    -
               | 'PRIOR*'
    -
               | 'PRIVILEGES*'
    -
               | 'PUBLIC*'
    -
               | 'RANK*'
    -
               | 'READ*'
    -
               | 'RELATIVE*'
    -
               | 'REPEATABLE*'
    -
               | 'RESTART*'
    -
               | 'RETURNED_CARDINALITY*'
    -
               | 'RETURNED_LENGTH*'
    -
               | 'RETURNED_OCTET_LENGTH*'
    -
               | 'RETURNED_SQLSTATE*'
    -
               | 'ROLE*'
    -
               | 'ROUTINE*'
    -
               | 'ROUTINE_CATALOG*'
    -
               | 'ROUTINE_NAME*'
    -
               | 'ROUTINE_SCHEMA*'
    -
               | 'ROW_COUNT*'
    -
               | 'ROW_NUMBER*'
    -
               | 'SCALE*'
    -
               | 'SCHEMA*'
    -
               | 'SCHEMA_NAME*'
    -
               | 'SCOPE_CATALOG*'
    -
               | 'SCOPE_NAME*'
    -
               | 'SCOPE_SCHEMA*'
    -
               | 'SECTION*'
    -
               | 'SECURITY*'
    -
               | 'SELF*'
    -
               | 'SEQUENCE*'
    -
               | 'SERIALIZABLE*'
    -
               | 'SERVER_NAME*'
    -
               | 'SESSION*'
    -
               | 'SETS*'
    -
               | 'SIMPLE*'
    -
               | 'SIZE*'
    -
               | 'SOURCE*'
    -
               | 'SPACE*'
    -
               | 'SPECIFIC_NAME*'
    -
               | 'SQRT*'
    -
               | 'STATE*'
    -
               | 'STATEMENT*'
    -
               | 'STDDEV_POP*'
    -
               | 'STDDEV_SAMP*'
    -
               | 'STRUCTURE*'
    -
               | 'STYLE*'
    -
               | 'SUBCLASS_ORIGIN*'
    -
               | 'SUBSTRING*'
    -
               | 'SUM*'
    -
               | 'TABLESAMPLE*'
    -
               | 'TABLE_NAME*'
    -
               | 'TEMPORARY*'
    -
               | 'TIES*'
    -
               | 'TOP_LEVEL_COUNT*'
    -
               | 'TRANSACTION*'
    -
               | 'TRANSACTIONS_COMMITTED*'
    -
               | 'TRANSACTIONS_ROLLED_BACK*'
    -
               | 'TRANSACTION_ACTIVE*'
    -
               | 'TRANSFORM*'
    -
               | 'TRANSFORMS*'
    -
               | 'TRANSLATE*'
    -
               | 'TRIGGER_CATALOG*'
    -
               | 'TRIGGER_NAME*'
    -
               | 'TRIGGER_SCHEMA*'
    -
               | 'TRIM*'
    -
               | 'TYPE*'
    -
               | 'UNBOUNDED*'
    -
               | 'UNCOMMITTED*'
    -
               | 'UNDER*'
    -
               | 'UNNAMED*'
    -
               | 'USAGE*'
    -
               | 'USER_DEFINED_TYPE_CATALOG*'
    -
               | 'USER_DEFINED_TYPE_CODE*'
    -
               | 'USER_DEFINED_TYPE_NAME*'
    -
               | 'USER_DEFINED_TYPE_SCHEMA*'
    -
               | 'VIEW*'
    -
               | 'WORK*'
    -
               | 'WRITE*'
    -
               | 'ZONE*'
    -
    - referenced by: - - key_word - - reserved_word: - - - - - - - - ADD - - - ALL - - - ALLOCATE - - - ALTER - - - AND - - - ANY - - - ARE - - - ARRAY - - - AS - - - ASENSITIVE - - - ASYMMETRIC - - - AT - - - ATOMIC - - - AUTHORIZATION - - - BEGIN - - - BETWEEN - - - BIGINT - - - BINARY - - - BLOB - - - BOOLEAN - - - BOTH - - - BY - - - CALL - - - CALLED - - - CASCADED - - - CASE - - - CAST - - - CHAR - - - CHARACTER - - - CHECK - - - CLOB - - - CLOSE - - - COLLATE - - - COLUMN - - - COMMIT - - - CONNECT - - - CONSTRAINT - - - CONTINUE - - - CORRESPONDING - - - CREATE - - - CROSS - - - CUBE - - - CURRENT - - - CURRENT_DATE - - - CURRENT_DEFAULT_TRANSFORM_GROUP - - - CURRENT_PATH - - - CURRENT_ROLE - - - CURRENT_TIME - - - CURRENT_TIMESTAMP - - - CURRENT_TRANSFORM_GROUP_FOR_TYPE - - - CURRENT_USER - - - CURSOR - - - CYCLE - - - DATE - - - DAY - - - DEALLOCATE - - - DEC - - - DECIMAL - - - DECLARE - - - DEFAULT - - - DELETE - - - DEREF - - - DESCRIBE - - - DETERMINISTIC - - - DISCONNECT - - - DISTINCT - - - DOUBLE - - - DROP - - - DYNAMIC - - - EACH - - - ELEMENT - - - ELSE - - - END - - - END-EXEC - - - ESCAPE - - - EXCEPT - - - EXEC - - - EXECUTE - - - EXISTS - - - EXTERNAL - - - FALSE - - - FETCH - - - FILTER - - - FLOAT - - - FOR - - - FOREIGN - - - FREE - - - FROM - - - FULL - - - FUNCTION - - - GET - - - GLOBAL - - - GRANT - - - GROUP - - - GROUPING - - - HAVING - - - HOLD - - - HOUR - - - IDENTITY - - - IMMEDIATE - - - IN - - - INDICATOR - - - INNER - - - INOUT - - - INPUT - - - INSENSITIVE - - - INSERT - - - INT - - - INTEGER - - - INTERSECT - - - INTERVAL - - - INTO - - - IS - - - ISOLATION - - JOIN - - - LANGUAGE - - - LARGE - - - LATERAL - - - LEADING - - - LEFT - - - LIKE - - - LOCAL - - - LOCALTIME - - - LOCALTIMESTAMP - - - MATCH - - - MEMBER - - - MERGE - - - METHOD - - - MINUTE - - - MODIFIES - - - MODULE - - - MONTH - - - MULTISET - - - NATIONAL - - - NATURAL - - - NCHAR - - - NCLOB - - - NEW - - - NO - - - NONE - - - NOT - - - NULL - - - NUMERIC - - - OF - - - OLD - - - ON - - - ONLY - - - OPEN - - - OR - - - ORDER - - - OUT - - - OUTER - - - OUTPUT - - - OVER - - - OVERLAPS - - - PARAMETER - - - PARTITION - - - PRECISION - - - PREPARE - - - PRIMARY - - - PROCEDURE - - - RANGE - - - READS - - - REAL - - - RECURSIVE - - - REF - - - REFERENCES - - - REFERENCING - - - REGR_AVGX - - - REGR_AVGY - - - REGR_COUNT - - - REGR_INTERCEPT - - - REGR_R2 - - - REGR_SLOPE - - - REGR_SXX - - - REGR_SXY - - - REGR_SYY - - - RELEASE - - - RESULT - - - RETURN - - - RETURNS - - - REVOKE - - - RIGHT - - - ROLLBACK - - - ROLLUP - - - ROW - - - ROWS - - - SAVEPOINT - - - SCROLL - - - SEARCH - - - SECOND - - - SELECT - - - SENSITIVE - - - SESSION_USER - - - SET - - - SIMILAR - - - SMALLINT - - - SOME - - - SPECIFIC - - - SPECIFICTYPE - - - SQL - - - SQLEXCEPTION - - - SQLSTATE - - - SQLWARNING - - - START - - - STATIC - - - SUBMULTISET - - - SYMMETRIC - - - SYSTEM - - - SYSTEM_USER - - - TABLE - - - THEN - - - TIME - - - TIMESTAMP - - - TIMEZONE_HOUR - - - TIMEZONE_MINUTE - - - TO - - - TRAILING - - - TRANSLATION - - - TREAT - - - TRIGGER - - - TRUE - - - UESCAPE - - - UNION - - - UNIQUE - - - UNKNOWN - - - UNNEST - - - UPDATE - - - UPPER - - - USER - - - USING - - - VALUE - - - VALUES - - - VAR_POP - - - VAR_SAMP - - - VARCHAR - - - VARYING - - - WHEN - - - WHENEVER - - - WHERE - - - WIDTH_BUCKET - - - WINDOW - - - WITH - - - WITHIN - - - WITHOUT - - - YEAR - - - - - -
             ::= 'ADD'
    -
               | 'ALL'
    -
               | 'ALLOCATE'
    -
               | 'ALTER'
    -
               | 'AND'
    -
               | 'ANY'
    -
               | 'ARE'
    -
               | 'ARRAY'
    -
               | 'AS'
    -
               | 'ASENSITIVE'
    -
               | 'ASYMMETRIC'
    -
               | 'AT'
    -
               | 'ATOMIC'
    -
               | 'AUTHORIZATION'
    -
               | 'BEGIN'
    -
               | 'BETWEEN'
    -
               | 'BIGINT'
    -
               | 'BINARY'
    -
               | 'BLOB'
    -
               | 'BOOLEAN'
    -
               | 'BOTH'
    -
               | 'BY'
    -
               | 'CALL'
    -
               | 'CALLED'
    -
               | 'CASCADED'
    -
               | 'CASE'
    -
               | 'CAST'
    -
               | 'CHAR'
    -
               | 'CHARACTER'
    -
               | 'CHECK'
    -
               | 'CLOB'
    -
               | 'CLOSE'
    -
               | 'COLLATE'
    -
               | 'COLUMN'
    -
               | 'COMMIT'
    -
               | 'CONNECT'
    -
               | 'CONSTRAINT'
    -
               | 'CONTINUE'
    -
               | 'CORRESPONDING'
    -
               | 'CREATE'
    -
               | 'CROSS'
    -
               | 'CUBE'
    -
               | 'CURRENT'
    -
               | 'CURRENT_DATE'
    -
               | 'CURRENT_DEFAULT_TRANSFORM_GROUP'
    -
               | 'CURRENT_PATH'
    -
               | 'CURRENT_ROLE'
    -
               | 'CURRENT_TIME'
    -
               | 'CURRENT_TIMESTAMP'
    -
               | 'CURRENT_TRANSFORM_GROUP_FOR_TYPE'
    -
               | 'CURRENT_USER'
    -
               | 'CURSOR'
    -
               | 'CYCLE'
    -
               | 'DATE'
    -
               | 'DAY'
    -
               | 'DEALLOCATE'
    -
               | 'DEC'
    -
               | 'DECIMAL'
    -
               | 'DECLARE'
    -
               | 'DEFAULT'
    -
               | 'DELETE'
    -
               | 'DEREF'
    -
               | 'DESCRIBE'
    -
               | 'DETERMINISTIC'
    -
               | 'DISCONNECT'
    -
               | 'DISTINCT'
    -
               | 'DOUBLE'
    -
               | 'DROP'
    -
               | 'DYNAMIC'
    -
               | 'EACH'
    -
               | 'ELEMENT'
    -
               | 'ELSE'
    -
               | 'END'
    -
               | 'END-EXEC'
    -
               | 'ESCAPE'
    -
               | 'EXCEPT'
    -
               | 'EXEC'
    -
               | 'EXECUTE'
    -
               | 'EXISTS'
    -
               | 'EXTERNAL'
    -
               | 'FALSE'
    -
               | 'FETCH'
    -
               | 'FILTER'
    -
               | 'FLOAT'
    -
               | 'FOR'
    -
               | 'FOREIGN'
    -
               | 'FREE'
    -
               | 'FROM'
    -
               | 'FULL'
    -
               | 'FUNCTION'
    -
               | 'GET'
    -
               | 'GLOBAL'
    -
               | 'GRANT'
    -
               | 'GROUP'
    -
               | 'GROUPING'
    -
               | 'HAVING'
    -
               | 'HOLD'
    -
               | 'HOUR'
    -
               | 'IDENTITY'
    -
               | 'IMMEDIATE'
    -
               | 'IN'
    -
               | 'INDICATOR'
    -
               | 'INNER'
    -
               | 'INOUT'
    -
               | 'INPUT'
    -
               | 'INSENSITIVE'
    -
               | 'INSERT'
    -
               | 'INT'
    -
               | 'INTEGER'
    -
               | 'INTERSECT'
    -
               | 'INTERVAL'
    -
               | 'INTO'
    -
               | 'IS'
    -
               | ISOLATION
    -
               | 'JOIN'
    -
               | 'LANGUAGE'
    -
               | 'LARGE'
    -
               | 'LATERAL'
    -
               | 'LEADING'
    -
               | 'LEFT'
    -
               | 'LIKE'
    -
               | 'LOCAL'
    -
               | 'LOCALTIME'
    -
               | 'LOCALTIMESTAMP'
    -
               | 'MATCH'
    -
               | 'MEMBER'
    -
               | 'MERGE'
    -
               | 'METHOD'
    -
               | 'MINUTE'
    -
               | 'MODIFIES'
    -
               | 'MODULE'
    -
               | 'MONTH'
    -
               | 'MULTISET'
    -
               | 'NATIONAL'
    -
               | 'NATURAL'
    -
               | 'NCHAR'
    -
               | 'NCLOB'
    -
               | 'NEW'
    -
               | 'NO'
    -
               | 'NONE'
    -
               | 'NOT'
    -
               | 'NULL'
    -
               | 'NUMERIC'
    -
               | 'OF'
    -
               | 'OLD'
    -
               | 'ON'
    -
               | 'ONLY'
    -
               | 'OPEN'
    -
               | 'OR'
    -
               | 'ORDER'
    -
               | 'OUT'
    -
               | 'OUTER'
    -
               | 'OUTPUT'
    -
               | 'OVER'
    -
               | 'OVERLAPS'
    -
               | 'PARAMETER'
    -
               | 'PARTITION'
    -
               | 'PRECISION'
    -
               | 'PREPARE'
    -
               | 'PRIMARY'
    -
               | 'PROCEDURE'
    -
               | 'RANGE'
    -
               | 'READS'
    -
               | 'REAL'
    -
               | 'RECURSIVE'
    -
               | 'REF'
    -
               | 'REFERENCES'
    -
               | 'REFERENCING'
    -
               | 'REGR_AVGX'
    -
               | 'REGR_AVGY'
    -
               | 'REGR_COUNT'
    -
               | 'REGR_INTERCEPT'
    -
               | 'REGR_R2'
    -
               | 'REGR_SLOPE'
    -
               | 'REGR_SXX'
    -
               | 'REGR_SXY'
    -
               | 'REGR_SYY'
    -
               | 'RELEASE'
    -
               | 'RESULT'
    -
               | 'RETURN'
    -
               | 'RETURNS'
    -
               | 'REVOKE'
    -
               | 'RIGHT'
    -
               | 'ROLLBACK'
    -
               | 'ROLLUP'
    -
               | 'ROW'
    -
               | 'ROWS'
    -
               | 'SAVEPOINT'
    -
               | 'SCROLL'
    -
               | 'SEARCH'
    -
               | 'SECOND'
    -
               | 'SELECT'
    -
               | 'SENSITIVE'
    -
               | 'SESSION_USER'
    -
               | 'SET'
    -
               | 'SIMILAR'
    -
               | 'SMALLINT'
    -
               | 'SOME'
    -
               | 'SPECIFIC'
    -
               | 'SPECIFICTYPE'
    -
               | 'SQL'
    -
               | 'SQLEXCEPTION'
    -
               | 'SQLSTATE'
    -
               | 'SQLWARNING'
    -
               | 'START'
    -
               | 'STATIC'
    -
               | 'SUBMULTISET'
    -
               | 'SYMMETRIC'
    -
               | 'SYSTEM'
    -
               | 'SYSTEM_USER'
    -
               | 'TABLE'
    -
               | 'THEN'
    -
               | 'TIME'
    -
               | 'TIMESTAMP'
    -
               | 'TIMEZONE_HOUR'
    -
               | 'TIMEZONE_MINUTE'
    -
               | 'TO'
    -
               | 'TRAILING'
    -
               | 'TRANSLATION'
    -
               | 'TREAT'
    -
               | 'TRIGGER'
    -
               | 'TRUE'
    -
               | 'UESCAPE'
    -
               | 'UNION'
    -
               | 'UNIQUE'
    -
               | 'UNKNOWN'
    -
               | 'UNNEST'
    -
               | 'UPDATE'
    -
               | 'UPPER'
    -
               | 'USER'
    -
               | 'USING'
    -
               | 'VALUE'
    -
               | 'VALUES'
    -
               | 'VAR_POP'
    -
               | 'VAR_SAMP'
    -
               | 'VARCHAR'
    -
               | 'VARYING'
    -
               | 'WHEN'
    -
               | 'WHENEVER'
    -
               | 'WHERE'
    -
               | 'WIDTH_BUCKET'
    -
               | 'WINDOW'
    -
               | 'WITH'
    -
               | 'WITHIN'
    -
               | 'WITHOUT'
    -
               | 'YEAR'
    -
    - referenced by: - - key_word - - literal: - - - - - - - - signed_numeric_literal - - - general_literal - - - - -
               | general_literal
    -
    - referenced by: - - default_option - simple_value_specification - value_specification - - unsigned_literal: - - - - - - - - unsigned_numeric_literal - - - general_literal - - - - -
             ::= unsigned_numeric_literal
    -
               | general_literal
    -
    - referenced by: - - unsigned_value_specification - - general_literal: - - - - - - - - character_string_literal - - - national_character_string_literal - - - Unicode_character_string_literal - - - binary_string_literal - - - datetime_literal - - - interval_literal - - - boolean_literal - - - - -
             ::= character_string_literal
    -
               | national_character_string_literal
    -
               | Unicode_character_string_literal
    -
               | binary_string_literal
    -
               | datetime_literal
    -
               | interval_literal
    -
               | boolean_literal
    -
    - referenced by: - - literal - unsigned_literal - - character_string_literal: - - - - - - - - _ - - - character_set_specification - - ' - - - character_representation - - ' - - - separator - - - - -
             ::= ( '_' character_set_specification )? "'" character_representation? "'" ( separator "'" character_representation? "'" )*
    -
    - referenced by: - - delimiter_token - external_routine_name - general_literal - - character_representation: - - - - - - - - nonquote_character - - - quote_symbol - - - - -
             ::= nonquote_character
    -
               | quote_symbol
    -
    - referenced by: - - Ada_initial_value - COBOL_variable_definition - C_initial_value - PL_I_variable_definition - Unicode_representation - character_string_literal - national_character_string_literal - - nonquote_character: - - - - - - - - - - -
             ::=
    -
    - referenced by: - - character_representation - comment_character - - quote_symbol: - - - - - - - - ' - - - ' - - - - - -
             ::= "'" "'"
    -
    - referenced by: - - character_representation - - national_character_string_literal: - - - - - - - - N - - ' - - - character_representation - - ' - - - separator - - - - -
             ::= N "'" character_representation* "'" ( separator "'" character_representation* "'" )*
    -
    - referenced by: - - general_literal - nondelimiter_token - - Unicode_character_string_literal: - - - - - - - - _ - - - character_set_specification - - - U - - & - - - ' - - - Unicode_representation - - ' - - - separator - - ESCAPE - - - escape_character - - - - -
             ::= ( '_' character_set_specification )? U '&' "'" Unicode_representation? "'" ( separator "'" Unicode_representation? "'" )* ( 'ESCAPE' escape_character )?
    -
    - referenced by: - - general_literal - - Unicode_representation: - - - - - - - - character_representation - - - Unicode_escape_value - - - - -
             ::= character_representation
    -
               | Unicode_escape_value
    -
    - referenced by: - - Unicode_character_string_literal - - binary_string_literal: - - - - - - - - X - - ' - - - hexit - - - hexit - - ' - - - separator - - ESCAPE - - - escape_character - - - - -
             ::= X "'" ( hexit hexit )* "'" ( separator "'" ( hexit hexit )* "'" )* ( 'ESCAPE' escape_character )?
    -
    - referenced by: - - general_literal - - hexit: - - - - - - - - digit - - A - - - B - - - C - - - D - - - E - - - F - - - a - - - b - - - c - - - d - - - e - - - f - - - - -
    hexit    ::= digit
    -
               | 'A'
    -
               | 'B'
    -
               | 'C'
    -
               | 'D'
    -
               | 'E'
    -
               | 'F'
    -
               | 'a'
    -
               | 'b'
    -
               | 'c'
    -
               | 'd'
    -
               | 'e'
    -
               | 'f'
    -
    - referenced by: - - Unicode_4_digit_escape_value - Unicode_6_digit_escape_value - binary_string_literal - - signed_numeric_literal: - - - - - - - - sign - - - unsigned_numeric_literal - - - - -
             ::= sign? unsigned_numeric_literal
    -
    - referenced by: - - literal - sequence_generator_increment - sequence_generator_max_value - sequence_generator_min_value - sequence_generator_restart_value - sequence_generator_start_value - - unsigned_numeric_literal: - - - - - - - - exact_numeric_literal - - - approximate_numeric_literal - - - - -
             ::= exact_numeric_literal
    -
               | approximate_numeric_literal
    -
    - referenced by: - - nondelimiter_token - signed_numeric_literal - unsigned_literal - - exact_numeric_literal: - - - - - - - - unsigned_integer - - . - - - unsigned_integer - - . - - - unsigned_integer - - - - -
             ::= unsigned_integer ( '.' unsigned_integer? )?
    -
               | '.' unsigned_integer
    -
    - referenced by: - - mantissa - unsigned_numeric_literal - - sign: - - - - - - - - + - - - - - - - - -
    sign     ::= '+'
    -
               | '-'
    -
    - referenced by: - - factor - interval_factor - interval_literal - signed_integer - signed_numeric_literal - time_zone_interval - unquoted_interval_string - - approximate_numeric_literal: - - - - - - - - mantissa - - - E - - - exponent - - - - -
             ::= mantissa E exponent
    -
    - referenced by: - - unsigned_numeric_literal - - mantissa: - - - - - - - - exact_numeric_literal - - - - - - referenced by: - - approximate_numeric_literal - - exponent: - - - - - - - - signed_integer - - - - - - referenced by: - - approximate_numeric_literal - - signed_integer: - - - - - - - - sign - - - unsigned_integer - - - - -
             ::= sign? unsigned_integer
    -
    - referenced by: - - exponent - - unsigned_integer: - - - - - - - - digit - - . - - - . - - - . - - - - - -
             ::= digit . . .
    -
    - referenced by: - - array_type - datetime_value - exact_numeric_literal - goto_target - high_value - interval_fractional_seconds_precision - interval_leading_field_precision - large_object_length - length - low_value - maximum_dynamic_result_sets - precision - scale - seconds_fraction - seconds_integer_value - signed_integer - time_fractional_seconds_precision - - datetime_literal: - - - - - - - - date_literal - - - time_literal - - - timestamp_literal - - - - -
             ::= date_literal
    -
               | time_literal
    -
               | timestamp_literal
    -
    - referenced by: - - general_literal - - date_literal: - - - - - - - - DATE - - - date_string - - - - -
             ::= 'DATE' date_string
    -
    - referenced by: - - datetime_literal - - time_literal: - - - - - - - - TIME - - - time_string - - - - -
             ::= 'TIME' time_string
    -
    - referenced by: - - datetime_literal - - timestamp_literal: - - - - - - - - TIMESTAMP - - - timestamp_string - - - - -
             ::= 'TIMESTAMP' timestamp_string
    -
    - referenced by: - - datetime_literal - - date_string: - - - - - - - - ' - - - unquoted_date_string - - ' - - - - - -
             ::= "'" unquoted_date_string "'"
    -
    - referenced by: - - date_literal - delimiter_token - - time_string: - - - - - - - - ' - - - unquoted_time_string - - ' - - - - - -
             ::= "'" unquoted_time_string "'"
    -
    - referenced by: - - delimiter_token - time_literal - - timestamp_string: - - - - - - - - ' - - - unquoted_timestamp_string - - ' - - - - - -
             ::= "'" unquoted_timestamp_string "'"
    -
    - referenced by: - - delimiter_token - timestamp_literal - - time_zone_interval: - - - - - - - - sign - - - hours_value - - : - - - minutes_value - - - - -
             ::= sign hours_value ':' minutes_value
    -
    - referenced by: - - unquoted_time_string - - date_value: - - - - - - - - years_value - - - - - - months_value - - - - - - days_value - - - - -
             ::= years_value '-' months_value '-' days_value
    -
    - referenced by: - - unquoted_date_string - - time_value: - - - - - - - - hours_value - - : - - - minutes_value - - : - - - seconds_value - - - - -
             ::= hours_value ':' minutes_value ':' seconds_value
    -
    - referenced by: - - unquoted_time_string - - interval_literal: - - - - - - - - INTERVAL - - - sign - - - interval_string - - - interval_qualifier - - - - -
             ::= 'INTERVAL' sign? interval_string interval_qualifier
    -
    - referenced by: - - general_literal - - interval_string: - - - - - - - - ' - - - unquoted_interval_string - - ' - - - - - -
             ::= "'" unquoted_interval_string "'"
    -
    - referenced by: - - delimiter_token - interval_literal - - unquoted_date_string: - - - - - - - - date_value - - - - -
             ::= date_value
    -
    - referenced by: - - date_string - unquoted_timestamp_string - - unquoted_time_string: - - - - - - - - time_value - - - time_zone_interval - - - - -
             ::= time_value time_zone_interval?
    -
    - referenced by: - - time_string - unquoted_timestamp_string - - unquoted_timestamp_string: - - - - - - - - unquoted_date_string - - - space - - - unquoted_time_string - - - - - - - referenced by: - - timestamp_string - - unquoted_interval_string: - - - - - - - - sign - - - year_month_literal - - - day_time_literal - - - - -
             ::= sign? ( year_month_literal | day_time_literal )
    -
    - referenced by: - - interval_string - - year_month_literal: - - - - - - - - years_value - - - - - - months_value - - - - -
             ::= years_value ( '-'? months_value )?
    -
    - referenced by: - - unquoted_interval_string - - day_time_literal: - - - - - - - - day_time_interval - - - time_interval - - - - -
             ::= day_time_interval
    -
               | time_interval
    -
    - referenced by: - - unquoted_interval_string - - day_time_interval: - - - - - - - - days_value - - - space - - - hours_value - - : - - - minutes_value - - : - - - seconds_value - - - - -
             ::= days_value ( space hours_value ( ':' minutes_value ( ':' seconds_value )? )? )?
    -
    - referenced by: - - day_time_literal - - time_interval: - - - - - - - - hours_value - - : - - - minutes_value - - : - - - seconds_value - - - minutes_value - - : - - - seconds_value - - - seconds_value - - - - -
             ::= hours_value ( ':' minutes_value ( ':' seconds_value )? )?
    -
               | minutes_value ( ':' seconds_value )?
    -
               | seconds_value
    -
    - referenced by: - - day_time_literal - - years_value: - - - - - - - - datetime_value - - - - -
             ::= datetime_value
    -
    - referenced by: - - date_value - year_month_literal - - months_value: - - - - - - - - datetime_value - - - - -
             ::= datetime_value
    -
    - referenced by: - - date_value - year_month_literal - - days_value: - - - - - - - - datetime_value - - - - -
             ::= datetime_value
    -
    - referenced by: - - date_value - day_time_interval - - hours_value: - - - - - - - - datetime_value - - - - -
             ::= datetime_value
    -
    - referenced by: - - day_time_interval - time_interval - time_value - time_zone_interval - - minutes_value: - - - - - - - - datetime_value - - - - -
             ::= datetime_value
    -
    - referenced by: - - day_time_interval - time_interval - time_value - time_zone_interval - - seconds_value: - - - - - - - - seconds_integer_value - - . - - - seconds_fraction - - - - -
             ::= seconds_integer_value ( '.' seconds_fraction? )?
    -
    - referenced by: - - day_time_interval - time_interval - time_value - - seconds_integer_value: - - - - - - - - unsigned_integer - - - - -
             ::= unsigned_integer
    -
    - referenced by: - - seconds_value - - seconds_fraction: - - - - - - - - unsigned_integer - - - - -
             ::= unsigned_integer
    -
    - referenced by: - - seconds_value - - datetime_value: - - - - - - - - unsigned_integer - - - - -
             ::= unsigned_integer
    -
    - referenced by: - - days_value - hours_value - minutes_value - months_value - years_value - - boolean_literal: - - - - - - - - TRUE - - - FALSE - - - UNKNOWN - - - - - -
             ::= 'TRUE'
    -
               | 'FALSE'
    -
               | 'UNKNOWN'
    -
    - referenced by: - - general_literal - - identifier: - - - - - - - - actual_identifier - - - - -
             ::= actual_identifier
    -
    - referenced by: - - SQL_client_module_name - SQL_parameter_name - asterisked_identifier - attribute_name - cast_to_distinct_identifier - cast_to_ref_identifier - cast_to_source_identifier - cast_to_type_identifier - catalog_name - column_name - correlation_name - external_routine_name - field_name - group_name - host_parameter_name - identifier_chain - method_name - new_values_table_alias - old_values_table_alias - procedure_name - qualified_identifier - query_name - regular_character_set_identifier - role_name - savepoint_name - statement_name - user_identifier - window_name - - actual_identifier: - - - - - - - - regular_identifier - - - delimited_identifier - - - - -
             ::= regular_identifier
    -
               | delimited_identifier
    -
    - referenced by: - - identifier - - SQL_language_identifier: - - - - - - - - SQL_language_identifier_start - - _ - - - SQL_language_identifier_part - - - - - - - referenced by: - - character_set_name - - SQL_language_identifier_start: - - - - - - - - simple_Latin_letter - - - - -
             ::= simple_Latin_letter
    -
    - referenced by: - - SQL_language_identifier - - SQL_language_identifier_part: - - - - - - - - simple_Latin_letter - - - digit - - - - -
             ::= simple_Latin_letter
    -
               | digit
    -
    - referenced by: - - SQL_language_identifier - - authorization_identifier: - - - - - - - - role_name - - - user_identifier - - - - -
             ::= role_name
    -
               | user_identifier
    -
    - referenced by: - - grantee - module_authorization_identifier - schema_authorization_identifier - - table_name: - - - - - - - - local_or_schema_qualified_name - - - - -
             ::= local_or_schema_qualified_name
    -
    - referenced by: - - alter_table_statement - drop_table_statement - drop_view_statement - insertion_target - like_clause - object_name - referenced_table_and_columns - scope_clause - subview_clause - supertable_name - table_definition - table_or_query_name - target_table - temporary_table_declaration - trigger_definition - view_definition - - domain_name: - - - - - - - - schema_qualified_name - - - - -
             ::= schema_qualified_name
    -
    - referenced by: - - alter_domain_statement - cast_target - column_definition - domain_definition - drop_domain_statement - object_name - - schema_name: - - - - - - - - catalog_name - - . - - - unqualified_schema_name - - - - -
             ::= ( catalog_name '.' )? unqualified_schema_name
    -
    - referenced by: - - character_set_name - drop_schema_statement - embedded_authorization_clause - local_or_schema_qualifier - module_authorization_clause - routine_name - schema_name_clause - schema_name_list - schema_qualified_name - schema_qualified_type_name - specific_method_name - - catalog_name: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - schema_name - - schema_qualified_name: - - - - - - - - schema_name - - . - - - qualified_identifier - - - - -
             ::= ( schema_name '.' )? qualified_identifier
    -
    - referenced by: - - collation_name - constraint_name - domain_name - schema_qualified_routine_name - sequence_generator_name - specific_name - transcoding_name - transliteration_name - trigger_name - - local_or_schema_qualified_name: - - - - - - - - local_or_schema_qualifier - - . - - - qualified_identifier - - - - -
             ::= ( local_or_schema_qualifier '.' )? qualified_identifier
    -
    - referenced by: - - table_name - - local_or_schema_qualifier: - - - - - - - - schema_name - - MODULE - - - - - -
             ::= schema_name
    -
               | 'MODULE'
    -
    - referenced by: - - local_or_schema_qualified_name - - qualified_identifier: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - attribute_or_method_reference - column_reference - local_or_schema_qualified_name - local_qualified_name - routine_name - schema_qualified_name - schema_qualified_type_name - - column_name: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - alter_column_definition - as_clause - column_definition - column_name_list - column_options - column_reference - cycle_column - cycle_mark_column - drop_column_definition - object_column - path_column - self_referencing_column_name - sequence_column - table_function_column_list_element - view_column_option - - correlation_name: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - merge_correlation_name - new_values_correlation_name - old_values_correlation_name - table_primary - - query_name: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - table_or_query_name - with_list_element - - SQL_client_module_name: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - module_name_clause - - procedure_name: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - externally_invoked_procedure - - schema_qualified_routine_name: - - - - - - - - schema_qualified_name - - - - -
             ::= schema_qualified_name
    -
    - referenced by: - - SQL_invoked_procedure - function_specification - member_name_alternatives - - method_name: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - direct_invocation - generalized_invocation - member_name_alternatives - method_reference - method_specification_designator - mutated_set_clause - partial_method_specification - specific_method_specification_designator - static_method_invocation - - specific_name: - - - - - - - - schema_qualified_name - - - - -
             ::= schema_qualified_name
    -
    - referenced by: - - routine_characteristic - specific_routine_designator - state_category - - cursor_name: - - - - - - - - local_qualified_name - - - - -
             ::= local_qualified_name
    -
    - referenced by: - - close_statement - declare_cursor - delete_statement__positioned - dynamic_cursor_name - dynamic_declare_cursor - fetch_statement - open_statement - preparable_dynamic_delete_statement__positioned - preparable_dynamic_update_statement__positioned - update_statement__positioned - - local_qualified_name: - - - - - - - - MODULE - - - . - - - qualified_identifier - - - - -
             ::= ( 'MODULE' '.' )? qualified_identifier
    -
    - referenced by: - - cursor_name - - host_parameter_name: - - - - - - - - : - - - identifier - - - - -
             ::= ':' identifier
    -
    - referenced by: - - host_parameter_declaration - host_parameter_specification - indicator_parameter - locator_reference - simple_value_specification - - SQL_parameter_name: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - SQL_parameter_declaration - - constraint_name: - - - - - - - - schema_qualified_name - - - - -
             ::= schema_qualified_name
    -
    - referenced by: - - SQL_condition - assertion_definition - constraint_name_definition - constraint_name_list - drop_assertion_statement - drop_domain_constraint_definition - drop_table_constraint_definition - - external_routine_name: - - - - - - - - identifier - - - character_string_literal - - - - -
             ::= identifier
    -
               | character_string_literal
    -
    - referenced by: - - alter_routine_characteristic - external_body_reference - - trigger_name: - - - - - - - - schema_qualified_name - - - - -
             ::= schema_qualified_name
    -
    - referenced by: - - drop_trigger_statement - trigger_definition - - collation_name: - - - - - - - - schema_qualified_name - - - - -
             ::= schema_qualified_name
    -
    - referenced by: - - collate_clause - collation_definition - drop_collation_statement - existing_collation_name - module_collation_specification - object_name - - character_set_name: - - - - - - - - schema_name - - . - - - SQL_language_identifier - - - - -
             ::= ( schema_name '.' )? SQL_language_identifier
    -
    - referenced by: - - character_set_definition - drop_character_set_statement - implementation_defined_character_set_name - object_name - standard_character_set_name - user_defined_character_set_name - - transliteration_name: - - - - - - - - schema_qualified_name - - - - -
             ::= schema_qualified_name
    -
    - referenced by: - - character_transliteration - drop_transliteration_statement - existing_transliteration_name - object_name - transliteration_definition - - transcoding_name: - - - - - - - - schema_qualified_name - - - - -
             ::= schema_qualified_name
    -
    - referenced by: - - transcoding - - user_defined_type_name: - - - - - - - - schema_qualified_type_name - - - - -
             ::= schema_qualified_type_name
    -
    - referenced by: - - path_resolved_user_defined_type_name - schema_resolved_user_defined_type_name - - schema_resolved_user_defined_type_name: - - - - - - - - user_defined_type_name - - - - -
             ::= user_defined_type_name
    -
    - referenced by: - - alter_transform_statement - alter_type_statement - drop_data_type_statement - drop_transform_statement - drop_user_defined_ordering_statement - method_specification_designator - object_name - specific_routine_designator - transform_definition - user_defined_ordering_definition - user_defined_type_body - - schema_qualified_type_name: - - - - - - - - schema_name - - . - - - qualified_identifier - - - - -
             ::= ( schema_name '.' )? qualified_identifier
    -
    - referenced by: - - user_defined_type_name - - attribute_name: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - attribute_definition - dereference_operation - drop_attribute_definition - list_of_attributes - - field_name: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - field_definition - field_reference - - savepoint_name: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - savepoint_specifier - - sequence_generator_name: - - - - - - - - schema_qualified_name - - - - -
             ::= schema_qualified_name
    -
    - referenced by: - - alter_sequence_generator_statement - drop_sequence_generator_statement - next_value_expression - object_name - sequence_generator_definition - - role_name: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - authorization_identifier - drop_role_statement - role_definition - role_granted - role_revoked - - user_identifier: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - authorization_identifier - - connection_name: - - - - - - - - simple_value_specification - - - - -
             ::= simple_value_specification
    -
    - referenced by: - - connection_object - connection_target - - SQL_server_name: - - - - - - - - simple_value_specification - - - - -
             ::= simple_value_specification
    -
    - referenced by: - - connection_target - - connection_user_name: - - - - - - - - simple_value_specification - - - - -
             ::= simple_value_specification
    -
    - referenced by: - - connection_target - - SQL_statement_name: - - - - - - - - statement_name - - - extended_statement_name - - - - -
             ::= statement_name
    -
               | extended_statement_name
    -
    - referenced by: - - deallocate_prepared_statement - describe_input_statement - described_object - execute_statement - prepare_statement - - statement_name: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - SQL_statement_name - dynamic_declare_cursor - - extended_statement_name: - - - - - - - - scope_option - - - simple_value_specification - - - - - - - referenced by: - - SQL_statement_name - statement_cursor - - dynamic_cursor_name: - - - - - - - - cursor_name - - - extended_cursor_name - - - - -
             ::= cursor_name
    -
               | extended_cursor_name
    -
    - referenced by: - - dynamic_close_statement - dynamic_delete_statement__positioned - dynamic_fetch_statement - dynamic_open_statement - dynamic_update_statement__positioned - - extended_cursor_name: - - - - - - - - scope_option - - - simple_value_specification - - - - - - - referenced by: - - allocate_cursor_statement - described_object - dynamic_cursor_name - - descriptor_name: - - - - - - - - scope_option - - - simple_value_specification - - - - - - - referenced by: - - allocate_descriptor_statement - deallocate_descriptor_statement - get_descriptor_statement - into_descriptor - set_descriptor_statement - using_descriptor - - scope_option: - - - - - - - - GLOBAL - - - LOCAL - - - - - -
             ::= 'GLOBAL'
    -
               | 'LOCAL'
    -
    - referenced by: - - descriptor_name - extended_cursor_name - extended_statement_name - preparable_dynamic_delete_statement__positioned - preparable_dynamic_update_statement__positioned - - window_name: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - existing_window_name - new_window_name - window_name_or_specification - - data_type: - - - - - - - - predefined_type - - - row_type - - - path_resolved_user_defined_type_name - - - reference_type - - - collection_type - - - - -
             ::= predefined_type
    -
               | row_type
    -
               | path_resolved_user_defined_type_name
    -
               | reference_type
    -
               | collection_type
    -
    - referenced by: - - array_type - attribute_definition - cast_target - column_definition - data_type_list - domain_definition - field_definition - generalized_invocation - host_parameter_data_type - multiset_type - parameter_type - result_cast_from_type - returns_data_type - sequence_generator_data_type_option - source_data_type - table_function_column_list_element - target_data_type - - predefined_type: - - - - - - - - character_string_type - - CHARACTER - - - SET - - - character_set_specification - - - national_character_string_type - - - collate_clause - - - binary_large_object_string_type - - - numeric_type - - BOOLEAN - - - datetime_type - - - interval_type - - - - - -
               | binary_large_object_string_type
    -
               | numeric_type
    -
               | 'BOOLEAN'
    -
               | datetime_type
    -
               | interval_type
    -
    - referenced by: - - Ada_user_defined_type_variable - COBOL_user_defined_type_variable - C_user_defined_type_variable - Fortran_user_defined_type_variable - MUMPS_user_defined_type_variable - PL_I_user_defined_type_variable - Pascal_user_defined_type_variable - data_type - representation - user_defined_representation - - character_string_type: - - - - - - - - CHARACTER - - - CHAR - - - VARYING - - - ( - - - length - - ) - - - LARGE - - - OBJECT* - - - ( - - - large_object_length - - ) - - - VARCHAR - - - ( - - - length - - ) - - - CLOB - - - ( - - - large_object_length - - ) - - - - - -
             ::= ( 'CHARACTER' | 'CHAR' ) ( 'VARYING'? '(' length ')' | 'LARGE' 'OBJECT*' ( '(' large_object_length ')' )? )?
    -
               | 'VARCHAR' '(' length ')'
    -
               | 'CLOB' ( '(' large_object_length ')' )?
    -
    - referenced by: - - predefined_type - - national_character_string_type: - - - - - - - - NATIONAL - - - CHARACTER - - - VARYING - - - ( - - - length - - ) - - - LARGE - - - OBJECT* - - - ( - - - large_object_length - - ) - - - CHAR - - - VARYING - - - ( - - - length - - ) - - - NCHAR - - - VARYING - - - ( - - - length - - ) - - - LARGE - - - OBJECT* - - - ( - - - large_object_length - - ) - - - NCLOB - - - ( - - - large_object_length - - ) - - - - - -
             ::= 'NATIONAL' ( 'CHARACTER' ( 'VARYING'? '(' length ')' | 'LARGE' 'OBJECT*' ( '(' large_object_length ')' )? )? | 'CHAR' ( 'VARYING'? '(' length ')' )? )
    -
               | 'NCHAR' ( 'VARYING'? '(' length ')' | 'LARGE' 'OBJECT*' ( '(' large_object_length ')' )? )?
    -
               | 'NCLOB' ( '(' large_object_length ')' )?
    -
    - referenced by: - - predefined_type - - binary_large_object_string_type: - - - - - - - - BINARY - - - LARGE - - - OBJECT* - - - BLOB - - - ( - - - large_object_length - - ) - - - - - -
             ::= ( 'BINARY' 'LARGE' 'OBJECT*' | 'BLOB' ) ( '(' large_object_length ')' )?
    -
    - referenced by: - - predefined_type - - numeric_type: - - - - - - - - exact_numeric_type - - - approximate_numeric_type - - - - -
             ::= exact_numeric_type
    -
               | approximate_numeric_type
    -
    - referenced by: - - predefined_type - - exact_numeric_type: - - - - - - - - NUMERIC - - - DECIMAL - - - DEC - - - ( - - - precision - - , - - - scale - - ) - - - SMALLINT - - - INTEGER - - - INT - - - BIGINT - - - - - -
             ::= ( 'NUMERIC' | 'DECIMAL' | 'DEC' ) ( '(' precision ( ',' scale )? ')' )?
    -
               | 'SMALLINT'
    -
               | 'INTEGER'
    -
               | 'INT'
    -
               | 'BIGINT'
    -
    - referenced by: - - numeric_type - - approximate_numeric_type: - - - - - - - - FLOAT - - - ( - - - precision - - ) - - - REAL - - - DOUBLE - - - PRECISION - - - - - -
             ::= 'FLOAT' ( '(' precision ')' )?
    -
               | 'REAL'
    -
               | 'DOUBLE' 'PRECISION'
    -
    - referenced by: - - numeric_type - - length: - - - - - - - - unsigned_integer - - - - - - referenced by: - - Ada_qualified_type_specification - Ada_unqualified_type_specification - COBOL_character_type - COBOL_national_character_type - COBOL_nines - C_array_specification - Fortran_type_specification - MUMPS_length_specification - PL_I_type_specification - Pascal_type_specification - character_string_type - national_character_string_type - - large_object_length: - - - - - - - - unsigned_integer - - - multiplier - - - large_object_length_token - - - char_length_units - - - - - - - referenced by: - - Ada_BLOB_variable - Ada_CLOB_variable - COBOL_BLOB_variable - COBOL_CLOB_variable - COBOL_NCLOB_variable - C_BLOB_variable - C_CLOB_variable - C_NCLOB_variable - Fortran_BLOB_variable - Fortran_CLOB_variable - MUMPS_BLOB_variable - MUMPS_CLOB_variable - PL_I_BLOB_variable - PL_I_CLOB_variable - Pascal_BLOB_variable - Pascal_CLOB_variable - binary_large_object_string_type - character_string_type - national_character_string_type - - char_length_units: - - - - - - - - CHARACTERS* - - - CODE_UNITS* - - - OCTETS* - - - - - -
             ::= 'CHARACTERS*'
    -
               | 'CODE_UNITS*'
    -
               | 'OCTETS*'
    -
    - referenced by: - - char_length_expression - character_overlay_function - character_substring_function - large_object_length - string_position_expression - - precision: - - - - - - - - unsigned_integer - - - - -
             ::= unsigned_integer
    -
    - referenced by: - - MUMPS_type_specification - PL_I_type_specification - approximate_numeric_type - exact_numeric_type - - scale: - - - - - - - - unsigned_integer - - - - - - referenced by: - - MUMPS_type_specification - PL_I_type_specification - exact_numeric_type - - datetime_type: - - - - - - - - DATE - - - TIME - - - ( - - - time_precision - - ) - - - TIMESTAMP - - - ( - - - timestamp_precision - - ) - - - with_or_without_time_zone - - - - -
             ::= 'DATE'
    -
               | ( 'TIME' ( '(' time_precision ')' )? | 'TIMESTAMP' ( '(' timestamp_precision ')' )? ) with_or_without_time_zone?
    -
    - referenced by: - - predefined_type - - with_or_without_time_zone: - - - - - - - - WITH - - - WITHOUT - - - TIME - - - ZONE* - - - - - -
             ::= ( 'WITH' | 'WITHOUT' ) 'TIME' 'ZONE*'
    -
    - referenced by: - - datetime_type - - time_precision: - - - - - - - - time_fractional_seconds_precision - - - - -
             ::= time_fractional_seconds_precision
    -
    - referenced by: - - current_local_time_value_function - current_time_value_function - datetime_type - - timestamp_precision: - - - - - - - - time_fractional_seconds_precision - - - - -
             ::= time_fractional_seconds_precision
    -
    - referenced by: - - current_local_timestamp_value_function - current_timestamp_value_function - datetime_type - - time_fractional_seconds_precision: - - - - - - - - unsigned_integer - - - - -
             ::= unsigned_integer
    -
    - referenced by: - - time_precision - timestamp_precision - - interval_type: - - - - - - - - INTERVAL - - - interval_qualifier - - - - -
             ::= 'INTERVAL' interval_qualifier
    -
    - referenced by: - - predefined_type - - row_type: - - - - - - - - ROW - - - row_type_body - - - - - - referenced by: - - data_type - - row_type_body: - - - - - - - - ( - - - field_definition - - , - - - ) - - - - - -
             ::= '(' field_definition ( ',' field_definition )* ')'
    -
    - referenced by: - - row_type - - reference_type: - - - - - - - - REF - - - ( - - - referenced_type - - ) - - - scope_clause - - - - -
             ::= 'REF' '(' referenced_type ')' scope_clause?
    -
    - referenced by: - - Ada_REF_variable - COBOL_REF_variable - C_REF_variable - Fortran_REF_variable - MUMPS_REF_variable - PL_I_REF_variable - Pascal_REF_variable - data_type - target_subtype - - scope_clause: - - - - - - - - SCOPE - - - table_name - - - - -
             ::= SCOPE table_name
    -
    - referenced by: - - add_column_scope_clause - column_option_list - reference_type - view_column_option - - referenced_type: - - - - - - - - path_resolved_user_defined_type_name - - - - - - - referenced by: - - reference_type - - path_resolved_user_defined_type_name: - - - - - - - - user_defined_type_name - - - - -
             ::= user_defined_type_name
    -
    - referenced by: - - Ada_user_defined_type_locator_variable - Ada_user_defined_type_variable - COBOL_user_defined_type_locator_variable - COBOL_user_defined_type_variable - C_user_defined_type_locator_variable - C_user_defined_type_variable - Fortran_user_defined_type_locator_variable - Fortran_user_defined_type_variable - MUMPS_user_defined_type_locator_variable - MUMPS_user_defined_type_variable - PL_I_user_defined_type_locator_variable - PL_I_user_defined_type_variable - Pascal_user_defined_type_locator_variable - Pascal_user_defined_type_variable - data_type - exclusive_user_defined_type_specification - general_value_specification - generalized_expression - group_specification - inclusive_user_defined_type_specification - referenceable_view_specification - referenced_type - static_method_invocation - supertype_name - table_contents_source - target_subtype - transform_group_characteristic - - collection_type: - - - - - - - - array_type - - - multiset_type - - - - -
             ::= array_type
    -
               | multiset_type
    -
    - referenced by: - - data_type - - array_type: - - - - - - - - data_type - - ARRAY - - - left_bracket_or_trigraph - - - unsigned_integer - - - right_bracket_or_trigraph - - - - - - - referenced by: - - Ada_array_locator_variable - COBOL_array_locator_variable - C_array_locator_variable - Fortran_array_locator_variable - MUMPS_array_locator_variable - PL_I_array_locator_variable - Pascal_array_locator_variable - collection_type - - multiset_type: - - - - - - - - data_type - - MULTISET - - - - - -
             ::= data_type 'MULTISET'
    -
    - referenced by: - - Ada_multiset_locator_variable - COBOL_multiset_locator_variable - C_multiset_locator_variable - Fortran_multiset_locator_variable - MUMPS_multiset_locator_variable - PL_I_multiset_locator_variable - Pascal_multiset_locator_variable - collection_type - - field_definition: - - - - - - - - field_name - - - data_type - - - reference_scope_check - - - - - - - referenced by: - - row_type_body - - value_expression_primary: - - - - - - - - parenthesized_value_expression - - - nonparenthesized_value_expression_primary - - - - -
             ::= parenthesized_value_expression
    -
    -
    - referenced by: - - all_fields_reference - array_factor - attribute_or_method_reference - blob_primary - character_primary - datetime_primary - direct_invocation - field_reference - generalized_invocation - interval_primary - method_reference - multiset_primary - numeric_primary - reference_value_expression - user_defined_type_value_expression - - parenthesized_value_expression: - - - - - - - - ( - - - value_expression - - ) - - - - - -
             ::= '(' value_expression ')'
    -
    - referenced by: - - value_expression_primary - - nonparenthesized_value_expression_primary: - - - - - - - - unsigned_value_specification - - - column_reference - - - set_function_specification - - - window_function - - - scalar_subquery - - - case_expression - - - cast_specification - - - field_reference - - - subtype_treatment - - - method_invocation - - - static_method_invocation - - - new_specification - - - attribute_or_method_reference - - - reference_resolution - - - collection_value_constructor - - - array_element_reference - - - multiset_element_reference - - - routine_invocation - - - next_value_expression - - - - -
             ::= unsigned_value_specification
    -
               | column_reference
    -
               | set_function_specification
    -
               | window_function
    -
               | scalar_subquery
    -
               | case_expression
    -
               | cast_specification
    -
               | field_reference
    -
               | subtype_treatment
    -
               | method_invocation
    -
               | static_method_invocation
    -
               | new_specification
    -
               | attribute_or_method_reference
    -
               | reference_resolution
    -
               | collection_value_constructor
    -
               | array_element_reference
    -
               | multiset_element_reference
    -
               | routine_invocation
    -
               | next_value_expression
    -
    - referenced by: - - boolean_predicand - row_value_special_case - value_expression_primary - - value_specification: - - - - - - - - literal - - - general_value_specification - - - - -
             ::= literal
    -
               | general_value_specification
    -
    - referenced by: - - SQL_path_characteristic - catalog_name_characteristic - character_set_name_characteristic - collation_specification - role_specification - schema_name_characteristic - set_session_user_identifier_statement - transform_group_characteristic - - unsigned_value_specification: - - - - - - - - unsigned_literal - - - general_value_specification - - - - -
             ::= unsigned_literal
    -
               | general_value_specification
    -
    - referenced by: - - nonparenthesized_value_expression_primary - window_frame_following - window_frame_preceding - - general_value_specification: - - - - - - - - host_parameter_specification - - - SQL_parameter_reference - - ? - - - embedded_variable_specification - - - current_collation_specification - - CURRENT_DEFAULT_TRANSFORM_GROUP - - - CURRENT_PATH - - - CURRENT_ROLE - - - CURRENT_TRANSFORM_GROUP_FOR_TYPE - - - path_resolved_user_defined_type_name - - CURRENT_USER - - - SESSION_USER - - - SYSTEM_USER - - - USER - - - VALUE - - - - - -
             ::= host_parameter_specification
    -
               | SQL_parameter_reference
    -
               | '?'
    -
               | embedded_variable_specification
    -
               | current_collation_specification
    -
               | 'CURRENT_DEFAULT_TRANSFORM_GROUP'
    -
               | 'CURRENT_PATH'
    -
               | 'CURRENT_ROLE'
    -
               | 'CURRENT_TRANSFORM_GROUP_FOR_TYPE' path_resolved_user_defined_type_name
    -
               | 'CURRENT_USER'
    -
               | 'SESSION_USER'
    -
               | 'SYSTEM_USER'
    -
               | 'USER'
    -
               | 'VALUE'
    -
    - referenced by: - - unsigned_value_specification - using_argument - value_specification - - simple_value_specification: - - - - - - - - literal - - - host_parameter_name - - - SQL_parameter_reference - - - embedded_variable_name - - - - -
             ::= literal
    -
               | host_parameter_name
    -
               | SQL_parameter_reference
    -
               | embedded_variable_name
    -
    - referenced by: - - SQL_server_name - SQL_statement_variable - attributes_variable - condition_number - connection_name - connection_user_name - descriptor_name - extended_cursor_name - extended_statement_name - fetch_orientation - item_number - number_of_conditions - occurrences - simple_value_specification_1 - simple_value_specification_2 - target_array_element_specification - update_target - - target_specification: - - - - - - - - host_parameter_specification - - - SQL_parameter_reference - - - column_reference - - - target_array_element_specification - - ? - - - embedded_variable_specification - - - - -
             ::= host_parameter_specification
    -
               | SQL_parameter_reference
    -
               | column_reference
    -
               | target_array_element_specification
    -
               | '?'
    -
               | embedded_variable_specification
    -
    - referenced by: - - SQL_argument - fetch_target_list - into_argument - select_target_list - - simple_target_specification: - - - - - - - - host_parameter_specification - - - SQL_parameter_reference - - - column_reference - - - embedded_variable_name - - - - -
             ::= host_parameter_specification
    -
               | SQL_parameter_reference
    -
               | column_reference
    -
               | embedded_variable_name
    -
    - referenced by: - - condition_information_item - simple_target_specification_1 - simple_target_specification_2 - statement_information_item - - host_parameter_specification: - - - - - - - - host_parameter_name - - - indicator_parameter - - - - - - - referenced by: - - general_value_specification - simple_target_specification - target_specification - - embedded_variable_specification: - - - - - - - - embedded_variable_name - - - indicator_variable - - - - - - - referenced by: - - general_value_specification - target_specification - - indicator_variable: - - - - - - - - INDICATOR - - - embedded_variable_name - - - - -
             ::= 'INDICATOR'? embedded_variable_name
    -
    - referenced by: - - embedded_variable_specification - - indicator_parameter: - - - - - - - - INDICATOR - - - host_parameter_name - - - - -
             ::= 'INDICATOR'? host_parameter_name
    -
    - referenced by: - - host_parameter_specification - - target_array_element_specification: - - - - - - - - target_array_reference - - - left_bracket_or_trigraph - - - simple_value_specification - - - right_bracket_or_trigraph - - - - - - - referenced by: - - target_specification - - target_array_reference: - - - - - - - - SQL_parameter_reference - - - column_reference - - - - -
             ::= SQL_parameter_reference
    -
               | column_reference
    -
    - referenced by: - - target_array_element_specification - - current_collation_specification: - - - - - - - - CURRENT_COLLATION* - - - ( - - - string_value_expression - - ) - - - - - -
             ::= 'CURRENT_COLLATION*' '(' string_value_expression ')'
    -
    - referenced by: - - general_value_specification - - contextually_typed_value_specification: - - - - - - - - implicitly_typed_value_specification - - DEFAULT - - - - - - -
               | 'DEFAULT'
    -
    - referenced by: - - contextually_typed_row_value_constructor - contextually_typed_row_value_constructor_element - merge_insert_value_element - update_source - - implicitly_typed_value_specification: - - - - - - - - NULL - - - empty_specification - - - - -
             ::= 'NULL'
    -
               | empty_specification
    -
    - referenced by: - - cast_operand - contextually_typed_value_specification - default_option - - empty_specification: - - - - - - - - ARRAY - - - MULTISET - - - left_bracket_or_trigraph - - - right_bracket_or_trigraph - - - - -
             ::= ( 'ARRAY' | 'MULTISET' ) left_bracket_or_trigraph right_bracket_or_trigraph
    -
    - referenced by: - - implicitly_typed_value_specification - - identifier_chain: - - - - - - - - identifier - - . - - - - - -
             ::= identifier ( '.' identifier )*
    -
    - referenced by: - - basic_identifier_chain - - basic_identifier_chain: - - - - - - - - identifier_chain - - - - -
             ::= identifier_chain
    -
    - referenced by: - - SQL_parameter_reference - column_reference - - column_reference: - - - - - - - - basic_identifier_chain - - MODULE - - - . - - - qualified_identifier - - . - - - column_name - - - - -
             ::= basic_identifier_chain
    -
               | 'MODULE' '.' qualified_identifier '.' column_name
    -
    - referenced by: - - grouping_column_reference - grouping_operation - nonparenthesized_value_expression_primary - simple_target_specification - target_array_reference - target_specification - window_partition_column_reference - - SQL_parameter_reference: - - - - - - - - basic_identifier_chain - - - - -
             ::= basic_identifier_chain
    -
    - referenced by: - - general_value_specification - simple_target_specification - simple_value_specification - target_array_reference - target_specification - - set_function_specification: - - - - - - - - aggregate_function - - - grouping_operation - - - - -
             ::= aggregate_function
    -
               | grouping_operation
    -
    - referenced by: - - nonparenthesized_value_expression_primary - - grouping_operation: - - - - - - - - GROUPING - - - ( - - - column_reference - - , - - - ) - - - - - -
             ::= 'GROUPING' '(' column_reference ( ',' column_reference )* ')'
    -
    - referenced by: - - set_function_specification - - window_function: - - - - - - - - window_function_type - - OVER - - - window_name_or_specification - - - - - - - referenced by: - - nonparenthesized_value_expression_primary - - window_function_type: - - - - - - - - rank_function_type - - ROW_NUMBER* - - - ( - - - ) - - - aggregate_function - - - - -
             ::= ( rank_function_type | 'ROW_NUMBER*' ) '(' ')'
    -
               | aggregate_function
    -
    - referenced by: - - window_function - - rank_function_type: - - - - - - - - RANK* - - - DENSE_RANK* - - - PERCENT_RANK* - - - CUME_DIST* - - - - - -
             ::= 'RANK*'
    -
               | 'DENSE_RANK*'
    -
               | 'PERCENT_RANK*'
    -
               | 'CUME_DIST*'
    -
    - referenced by: - - hypothetical_set_function - window_function_type - - window_name_or_specification: - - - - - - - - window_name - - - in_line_window_specification - - - - -
             ::= window_name
    -
               | in_line_window_specification
    -
    - referenced by: - - window_function - - in_line_window_specification: - - - - - - - - window_specification - - - - -
             ::= window_specification
    -
    - referenced by: - - window_name_or_specification - - case_expression: - - - - - - - - case_abbreviation - - - case_specification - - - - -
             ::= case_abbreviation
    -
               | case_specification
    -
    - referenced by: - - nonparenthesized_value_expression_primary - - case_abbreviation: - - - - - - - - NULLIF* - - - ( - - - value_expression - - , - - - COALESCE* - - - ( - - - value_expression - - , - - - value_expression - - ) - - - - - -
             ::= ( 'NULLIF*' '(' value_expression ',' | 'COALESCE*' '(' ( value_expression ',' )* ) value_expression ')'
    -
    - referenced by: - - case_expression - - case_specification: - - - - - - - - simple_case - - - searched_case - - - - -
             ::= simple_case
    -
               | searched_case
    -
    - referenced by: - - case_expression - - simple_case: - - - - - - - - CASE - - - case_operand - - - simple_when_clause - - - else_clause - - END - - - - - -
             ::= 'CASE' case_operand simple_when_clause else_clause? 'END'
    -
    - referenced by: - - case_specification - - searched_case: - - - - - - - - CASE - - - searched_when_clause - - - else_clause - - END - - - - - -
             ::= 'CASE' searched_when_clause else_clause? 'END'
    -
    - referenced by: - - case_specification - - simple_when_clause: - - - - - - - - WHEN - - - when_operand - - THEN - - - result - - - - -
             ::= 'WHEN' when_operand 'THEN' result
    -
    - referenced by: - - simple_case - - searched_when_clause: - - - - - - - - WHEN - - - search_condition - - THEN - - - result - - - - -
             ::= 'WHEN' search_condition 'THEN' result
    -
    - referenced by: - - searched_case - - else_clause: - - - - - - - - ELSE - - - result - - - - -
             ::= 'ELSE' result
    -
    - referenced by: - - searched_case - simple_case - - case_operand: - - - - - - - - row_value_predicand - - - overlaps_predicate - - - - -
             ::= row_value_predicand
    -
               | overlaps_predicate
    -
    - referenced by: - - simple_case - - when_operand: - - - - - - - - row_value_predicand - - - comparison_predicate_part_2 - - - between_predicate_part_2 - - - in_predicate_part_2 - - - character_like_predicate_part_2 - - - octet_like_predicate_part_2 - - - similar_predicate_part_2 - - - null_predicate_part_2 - - - quantified_comparison_predicate_part_2 - - - match_predicate_part_2 - - - overlaps_predicate_part_2 - - - distinct_predicate_part_2 - - - member_predicate_part_2 - - - submultiset_predicate_part_2 - - - set_predicate_part_2 - - - type_predicate_part_2 - - - - -
             ::= row_value_predicand
    -
               | comparison_predicate_part_2
    -
               | between_predicate_part_2
    -
               | in_predicate_part_2
    -
               | character_like_predicate_part_2
    -
               | octet_like_predicate_part_2
    -
               | similar_predicate_part_2
    -
               | null_predicate_part_2
    - -
               | match_predicate_part_2
    -
               | overlaps_predicate_part_2
    -
               | distinct_predicate_part_2
    -
               | member_predicate_part_2
    -
               | submultiset_predicate_part_2
    -
               | set_predicate_part_2
    -
               | type_predicate_part_2
    -
    - referenced by: - - simple_when_clause - - result: - - - - - - - - result_expression - - NULL - - - - - -
               | 'NULL'
    -
    - referenced by: - - else_clause - searched_when_clause - simple_when_clause - - result_expression: - - - - - - - - value_expression - - - - -
             ::= value_expression
    -
    - referenced by: - - result - - cast_specification: - - - - - - - - CAST - - - ( - - - cast_operand - - AS - - - cast_target - - ) - - - - - -
             ::= 'CAST' '(' cast_operand 'AS' cast_target ')'
    -
    - referenced by: - - nonparenthesized_value_expression_primary - - cast_operand: - - - - - - - - value_expression - - - implicitly_typed_value_specification - - - - -
             ::= value_expression
    -
               | implicitly_typed_value_specification
    -
    - referenced by: - - cast_specification - - cast_target: - - - - - - - - domain_name - - - data_type - - - - -
             ::= domain_name
    -
               | data_type
    -
    - referenced by: - - cast_specification - - next_value_expression: - - - - - - - - NEXT* - - - VALUE - - - FOR - - - sequence_generator_name - - - - -
             ::= 'NEXT*' 'VALUE' 'FOR' sequence_generator_name
    -
    - referenced by: - - nonparenthesized_value_expression_primary - - field_reference: - - - - - - - - value_expression_primary - - . - - - field_name - - - - -
             ::= value_expression_primary '.' field_name
    -
    - referenced by: - - nonparenthesized_value_expression_primary - - subtype_treatment: - - - - - - - - TREAT - - - ( - - - subtype_operand - - AS - - - target_subtype - - ) - - - - - -
             ::= 'TREAT' '(' subtype_operand 'AS' target_subtype ')'
    -
    - referenced by: - - nonparenthesized_value_expression_primary - - subtype_operand: - - - - - - - - value_expression - - - - -
             ::= value_expression
    -
    - referenced by: - - subtype_treatment - - target_subtype: - - - - - - - - path_resolved_user_defined_type_name - - - reference_type - - - - - -
               | reference_type
    -
    - referenced by: - - subtype_treatment - - method_invocation: - - - - - - - - direct_invocation - - - generalized_invocation - - - - -
             ::= direct_invocation
    -
               | generalized_invocation
    -
    - referenced by: - - new_invocation - nonparenthesized_value_expression_primary - - direct_invocation: - - - - - - - - value_expression_primary - - . - - - method_name - - - SQL_argument_list - - - - - - - referenced by: - - method_invocation - - generalized_invocation: - - - - - - - - ( - - - value_expression_primary - - AS - - - data_type - - ) - - - . - - - method_name - - - SQL_argument_list - - - - -
             ::= '(' value_expression_primary 'AS' data_type ')' '.' method_name SQL_argument_list?
    -
    - referenced by: - - method_invocation - - method_selection: - - - - - - - - routine_invocation - - - - -
             ::= routine_invocation
    -
    - no referencesconstructor_method_selection: - - - - - - - - routine_invocation - - - - -
             ::= routine_invocation
    -
    - no referencesstatic_method_invocation: - - - - - - - - path_resolved_user_defined_type_name - - :: - - - method_name - - - SQL_argument_list - - - - - - - referenced by: - - nonparenthesized_value_expression_primary - - static_method_selection: - - - - - - - - routine_invocation - - - - -
             ::= routine_invocation
    -
    - no referencesnew_specification: - - - - - - - - NEW - - - routine_invocation - - - - -
             ::= 'NEW' routine_invocation
    -
    - referenced by: - - nonparenthesized_value_expression_primary - - new_invocation: - - - - - - - - method_invocation - - - routine_invocation - - - - -
             ::= method_invocation
    -
               | routine_invocation
    -
    - no referencesattribute_or_method_reference: - - - - - - - - value_expression_primary - - -> - - - qualified_identifier - - - SQL_argument_list - - - - - - - referenced by: - - nonparenthesized_value_expression_primary - - dereference_operation: - - - - - - - - reference_value_expression - - -> - - - attribute_name - - - - -
             ::= reference_value_expression '->' attribute_name
    -
    - no referencesmethod_reference: - - - - - - - - value_expression_primary - - -> - - - method_name - - - SQL_argument_list - - - - - - - no referencesreference_resolution: - - - - - - - - DEREF - - - ( - - - reference_value_expression - - ) - - - - - -
             ::= 'DEREF' '(' reference_value_expression ')'
    -
    - referenced by: - - nonparenthesized_value_expression_primary - - array_element_reference: - - - - - - - - array_value_expression - - - left_bracket_or_trigraph - - - numeric_value_expression - - - right_bracket_or_trigraph - - - - - - - referenced by: - - nonparenthesized_value_expression_primary - - multiset_element_reference: - - - - - - - - ELEMENT - - - ( - - - multiset_value_expression - - ) - - - - - -
             ::= 'ELEMENT' '(' multiset_value_expression ')'
    -
    - referenced by: - - nonparenthesized_value_expression_primary - - value_expression: - - - - - - - - common_value_expression - - - boolean_value_expression - - - row_value_expression - - - - -
             ::= common_value_expression
    -
               | boolean_value_expression
    -
               | row_value_expression
    -
    - referenced by: - - SQL_argument - array_element - case_abbreviation - cast_operand - contextually_typed_row_value_constructor_element - cycle_mark_value - derived_column - general_set_function - generalized_expression - generation_expression - hypothetical_set_function_value_expression_list - merge_insert_value_element - multiset_element - non_cycle_mark_value - parenthesized_value_expression - result_expression - return_value - row_value_constructor_element - sort_key - subtype_operand - update_source - - common_value_expression: - - - - - - - - numeric_value_expression - - - string_value_expression - - - datetime_value_expression - - - interval_value_expression - - - user_defined_type_value_expression - - - reference_value_expression - - - collection_value_expression - - - - -
             ::= numeric_value_expression
    -
               | string_value_expression
    -
               | datetime_value_expression
    -
               | interval_value_expression
    -
               | user_defined_type_value_expression
    -
               | reference_value_expression
    -
               | collection_value_expression
    -
    - referenced by: - - contextually_typed_row_value_constructor - row_value_constructor - row_value_constructor_predicand - value_expression - - user_defined_type_value_expression: - - - - - - - - value_expression_primary - - - - -
             ::= value_expression_primary
    -
    - referenced by: - - common_value_expression - specific_type_method - - reference_value_expression: - - - - - - - - value_expression_primary - - - - -
             ::= value_expression_primary
    -
    - referenced by: - - common_value_expression - dereference_operation - reference_resolution - - collection_value_expression: - - - - - - - - array_value_expression - - - multiset_value_expression - - - - -
             ::= array_value_expression
    -
               | multiset_value_expression
    -
    - referenced by: - - cardinality_expression - collection_derived_table - common_value_expression - table_function_derived_table - - collection_value_constructor: - - - - - - - - array_value_constructor - - - multiset_value_constructor - - - - -
             ::= array_value_constructor
    -
               | multiset_value_constructor
    -
    - referenced by: - - nonparenthesized_value_expression_primary - - numeric_value_expression: - - - - - - - - term - - + - - - - - - - - - -
             ::= term ( ( '+' | '-' ) term )*
    -
    - referenced by: - - absolute_value_expression - array_element_reference - ceiling_function - common_value_expression - dependent_variable_expression - exponential_function - floor_function - independent_variable_expression - inverse_distribution_function_argument - natural_logarithm - numeric_value_expression_base - numeric_value_expression_exponent - repeat_argument - sample_percentage - square_root - start_position - string_length - width_bucket_bound_1 - width_bucket_bound_2 - width_bucket_count - width_bucket_operand - - term: - - - - - - - - factor - - * - - - / - - - - -
    term     ::= factor ( ( '*' | '/' ) factor )*
    -
    - referenced by: - - interval_term - numeric_value_expression - - factor: - - - - - - - - sign - - - numeric_primary - - - - - - referenced by: - - interval_term - term - - numeric_primary: - - - - - - - - value_expression_primary - - - numeric_value_function - - - - -
             ::= value_expression_primary
    -
               | numeric_value_function
    -
    - referenced by: - - factor - - numeric_value_function: - - - - - - - - position_expression - - - extract_expression - - - length_expression - - - cardinality_expression - - - absolute_value_expression - - - modulus_expression - - - natural_logarithm - - - exponential_function - - - power_function - - - square_root - - - floor_function - - - ceiling_function - - - width_bucket_function - - - - -
             ::= position_expression
    -
               | extract_expression
    -
               | length_expression
    -
               | cardinality_expression
    -
               | absolute_value_expression
    -
               | modulus_expression
    -
               | natural_logarithm
    -
               | exponential_function
    -
               | power_function
    -
               | square_root
    -
               | floor_function
    -
               | ceiling_function
    -
               | width_bucket_function
    -
    - referenced by: - - numeric_primary - - position_expression: - - - - - - - - string_position_expression - - - blob_position_expression - - - - -
             ::= string_position_expression
    -
               | blob_position_expression
    -
    - referenced by: - - numeric_value_function - - string_position_expression: - - - - - - - - POSITION* - - - ( - - - string_value_expression - - IN - - - string_value_expression - - USING - - - char_length_units - - ) - - - - - -
             ::= 'POSITION*' '(' string_value_expression 'IN' string_value_expression ( 'USING' char_length_units )? ')'
    -
    - referenced by: - - position_expression - - blob_position_expression: - - - - - - - - POSITION* - - - ( - - - blob_value_expression - - IN - - - blob_value_expression - - ) - - - - - -
             ::= 'POSITION*' '(' blob_value_expression 'IN' blob_value_expression ')'
    -
    - referenced by: - - position_expression - - length_expression: - - - - - - - - char_length_expression - - - octet_length_expression - - - - -
             ::= char_length_expression
    -
               | octet_length_expression
    -
    - referenced by: - - numeric_value_function - - char_length_expression: - - - - - - - - CHAR_LENGTH* - - - CHARACTER_LENGTH* - - - ( - - - string_value_expression - - USING - - - char_length_units - - ) - - - - - -
             ::= ( 'CHAR_LENGTH*' | 'CHARACTER_LENGTH*' ) '(' string_value_expression ( 'USING' char_length_units )? ')'
    -
    - referenced by: - - length_expression - - octet_length_expression: - - - - - - - - OCTET_LENGTH* - - - ( - - - string_value_expression - - ) - - - - - -
             ::= 'OCTET_LENGTH*' '(' string_value_expression ')'
    -
    - referenced by: - - length_expression - - extract_expression: - - - - - - - - EXTRACT* - - - ( - - - extract_field - - FROM - - - extract_source - - ) - - - - - -
             ::= 'EXTRACT*' '(' extract_field 'FROM' extract_source ')'
    -
    - referenced by: - - numeric_value_function - - extract_field: - - - - - - - - primary_datetime_field - - - time_zone_field - - - - -
             ::= primary_datetime_field
    -
               | time_zone_field
    -
    - referenced by: - - extract_expression - - time_zone_field: - - - - - - - - TIMEZONE_HOUR - - - TIMEZONE_MINUTE - - - - - -
             ::= 'TIMEZONE_HOUR'
    -
               | 'TIMEZONE_MINUTE'
    -
    - referenced by: - - extract_field - - extract_source: - - - - - - - - datetime_value_expression - - - interval_value_expression - - - - -
             ::= datetime_value_expression
    -
               | interval_value_expression
    -
    - referenced by: - - extract_expression - - cardinality_expression: - - - - - - - - CARDINALITY* - - - ( - - - collection_value_expression - - ) - - - - - -
             ::= 'CARDINALITY*' '(' collection_value_expression ')'
    -
    - referenced by: - - numeric_value_function - - absolute_value_expression: - - - - - - - - ABS* - - - ( - - - numeric_value_expression - - ) - - - - - -
             ::= 'ABS*' '(' numeric_value_expression ')'
    -
    - referenced by: - - numeric_value_function - - modulus_expression: - - - - - - - - MOD* - - - ( - - - numeric_value_expression_dividend - - , - - - numeric_value_expression_divisor - - ) - - - - - - - - referenced by: - - numeric_value_function - - natural_logarithm: - - - - - - - - LN* - - - ( - - - numeric_value_expression - - ) - - - - - -
             ::= 'LN*' '(' numeric_value_expression ')'
    -
    - referenced by: - - numeric_value_function - - exponential_function: - - - - - - - - EXP* - - - ( - - - numeric_value_expression - - ) - - - - - -
             ::= 'EXP*' '(' numeric_value_expression ')'
    -
    - referenced by: - - numeric_value_function - - power_function: - - - - - - - - POWER* - - - ( - - - numeric_value_expression_base - - , - - - numeric_value_expression_exponent - - ) - - - - - -
             ::= 'POWER*' '(' numeric_value_expression_base ',' numeric_value_expression_exponent ')'
    -
    - referenced by: - - numeric_value_function - - numeric_value_expression_base: - - - - - - - - numeric_value_expression - - - - -
             ::= numeric_value_expression
    -
    - referenced by: - - power_function - - numeric_value_expression_exponent: - - - - - - - - numeric_value_expression - - - - -
             ::= numeric_value_expression
    -
    - referenced by: - - power_function - - square_root: - - - - - - - - SQRT* - - - ( - - - numeric_value_expression - - ) - - - - - -
             ::= 'SQRT*' '(' numeric_value_expression ')'
    -
    - referenced by: - - numeric_value_function - - floor_function: - - - - - - - - FLOOR* - - - ( - - - numeric_value_expression - - ) - - - - - -
             ::= 'FLOOR*' '(' numeric_value_expression ')'
    -
    - referenced by: - - numeric_value_function - - ceiling_function: - - - - - - - - CEIL* - - - CEILING* - - - ( - - - numeric_value_expression - - ) - - - - - -
             ::= ( 'CEIL*' | 'CEILING*' ) '(' numeric_value_expression ')'
    -
    - referenced by: - - numeric_value_function - - width_bucket_function: - - - - - - - - WIDTH_BUCKET - - - ( - - - width_bucket_operand - - , - - - width_bucket_bound_1 - - , - - - width_bucket_bound_2 - - , - - - width_bucket_count - - ) - - - - - -
             ::= 'WIDTH_BUCKET' '(' width_bucket_operand ',' width_bucket_bound_1 ',' width_bucket_bound_2 ',' width_bucket_count ')'
    -
    - referenced by: - - numeric_value_function - - width_bucket_operand: - - - - - - - - numeric_value_expression - - - - -
             ::= numeric_value_expression
    -
    - referenced by: - - width_bucket_function - - width_bucket_bound_1: - - - - - - - - numeric_value_expression - - - - -
             ::= numeric_value_expression
    -
    - referenced by: - - width_bucket_function - - width_bucket_bound_2: - - - - - - - - numeric_value_expression - - - - -
             ::= numeric_value_expression
    -
    - referenced by: - - width_bucket_function - - width_bucket_count: - - - - - - - - numeric_value_expression - - - - -
             ::= numeric_value_expression
    -
    - referenced by: - - width_bucket_function - - string_value_expression: - - - - - - - - character_value_expression - - - blob_value_expression - - - - -
             ::= character_value_expression
    -
               | blob_value_expression
    -
    - referenced by: - - char_length_expression - common_value_expression - current_collation_specification - normalized_predicate - octet_length_expression - string_position_expression - - character_value_expression: - - - - - - - - concatenation - - - character_factor - - - - -
             ::= concatenation
    -
               | character_factor
    -
    - referenced by: - - character_overlay_function - character_pattern - character_substring_function - character_transliteration - concatenation - escape_character - fold - normalize_function - regular_expression_substring_function - similar_pattern - string_value_expression - transcoding - trim_character - trim_source - - concatenation: - - - - - - - - character_value_expression - - || - - - character_factor - - - - -
             ::= character_value_expression '||' character_factor
    -
    - referenced by: - - character_value_expression - - character_factor: - - - - - - - - character_primary - - - collate_clause - - - - -
             ::= character_primary collate_clause?
    -
    - referenced by: - - character_value_expression - concatenation - - character_primary: - - - - - - - - value_expression_primary - - - string_value_function - - - - -
             ::= value_expression_primary
    -
               | string_value_function
    -
    - referenced by: - - character_factor - - blob_value_expression: - - - - - - - - blob_concatenation - - - blob_factor - - - - -
             ::= blob_concatenation
    -
               | blob_factor
    -
    - referenced by: - - blob_concatenation - blob_overlay_function - blob_position_expression - blob_substring_function - blob_trim_source - escape_octet - octet_pattern - string_value_expression - trim_octet - - blob_factor: - - - - - - - - blob_primary - - - - -
             ::= blob_primary
    -
    - referenced by: - - blob_concatenation - blob_value_expression - - blob_primary: - - - - - - - - value_expression_primary - - - string_value_function - - - - -
             ::= value_expression_primary
    -
               | string_value_function
    -
    - referenced by: - - blob_factor - - blob_concatenation: - - - - - - - - blob_value_expression - - || - - - blob_factor - - - - -
             ::= blob_value_expression '||' blob_factor
    -
    - referenced by: - - blob_value_expression - - string_value_function: - - - - - - - - character_value_function - - - blob_value_function - - - - -
             ::= character_value_function
    -
               | blob_value_function
    -
    - referenced by: - - blob_primary - character_primary - - character_value_function: - - - - - - - - character_substring_function - - - regular_expression_substring_function - - - fold - - - transcoding - - - character_transliteration - - - trim_function - - - character_overlay_function - - - normalize_function - - - specific_type_method - - - - -
             ::= character_substring_function
    - -
               | fold
    -
               | transcoding
    -
               | character_transliteration
    -
               | trim_function
    -
               | character_overlay_function
    -
               | normalize_function
    -
               | specific_type_method
    -
    - referenced by: - - string_value_function - - character_substring_function: - - - - - - - - SUBSTRING* - - - ( - - - character_value_expression - - FROM - - - start_position - - FOR - - - string_length - - USING - - - char_length_units - - ) - - - - - -
             ::= 'SUBSTRING*' '(' character_value_expression 'FROM' start_position ( 'FOR' string_length )? ( 'USING' char_length_units )? ')'
    -
    - referenced by: - - character_value_function - - regular_expression_substring_function: - - - - - - - - SUBSTRING* - - - ( - - - character_value_expression - - SIMILAR - - - character_value_expression - - ESCAPE - - - escape_character - - ) - - - - - -
             ::= 'SUBSTRING*' '(' character_value_expression 'SIMILAR' character_value_expression 'ESCAPE' escape_character ')'
    -
    - referenced by: - - character_value_function - - fold: - - - - - - - - UPPER - - - LOWER* - - - ( - - - character_value_expression - - ) - - - - -
    fold     ::= ( 'UPPER' | 'LOWER*' ) '(' character_value_expression ')'
    -
    - referenced by: - - character_value_function - - transcoding: - - - - - - - - CONVERT* - - - ( - - - character_value_expression - - USING - - - transcoding_name - - ) - - - - - -
             ::= 'CONVERT*' '(' character_value_expression 'USING' transcoding_name ')'
    -
    - referenced by: - - character_value_function - - character_transliteration: - - - - - - - - TRANSLATE* - - - ( - - - character_value_expression - - USING - - - transliteration_name - - ) - - - - - -
             ::= 'TRANSLATE*' '(' character_value_expression 'USING' transliteration_name ')'
    -
    - referenced by: - - character_value_function - - trim_function: - - - - - - - - TRIM* - - - ( - - - trim_operands - - ) - - - - - -
             ::= 'TRIM*' '(' trim_operands ')'
    -
    - referenced by: - - character_value_function - - trim_operands: - - - - - - - - trim_specification - - - trim_character - - FROM - - - trim_source - - - - -
             ::= ( trim_specification? trim_character? 'FROM' )? trim_source
    -
    - referenced by: - - trim_function - - trim_source: - - - - - - - - character_value_expression - - - - -
             ::= character_value_expression
    -
    - referenced by: - - trim_operands - - trim_specification: - - - - - - - - LEADING - - - TRAILING - - - BOTH - - - - - -
             ::= 'LEADING'
    -
               | 'TRAILING'
    -
               | 'BOTH'
    -
    - referenced by: - - blob_trim_operands - trim_operands - - trim_character: - - - - - - - - character_value_expression - - - - -
             ::= character_value_expression
    -
    - referenced by: - - trim_operands - - character_overlay_function: - - - - - - - - OVERLAY* - - - ( - - - character_value_expression - - PLACING* - - - character_value_expression - - FROM - - - start_position - - FOR - - - string_length - - USING - - - char_length_units - - ) - - - - - -
             ::= 'OVERLAY*' '(' character_value_expression 'PLACING*' character_value_expression 'FROM' start_position ( 'FOR' string_length )? ( 'USING' char_length_units )? ')'
    -
    - referenced by: - - character_value_function - - normalize_function: - - - - - - - - NORMALIZE* - - - ( - - - character_value_expression - - ) - - - - - -
             ::= 'NORMALIZE*' '(' character_value_expression ')'
    -
    - referenced by: - - character_value_function - - specific_type_method: - - - - - - - - user_defined_type_value_expression - - . - - - SPECIFICTYPE - - - - - -
             ::= user_defined_type_value_expression '.' 'SPECIFICTYPE'
    -
    - referenced by: - - character_value_function - - blob_value_function: - - - - - - - - blob_substring_function - - - blob_trim_function - - - blob_overlay_function - - - - -
             ::= blob_substring_function
    -
               | blob_trim_function
    -
               | blob_overlay_function
    -
    - referenced by: - - string_value_function - - blob_substring_function: - - - - - - - - SUBSTRING* - - - ( - - - blob_value_expression - - FROM - - - start_position - - FOR - - - string_length - - ) - - - - - -
             ::= 'SUBSTRING*' '(' blob_value_expression 'FROM' start_position ( 'FOR' string_length )? ')'
    -
    - referenced by: - - blob_value_function - - blob_trim_function: - - - - - - - - TRIM* - - - ( - - - blob_trim_operands - - ) - - - - - -
             ::= 'TRIM*' '(' blob_trim_operands ')'
    -
    - referenced by: - - blob_value_function - - blob_trim_operands: - - - - - - - - trim_specification - - - trim_octet - - FROM - - - blob_trim_source - - - - -
             ::= ( trim_specification? trim_octet? 'FROM' )? blob_trim_source
    -
    - referenced by: - - blob_trim_function - - blob_trim_source: - - - - - - - - blob_value_expression - - - - -
             ::= blob_value_expression
    -
    - referenced by: - - blob_trim_operands - - trim_octet: - - - - - - - - blob_value_expression - - - - -
             ::= blob_value_expression
    -
    - referenced by: - - blob_trim_operands - - blob_overlay_function: - - - - - - - - OVERLAY* - - - ( - - - blob_value_expression - - PLACING* - - - blob_value_expression - - FROM - - - start_position - - FOR - - - string_length - - ) - - - - - -
             ::= 'OVERLAY*' '(' blob_value_expression 'PLACING*' blob_value_expression 'FROM' start_position ( 'FOR' string_length )? ')'
    -
    - referenced by: - - blob_value_function - - start_position: - - - - - - - - numeric_value_expression - - - - -
             ::= numeric_value_expression
    -
    - referenced by: - - blob_overlay_function - blob_substring_function - character_overlay_function - character_substring_function - - string_length: - - - - - - - - numeric_value_expression - - - - -
             ::= numeric_value_expression
    -
    - referenced by: - - blob_overlay_function - blob_substring_function - character_overlay_function - character_substring_function - - datetime_value_expression: - - - - - - - - interval_value_expression - - + - - - datetime_term - - + - - - - - - - interval_term - - - - -
             ::= ( interval_value_expression '+' )? datetime_term ( ( '+' | '-' ) interval_term )*
    -
    - referenced by: - - common_value_expression - extract_source - interval_value_expression - - datetime_term: - - - - - - - - datetime_factor - - - - -
             ::= datetime_factor
    -
    - referenced by: - - datetime_value_expression - interval_value_expression - - datetime_factor: - - - - - - - - datetime_primary - - - time_zone - - - - -
             ::= datetime_primary time_zone?
    -
    - referenced by: - - datetime_term - - datetime_primary: - - - - - - - - value_expression_primary - - - datetime_value_function - - - - -
             ::= value_expression_primary
    -
               | datetime_value_function
    -
    - referenced by: - - datetime_factor - - time_zone: - - - - - - - - AT - - - time_zone_specifier - - - - -
             ::= 'AT' time_zone_specifier
    -
    - referenced by: - - datetime_factor - - time_zone_specifier: - - - - - - - - LOCAL - - - TIME - - - ZONE* - - - interval_primary - - - - -
             ::= 'LOCAL'
    -
               | 'TIME' 'ZONE*' interval_primary
    -
    - referenced by: - - time_zone - - datetime_value_function: - - - - - - - - CURRENT_DATE - - - current_time_value_function - - - current_timestamp_value_function - - - current_local_time_value_function - - - current_local_timestamp_value_function - - - - -
             ::= 'CURRENT_DATE'
    -
               | current_time_value_function
    -
               | current_timestamp_value_function
    -
               | current_local_time_value_function
    -
    -
    - referenced by: - - datetime_primary - default_option - - current_time_value_function: - - - - - - - - CURRENT_TIME - - - ( - - - time_precision - - ) - - - - - -
             ::= 'CURRENT_TIME' ( '(' time_precision ')' )?
    -
    - referenced by: - - datetime_value_function - - current_local_time_value_function: - - - - - - - - LOCALTIME - - - ( - - - time_precision - - ) - - - - - -
             ::= 'LOCALTIME' ( '(' time_precision ')' )?
    -
    - referenced by: - - datetime_value_function - - current_timestamp_value_function: - - - - - - - - CURRENT_TIMESTAMP - - - ( - - - timestamp_precision - - ) - - - - - -
             ::= 'CURRENT_TIMESTAMP' ( '(' timestamp_precision ')' )?
    -
    - referenced by: - - datetime_value_function - - current_local_timestamp_value_function: - - - - - - - - LOCALTIMESTAMP - - - ( - - - timestamp_precision - - ) - - - - - -
             ::= 'LOCALTIMESTAMP' ( '(' timestamp_precision ')' )?
    -
    - referenced by: - - datetime_value_function - - interval_value_expression: - - - - - - - - interval_term - - - interval_value_expression_1 - - + - - - - - - - interval_term_1 - - ( - - - datetime_value_expression - - - - - - datetime_term - - ) - - - interval_qualifier - - - - -
             ::= interval_term
    -
               | interval_value_expression_1 ( '+' | '-' ) interval_term_1
    -
               | '(' datetime_value_expression '-' datetime_term ')' interval_qualifier
    -
    - referenced by: - - common_value_expression - datetime_value_expression - extract_source - interval_absolute_value_function - interval_value_expression_1 - set_time_zone_value - - interval_term: - - - - - - - - term - - * - - - interval_factor - - - interval_term_2 - - * - - - / - - - factor - - - - -
             ::= ( term '*' )? interval_factor
    -
               | interval_term_2 ( '*' | '/' ) factor
    -
    - referenced by: - - datetime_value_expression - interval_term_1 - interval_term_2 - interval_value_expression - - interval_factor: - - - - - - - - sign - - - interval_primary - - - - -
             ::= sign? interval_primary
    -
    - referenced by: - - interval_term - - interval_primary: - - - - - - - - value_expression_primary - - - interval_qualifier - - - interval_value_function - - - - - -
               | interval_value_function
    -
    - referenced by: - - interval_factor - time_zone_specifier - - interval_value_expression_1: - - - - - - - - interval_value_expression - - - - -
             ::= interval_value_expression
    -
    - referenced by: - - interval_value_expression - - interval_term_1: - - - - - - - - interval_term - - - - -
             ::= interval_term
    -
    - referenced by: - - interval_value_expression - - interval_term_2: - - - - - - - - interval_term - - - - -
             ::= interval_term
    -
    - referenced by: - - interval_term - - interval_value_function: - - - - - - - - interval_absolute_value_function - - - - -
             ::= interval_absolute_value_function
    -
    - referenced by: - - interval_primary - - interval_absolute_value_function: - - - - - - - - ABS* - - - ( - - - interval_value_expression - - ) - - - - - -
             ::= 'ABS*' '(' interval_value_expression ')'
    -
    - referenced by: - - interval_value_function - - boolean_value_expression: - - - - - - - - boolean_term - - OR - - - - - -
             ::= boolean_term ( 'OR' boolean_term )*
    -
    - referenced by: - - contextually_typed_row_value_constructor - parenthesized_boolean_value_expression - row_value_constructor - search_condition - value_expression - - boolean_term: - - - - - - - - boolean_factor - - AND - - - - - -
             ::= boolean_factor ( 'AND' boolean_factor )*
    -
    - referenced by: - - boolean_value_expression - - boolean_factor: - - - - - - - - NOT - - - boolean_test - - - - -
             ::= 'NOT'? boolean_test
    -
    - referenced by: - - boolean_term - - boolean_test: - - - - - - - - boolean_primary - - IS - - - NOT - - - truth_value - - - - -
             ::= boolean_primary ( 'IS' 'NOT'? truth_value )?
    -
    - referenced by: - - boolean_factor - - truth_value: - - - - - - - - TRUE - - - FALSE - - - UNKNOWN - - - - - -
             ::= 'TRUE'
    -
               | 'FALSE'
    -
               | 'UNKNOWN'
    -
    - referenced by: - - boolean_test - - boolean_primary: - - - - - - - - predicate - - - boolean_predicand - - - - -
             ::= predicate
    -
               | boolean_predicand
    -
    - referenced by: - - boolean_test - - boolean_predicand: - - - - - - - - parenthesized_boolean_value_expression - - - nonparenthesized_value_expression_primary - - - - - - - - referenced by: - - boolean_primary - row_value_constructor_predicand - - parenthesized_boolean_value_expression: - - - - - - - - ( - - - boolean_value_expression - - ) - - - - - -
             ::= '(' boolean_value_expression ')'
    -
    - referenced by: - - boolean_predicand - - array_value_expression: - - - - - - - - array_concatenation - - - array_factor - - - - -
             ::= array_concatenation
    -
               | array_factor
    -
    - referenced by: - - array_element_reference - array_value_expression_1 - collection_value_expression - - array_concatenation: - - - - - - - - array_value_expression_1 - - || - - - array_factor - - - - -
             ::= array_value_expression_1 '||' array_factor
    -
    - referenced by: - - array_value_expression - - array_value_expression_1: - - - - - - - - array_value_expression - - - - -
             ::= array_value_expression
    -
    - referenced by: - - array_concatenation - - array_factor: - - - - - - - - value_expression_primary - - - - -
             ::= value_expression_primary
    -
    - referenced by: - - array_concatenation - array_value_expression - - array_value_constructor: - - - - - - - - array_value_constructor_by_enumeration - - - array_value_constructor_by_query - - - - - -
               | array_value_constructor_by_query
    -
    - referenced by: - - collection_value_constructor - - array_value_constructor_by_enumeration: - - - - - - - - ARRAY - - - left_bracket_or_trigraph - - - array_element_list - - - right_bracket_or_trigraph - - - - - - - referenced by: - - array_value_constructor - - array_element_list: - - - - - - - - array_element - - , - - - - - -
             ::= array_element ( ',' array_element )*
    -
    - referenced by: - - array_value_constructor_by_enumeration - - array_element: - - - - - - - - value_expression - - - - -
             ::= value_expression
    -
    - referenced by: - - array_element_list - - array_value_constructor_by_query: - - - - - - - - ARRAY - - - ( - - - query_expression - - - order_by_clause - - ) - - - - - -
             ::= 'ARRAY' '(' query_expression order_by_clause? ')'
    -
    - referenced by: - - array_value_constructor - - multiset_value_expression: - - - - - - - - multiset_term - - ALL - - - DISTINCT - - - UNION - - - EXCEPT - - - MULTISET - - - - - -
             ::= multiset_term ( 'MULTISET' ( 'UNION' | 'EXCEPT' ) ( 'ALL' | 'DISTINCT' )? multiset_term )*
    -
    - referenced by: - - collection_value_expression - member_predicate_part_2 - multiset_element_reference - multiset_set_function - submultiset_predicate_part_2 - - multiset_term: - - - - - - - - multiset_primary - - ALL - - - DISTINCT - - - INTERSECT - - - MULTISET - - - - - -
             ::= multiset_primary ( 'MULTISET' 'INTERSECT' ( 'ALL' | 'DISTINCT' )? multiset_primary )*
    -
    - referenced by: - - multiset_value_expression - - multiset_primary: - - - - - - - - multiset_value_function - - - value_expression_primary - - - - -
             ::= multiset_value_function
    -
               | value_expression_primary
    -
    - referenced by: - - multiset_term - - multiset_value_function: - - - - - - - - multiset_set_function - - - - -
             ::= multiset_set_function
    -
    - referenced by: - - multiset_primary - - multiset_set_function: - - - - - - - - SET - - - ( - - - multiset_value_expression - - ) - - - - - -
             ::= 'SET' '(' multiset_value_expression ')'
    -
    - referenced by: - - multiset_value_function - - multiset_value_constructor: - - - - - - - - multiset_value_constructor_by_enumeration - - - multiset_value_constructor_by_query - - - table_value_constructor_by_query - - - - - -
               | multiset_value_constructor_by_query
    -
               | table_value_constructor_by_query
    -
    - referenced by: - - collection_value_constructor - - multiset_value_constructor_by_enumeration: - - - - - - - - MULTISET - - - left_bracket_or_trigraph - - - multiset_element_list - - - right_bracket_or_trigraph - - - - - - - referenced by: - - multiset_value_constructor - - multiset_element_list: - - - - - - - - multiset_element - - , - - - - - -
             ::= multiset_element ( ',' multiset_element )*
    -
    - referenced by: - - multiset_value_constructor_by_enumeration - - multiset_element: - - - - - - - - value_expression - - - - -
             ::= value_expression
    -
    - referenced by: - - multiset_element_list - - multiset_value_constructor_by_query: - - - - - - - - MULTISET - - - ( - - - query_expression - - ) - - - - - -
             ::= 'MULTISET' '(' query_expression ')'
    -
    - referenced by: - - multiset_value_constructor - - table_value_constructor_by_query: - - - - - - - - TABLE - - - ( - - - query_expression - - ) - - - - - -
             ::= 'TABLE' '(' query_expression ')'
    -
    - referenced by: - - multiset_value_constructor - - row_value_constructor: - - - - - - - - common_value_expression - - - boolean_value_expression - - - explicit_row_value_constructor - - - - -
             ::= common_value_expression
    -
               | boolean_value_expression
    -
               | explicit_row_value_constructor
    -
    - referenced by: - - table_row_value_expression - - explicit_row_value_constructor: - - - - - - - - ( - - - row_value_constructor_element - - , - - - ROW - - - ( - - - row_value_constructor_element_list - - ) - - - row_subquery - - - - -
             ::= ( '(' row_value_constructor_element ',' | 'ROW' '(' ) row_value_constructor_element_list ')'
    -
               | row_subquery
    -
    - referenced by: - - row_value_constructor - row_value_constructor_predicand - row_value_expression - - row_value_constructor_element_list: - - - - - - - - row_value_constructor_element - - , - - - - - - - - referenced by: - - explicit_row_value_constructor - - row_value_constructor_element: - - - - - - - - value_expression - - - - -
             ::= value_expression
    -
    - referenced by: - - explicit_row_value_constructor - row_value_constructor_element_list - - contextually_typed_row_value_constructor: - - - - - - - - common_value_expression - - - boolean_value_expression - - - contextually_typed_value_specification - - ( - - - contextually_typed_row_value_constructor_element - - , - - - ROW - - - ( - - - contextually_typed_row_value_constructor_element_list - - ) - - - - - -
             ::= common_value_expression
    -
               | boolean_value_expression
    - -
    -
    - referenced by: - - contextually_typed_row_value_expression - - contextually_typed_row_value_constructor_element_list: - - - - - - - - contextually_typed_row_value_constructor_element - - , - - - - - - - - referenced by: - - contextually_typed_row_value_constructor - - contextually_typed_row_value_constructor_element: - - - - - - - - value_expression - - - contextually_typed_value_specification - - - - -
             ::= value_expression
    -
    -
    - referenced by: - - contextually_typed_row_value_constructor - contextually_typed_row_value_constructor_element_list - - row_value_constructor_predicand: - - - - - - - - common_value_expression - - - boolean_predicand - - - explicit_row_value_constructor - - - - -
             ::= common_value_expression
    -
               | boolean_predicand
    -
               | explicit_row_value_constructor
    -
    - referenced by: - - row_value_predicand - - row_value_expression: - - - - - - - - row_value_special_case - - - explicit_row_value_constructor - - - - -
             ::= row_value_special_case
    -
               | explicit_row_value_constructor
    -
    - referenced by: - - in_value_list - value_expression - - table_row_value_expression: - - - - - - - - row_value_special_case - - - row_value_constructor - - - - -
             ::= row_value_special_case
    -
               | row_value_constructor
    -
    - referenced by: - - row_value_expression_list - - contextually_typed_row_value_expression: - - - - - - - - row_value_special_case - - - contextually_typed_row_value_constructor - - - - -
             ::= row_value_special_case
    -
    -
    - referenced by: - - assigned_row - contextually_typed_row_value_expression_list - - row_value_predicand: - - - - - - - - row_value_special_case - - - row_value_constructor_predicand - - - - -
             ::= row_value_special_case
    -
               | row_value_constructor_predicand
    -
    - referenced by: - - between_predicate - between_predicate_part_2 - case_operand - character_like_predicate - comparison_predicate - comparison_predicate_part_2 - in_predicate - match_predicate - member_predicate - null_predicate - octet_like_predicate - quantified_comparison_predicate - row_value_predicand_1 - row_value_predicand_2 - row_value_predicand_3 - row_value_predicand_4 - set_predicate - similar_predicate - submultiset_predicate - type_predicate - when_operand - - row_value_special_case: - - - - - - - - nonparenthesized_value_expression_primary - - - - - - - referenced by: - - contextually_typed_row_value_expression - row_value_expression - row_value_predicand - table_row_value_expression - - table_value_constructor: - - - - - - - - VALUES - - - row_value_expression_list - - - - -
             ::= 'VALUES' row_value_expression_list
    -
    - referenced by: - - simple_table - - row_value_expression_list: - - - - - - - - table_row_value_expression - - , - - - - - - - - referenced by: - - table_value_constructor - - contextually_typed_table_value_constructor: - - - - - - - - VALUES - - - contextually_typed_row_value_expression_list - - - - -
             ::= 'VALUES' contextually_typed_row_value_expression_list
    -
    - referenced by: - - from_constructor - - contextually_typed_row_value_expression_list: - - - - - - - - contextually_typed_row_value_expression - - , - - - - - - - - referenced by: - - contextually_typed_table_value_constructor - - table_expression: - - - - - - - - from_clause - - - where_clause - - - group_by_clause - - - having_clause - - - window_clause - - - - - - - referenced by: - - query_specification - select_statement__single_row - - from_clause: - - - - - - - - FROM - - - table_reference_list - - - - -
             ::= 'FROM' table_reference_list
    -
    - referenced by: - - table_expression - - table_reference_list: - - - - - - - - table_reference - - , - - - - - -
             ::= table_reference ( ',' table_reference )*
    -
    - referenced by: - - from_clause - - table_reference: - - - - - - - - table_primary_or_joined_table - - - sample_clause - - - - - - - referenced by: - - cross_join - merge_statement - natural_join - qualified_join - table_reference_list - union_join - - table_primary_or_joined_table: - - - - - - - - table_primary - - - joined_table - - - - -
             ::= table_primary
    -
               | joined_table
    -
    - referenced by: - - table_reference - - sample_clause: - - - - - - - - TABLESAMPLE* - - - sample_method - - ( - - - sample_percentage - - ) - - - repeatable_clause - - - - -
             ::= 'TABLESAMPLE*' sample_method '(' sample_percentage ')' repeatable_clause?
    -
    - referenced by: - - table_reference - - sample_method: - - - - - - - - BERNOULLI* - - - SYSTEM - - - - - -
             ::= 'BERNOULLI*'
    -
               | 'SYSTEM'
    -
    - referenced by: - - sample_clause - - repeatable_clause: - - - - - - - - REPEATABLE* - - - ( - - - repeat_argument - - ) - - - - - -
             ::= 'REPEATABLE*' '(' repeat_argument ')'
    -
    - referenced by: - - sample_clause - - sample_percentage: - - - - - - - - numeric_value_expression - - - - -
             ::= numeric_value_expression
    -
    - referenced by: - - sample_clause - - repeat_argument: - - - - - - - - numeric_value_expression - - - - -
             ::= numeric_value_expression
    -
    - referenced by: - - repeatable_clause - - table_primary: - - - - - - - - table_or_query_name - - - only_spec - - AS - - - correlation_name - - ( - - - derived_column_list - - ) - - - derived_table - - - lateral_derived_table - - - collection_derived_table - - - table_function_derived_table - - AS - - - correlation_name - - ( - - - derived_column_list - - ) - - - ( - - - joined_table - - ) - - - - - -
             ::= ( table_or_query_name | only_spec ) ( 'AS'? correlation_name ( '(' derived_column_list ')' )? )?
    - -
               | '(' joined_table ')'
    -
    - referenced by: - - cross_join - natural_join - table_primary_or_joined_table - union_join - - only_spec: - - - - - - - - ONLY - - - ( - - - table_or_query_name - - ) - - - - - -
             ::= 'ONLY' '(' table_or_query_name ')'
    -
    - referenced by: - - table_primary - - lateral_derived_table: - - - - - - - - LATERAL - - - table_subquery - - - - -
             ::= 'LATERAL' table_subquery
    -
    - referenced by: - - table_primary - - collection_derived_table: - - - - - - - - UNNEST - - - ( - - - collection_value_expression - - ) - - - WITH - - - ORDINALITY* - - - - - -
             ::= 'UNNEST' '(' collection_value_expression ')' ( 'WITH' 'ORDINALITY*' )?
    -
    - referenced by: - - table_primary - - table_function_derived_table: - - - - - - - - TABLE - - - ( - - - collection_value_expression - - ) - - - - - -
             ::= 'TABLE' '(' collection_value_expression ')'
    -
    - referenced by: - - table_primary - - derived_table: - - - - - - - - table_subquery - - - - -
             ::= table_subquery
    -
    - referenced by: - - table_primary - - table_or_query_name: - - - - - - - - table_name - - - query_name - - - - -
             ::= table_name
    -
               | query_name
    -
    - referenced by: - - explicit_table - only_spec - table_primary - - derived_column_list: - - - - - - - - column_name_list - - - - -
             ::= column_name_list
    -
    - referenced by: - - table_primary - - column_name_list: - - - - - - - - column_name - - , - - - - - -
             ::= column_name ( ',' column_name )*
    -
    - referenced by: - - all_fields_column_name_list - as_subquery_clause - corresponding_column_list - derived_column_list - insert_column_list - join_column_list - privilege_column_list - reference_column_list - trigger_column_list - unique_column_list - updatability_clause - view_column_list - with_column_list - - joined_table: - - - - - - - - cross_join - - - qualified_join - - - natural_join - - - union_join - - - - -
             ::= cross_join
    -
               | qualified_join
    -
               | natural_join
    -
               | union_join
    -
    - referenced by: - - query_expression_body - query_primary - query_term - table_primary - table_primary_or_joined_table - - cross_join: - - - - - - - - table_reference - - CROSS - - - JOIN - - - table_primary - - - - -
             ::= table_reference 'CROSS' 'JOIN' table_primary
    -
    - referenced by: - - joined_table - - qualified_join: - - - - - - - - table_reference - - - join_type - - JOIN - - - table_reference - - - join_specification - - - - - - - referenced by: - - joined_table - - natural_join: - - - - - - - - table_reference - - NATURAL - - - join_type - - JOIN - - - table_primary - - - - -
             ::= table_reference 'NATURAL' join_type? 'JOIN' table_primary
    -
    - referenced by: - - joined_table - - union_join: - - - - - - - - table_reference - - UNION - - - JOIN - - - table_primary - - - - -
             ::= table_reference 'UNION' 'JOIN' table_primary
    -
    - referenced by: - - joined_table - - join_specification: - - - - - - - - join_condition - - - named_columns_join - - - - -
             ::= join_condition
    -
               | named_columns_join
    -
    - referenced by: - - qualified_join - - join_condition: - - - - - - - - ON - - - search_condition - - - - -
             ::= 'ON' search_condition
    -
    - referenced by: - - join_specification - - named_columns_join: - - - - - - - - USING - - - ( - - - join_column_list - - ) - - - - - -
             ::= 'USING' '(' join_column_list ')'
    -
    - referenced by: - - join_specification - - join_type: - - - - - - - - INNER - - - outer_join_type - - OUTER - - - - - -
             ::= 'INNER'
    -
               | outer_join_type 'OUTER'?
    -
    - referenced by: - - natural_join - qualified_join - - outer_join_type: - - - - - - - - LEFT - - - RIGHT - - - FULL - - - - - -
             ::= 'LEFT'
    -
               | 'RIGHT'
    -
               | 'FULL'
    -
    - referenced by: - - join_type - - join_column_list: - - - - - - - - column_name_list - - - - -
             ::= column_name_list
    -
    - referenced by: - - named_columns_join - - where_clause: - - - - - - - - WHERE - - - search_condition - - - - -
             ::= 'WHERE' search_condition
    -
    - referenced by: - - table_expression - - group_by_clause: - - - - - - - - GROUP - - - BY - - - set_quantifier - - - grouping_element_list - - - - -
             ::= 'GROUP' 'BY' set_quantifier? grouping_element_list
    -
    - referenced by: - - table_expression - - grouping_element_list: - - - - - - - - grouping_element - - , - - - - - -
             ::= grouping_element ( ',' grouping_element )*
    -
    - referenced by: - - group_by_clause - - grouping_element: - - - - - - - - ordinary_grouping_set - - - rollup_list - - - cube_list - - - grouping_sets_specification - - - empty_grouping_set - - - - -
             ::= ordinary_grouping_set
    -
               | rollup_list
    -
               | cube_list
    -
               | grouping_sets_specification
    -
               | empty_grouping_set
    -
    - referenced by: - - grouping_element_list - - ordinary_grouping_set: - - - - - - - - grouping_column_reference - - ( - - - grouping_column_reference_list - - ) - - - - - -
             ::= grouping_column_reference
    -
               | '(' grouping_column_reference_list ')'
    -
    - referenced by: - - grouping_element - grouping_set - ordinary_grouping_set_list - - grouping_column_reference: - - - - - - - - column_reference - - - collate_clause - - - - -
             ::= column_reference collate_clause?
    -
    - referenced by: - - grouping_column_reference_list - ordinary_grouping_set - - grouping_column_reference_list: - - - - - - - - grouping_column_reference - - , - - - - - - - - referenced by: - - ordinary_grouping_set - - rollup_list: - - - - - - - - ROLLUP - - - ( - - - ordinary_grouping_set_list - - ) - - - - - -
             ::= 'ROLLUP' '(' ordinary_grouping_set_list ')'
    -
    - referenced by: - - grouping_element - grouping_set - - ordinary_grouping_set_list: - - - - - - - - ordinary_grouping_set - - , - - - - - -
             ::= ordinary_grouping_set ( ',' ordinary_grouping_set )*
    -
    - referenced by: - - cube_list - rollup_list - - cube_list: - - - - - - - - CUBE - - - ( - - - ordinary_grouping_set_list - - ) - - - - - -
             ::= 'CUBE' '(' ordinary_grouping_set_list ')'
    -
    - referenced by: - - grouping_element - grouping_set - - grouping_sets_specification: - - - - - - - - GROUPING - - - SETS* - - - ( - - - grouping_set_list - - ) - - - - - -
             ::= 'GROUPING' 'SETS*' '(' grouping_set_list ')'
    -
    - referenced by: - - grouping_element - grouping_set - - grouping_set_list: - - - - - - - - grouping_set - - , - - - - - -
             ::= grouping_set ( ',' grouping_set )*
    -
    - referenced by: - - grouping_sets_specification - - grouping_set: - - - - - - - - ordinary_grouping_set - - - rollup_list - - - cube_list - - - grouping_sets_specification - - - empty_grouping_set - - - - -
             ::= ordinary_grouping_set
    -
               | rollup_list
    -
               | cube_list
    -
               | grouping_sets_specification
    -
               | empty_grouping_set
    -
    - referenced by: - - grouping_set_list - - empty_grouping_set: - - - - - - - - ( - - - ) - - - - - -
             ::= '(' ')'
    -
    - referenced by: - - grouping_element - grouping_set - - having_clause: - - - - - - - - HAVING - - - search_condition - - - - -
             ::= 'HAVING' search_condition
    -
    - referenced by: - - table_expression - - window_clause: - - - - - - - - WINDOW - - - window_definition_list - - - - -
             ::= 'WINDOW' window_definition_list
    -
    - referenced by: - - table_expression - - window_definition_list: - - - - - - - - window_definition - - , - - - - - -
             ::= window_definition ( ',' window_definition )*
    -
    - referenced by: - - window_clause - - window_definition: - - - - - - - - new_window_name - - AS - - - window_specification - - - - -
             ::= new_window_name 'AS' window_specification
    -
    - referenced by: - - window_definition_list - - new_window_name: - - - - - - - - window_name - - - - -
             ::= window_name
    -
    - referenced by: - - window_definition - - window_specification: - - - - - - - - ( - - - window_specification_details - - ) - - - - - -
             ::= '(' window_specification_details ')'
    -
    - referenced by: - - in_line_window_specification - window_definition - - window_specification_details: - - - - - - - - existing_window_name - - - window_partition_clause - - - window_order_clause - - - window_frame_clause - - - - - - - referenced by: - - window_specification - - existing_window_name: - - - - - - - - window_name - - - - -
             ::= window_name
    -
    - referenced by: - - window_specification_details - - window_partition_clause: - - - - - - - - PARTITION - - - BY - - - window_partition_column_reference_list - - - - -
             ::= 'PARTITION' 'BY' window_partition_column_reference_list
    -
    - referenced by: - - window_specification_details - - window_partition_column_reference_list: - - - - - - - - window_partition_column_reference - - , - - - - - - - - referenced by: - - window_partition_clause - - window_partition_column_reference: - - - - - - - - column_reference - - - collate_clause - - - - -
             ::= column_reference collate_clause?
    -
    - referenced by: - - window_partition_column_reference_list - - window_order_clause: - - - - - - - - ORDER - - - BY - - - sort_specification_list - - - - -
             ::= 'ORDER' 'BY' sort_specification_list
    -
    - referenced by: - - window_specification_details - - window_frame_clause: - - - - - - - - window_frame_units - - - window_frame_extent - - - window_frame_exclusion - - - - - - - referenced by: - - window_specification_details - - window_frame_units: - - - - - - - - ROWS - - - RANGE - - - - - -
             ::= 'ROWS'
    -
               | 'RANGE'
    -
    - referenced by: - - window_frame_clause - - window_frame_extent: - - - - - - - - window_frame_start - - - window_frame_between - - - - -
             ::= window_frame_start
    -
               | window_frame_between
    -
    - referenced by: - - window_frame_clause - - window_frame_start: - - - - - - - - UNBOUNDED* - - - PRECEDING* - - - window_frame_preceding - - CURRENT - - - ROW - - - - - -
             ::= 'UNBOUNDED*' 'PRECEDING*'
    -
               | window_frame_preceding
    -
               | 'CURRENT' 'ROW'
    -
    - referenced by: - - window_frame_bound - window_frame_extent - - window_frame_preceding: - - - - - - - - unsigned_value_specification - - PRECEDING* - - - - - -
             ::= unsigned_value_specification 'PRECEDING*'
    -
    - referenced by: - - window_frame_start - - window_frame_between: - - - - - - - - BETWEEN - - - window_frame_bound_1 - - AND - - - window_frame_bound_2 - - - - -
             ::= 'BETWEEN' window_frame_bound_1 'AND' window_frame_bound_2
    -
    - referenced by: - - window_frame_extent - - window_frame_bound_1: - - - - - - - - window_frame_bound - - - - -
             ::= window_frame_bound
    -
    - referenced by: - - window_frame_between - - window_frame_bound_2: - - - - - - - - window_frame_bound - - - - -
             ::= window_frame_bound
    -
    - referenced by: - - window_frame_between - - window_frame_bound: - - - - - - - - window_frame_start - - UNBOUNDED* - - - FOLLOWING* - - - window_frame_following - - - - -
             ::= window_frame_start
    -
               | 'UNBOUNDED*' 'FOLLOWING*'
    -
               | window_frame_following
    -
    - referenced by: - - window_frame_bound_1 - window_frame_bound_2 - - window_frame_following: - - - - - - - - unsigned_value_specification - - FOLLOWING* - - - - - -
             ::= unsigned_value_specification 'FOLLOWING*'
    -
    - referenced by: - - window_frame_bound - - window_frame_exclusion: - - - - - - - - EXCLUDE* - - - CURRENT - - - ROW - - - GROUP - - - TIES* - - - NO - - - OTHERS* - - - - - -
             ::= 'EXCLUDE*' ( 'CURRENT' 'ROW' | 'GROUP' | 'TIES*' | 'NO' 'OTHERS*' )
    -
    - referenced by: - - window_frame_clause - - query_specification: - - - - - - - - SELECT - - - set_quantifier - - - select_list - - - table_expression - - - - -
             ::= 'SELECT' set_quantifier? select_list table_expression
    -
    - referenced by: - - dynamic_single_row_select_statement - simple_table - - select_list: - - - - - - - - * - - - select_sublist - - , - - - - - -
             ::= '*'
    -
               | select_sublist ( ',' select_sublist )*
    -
    - referenced by: - - query_specification - select_statement__single_row - - select_sublist: - - - - - - - - derived_column - - - qualified_asterisk - - - - -
             ::= derived_column
    -
               | qualified_asterisk
    -
    - referenced by: - - select_list - - qualified_asterisk: - - - - - - - - asterisked_identifier_chain - - . - - - * - - - all_fields_reference - - - - -
             ::= asterisked_identifier_chain '.' '*'
    -
               | all_fields_reference
    -
    - referenced by: - - select_sublist - - asterisked_identifier_chain: - - - - - - - - asterisked_identifier - - . - - - - - -
             ::= asterisked_identifier ( '.' asterisked_identifier )*
    -
    - referenced by: - - qualified_asterisk - - asterisked_identifier: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - asterisked_identifier_chain - - derived_column: - - - - - - - - value_expression - - - as_clause - - - - -
             ::= value_expression as_clause?
    -
    - referenced by: - - select_sublist - - as_clause: - - - - - - - - AS - - - column_name - - - - -
             ::= 'AS'? column_name
    -
    - referenced by: - - derived_column - - all_fields_reference: - - - - - - - - value_expression_primary - - . - - - * - - - AS - - - ( - - - all_fields_column_name_list - - ) - - - - - -
             ::= value_expression_primary '.' '*' ( 'AS' '(' all_fields_column_name_list ')' )?
    -
    - referenced by: - - qualified_asterisk - - all_fields_column_name_list: - - - - - - - - column_name_list - - - - -
             ::= column_name_list
    -
    - referenced by: - - all_fields_reference - - query_expression: - - - - - - - - with_clause - - - query_expression_body - - - - -
             ::= with_clause? query_expression_body
    -
    - referenced by: - - array_value_constructor_by_query - cursor_specification - from_subquery - multiset_value_constructor_by_query - subquery - table_value_constructor_by_query - view_definition - with_list_element - - with_clause: - - - - - - - - WITH - - - RECURSIVE - - - with_list - - - - -
             ::= 'WITH' 'RECURSIVE'? with_list
    -
    - referenced by: - - query_expression - - with_list: - - - - - - - - with_list_element - - , - - - - - -
             ::= with_list_element ( ',' with_list_element )*
    -
    - referenced by: - - with_clause - - with_list_element: - - - - - - - - query_name - - ( - - - with_column_list - - ) - - - AS - - - ( - - - query_expression - - ) - - - search_or_cycle_clause - - - - -
             ::= query_name ( '(' with_column_list ')' )? 'AS' '(' query_expression ')' search_or_cycle_clause?
    -
    - referenced by: - - with_list - - with_column_list: - - - - - - - - column_name_list - - - - -
             ::= column_name_list
    -
    - referenced by: - - with_list_element - - query_expression_body: - - - - - - - - non_join_query_expression - - - joined_table - - - - -
             ::= non_join_query_expression
    -
               | joined_table
    -
    - referenced by: - - non_join_query_expression - query_expression - - non_join_query_expression: - - - - - - - - non_join_query_term - - - query_expression_body - - UNION - - - EXCEPT - - - ALL - - - DISTINCT - - - corresponding_spec - - - query_term - - - - -
             ::= non_join_query_term
    -
               | query_expression_body ( 'UNION' | 'EXCEPT' ) ( 'ALL' | 'DISTINCT' )? corresponding_spec? query_term
    -
    - referenced by: - - non_join_query_primary - query_expression_body - - query_term: - - - - - - - - non_join_query_term - - - joined_table - - - - -
             ::= non_join_query_term
    -
               | joined_table
    -
    - referenced by: - - non_join_query_expression - non_join_query_term - - non_join_query_term: - - - - - - - - non_join_query_primary - - - query_term - - INTERSECT - - - ALL - - - DISTINCT - - - corresponding_spec - - - query_primary - - - - -
             ::= non_join_query_primary
    -
               | query_term 'INTERSECT' ( 'ALL' | 'DISTINCT' ) corresponding_spec? query_primary
    -
    - referenced by: - - non_join_query_expression - query_term - - query_primary: - - - - - - - - non_join_query_primary - - - joined_table - - - - -
             ::= non_join_query_primary
    -
               | joined_table
    -
    - referenced by: - - non_join_query_term - - non_join_query_primary: - - - - - - - - simple_table - - ( - - - non_join_query_expression - - ) - - - - - -
             ::= simple_table
    -
               | '(' non_join_query_expression ')'
    -
    - referenced by: - - non_join_query_term - query_primary - - simple_table: - - - - - - - - query_specification - - - table_value_constructor - - - explicit_table - - - - -
             ::= query_specification
    -
               | table_value_constructor
    -
               | explicit_table
    -
    - referenced by: - - non_join_query_primary - - explicit_table: - - - - - - - - TABLE - - - table_or_query_name - - - - -
             ::= 'TABLE' table_or_query_name
    -
    - referenced by: - - simple_table - - corresponding_spec: - - - - - - - - CORRESPONDING - - - BY - - - ( - - - corresponding_column_list - - ) - - - - - -
             ::= 'CORRESPONDING' ( 'BY' '(' corresponding_column_list ')' )?
    -
    - referenced by: - - non_join_query_expression - non_join_query_term - - corresponding_column_list: - - - - - - - - column_name_list - - - - -
             ::= column_name_list
    -
    - referenced by: - - corresponding_spec - - search_or_cycle_clause: - - - - - - - - search_clause - - - cycle_clause - - - cycle_clause - - - - -
             ::= search_clause cycle_clause?
    -
               | cycle_clause
    -
    - referenced by: - - with_list_element - - search_clause: - - - - - - - - SEARCH - - - recursive_search_order - - SET - - - sequence_column - - - - -
             ::= 'SEARCH' recursive_search_order 'SET' sequence_column
    -
    - referenced by: - - search_or_cycle_clause - - recursive_search_order: - - - - - - - - DEPTH* - - - BREADTH* - - - FIRST* - - - BY - - - sort_specification_list - - - - -
             ::= ( 'DEPTH*' | 'BREADTH*' ) 'FIRST*' 'BY' sort_specification_list
    -
    - referenced by: - - search_clause - - sequence_column: - - - - - - - - column_name - - - - -
             ::= column_name
    -
    - referenced by: - - search_clause - - cycle_clause: - - - - - - - - CYCLE - - - cycle_column_list - - SET - - - cycle_mark_column - - TO - - - cycle_mark_value - - DEFAULT - - - non_cycle_mark_value - - USING - - - path_column - - - - -
             ::= 'CYCLE' cycle_column_list 'SET' cycle_mark_column 'TO' cycle_mark_value 'DEFAULT' non_cycle_mark_value 'USING' path_column
    -
    - referenced by: - - search_or_cycle_clause - - cycle_column_list: - - - - - - - - cycle_column - - , - - - - - -
             ::= cycle_column ( ',' cycle_column )*
    -
    - referenced by: - - cycle_clause - - cycle_column: - - - - - - - - column_name - - - - -
             ::= column_name
    -
    - referenced by: - - cycle_column_list - - cycle_mark_column: - - - - - - - - column_name - - - - -
             ::= column_name
    -
    - referenced by: - - cycle_clause - - path_column: - - - - - - - - column_name - - - - -
             ::= column_name
    -
    - referenced by: - - cycle_clause - - cycle_mark_value: - - - - - - - - value_expression - - - - -
             ::= value_expression
    -
    - referenced by: - - cycle_clause - - non_cycle_mark_value: - - - - - - - - value_expression - - - - -
             ::= value_expression
    -
    - referenced by: - - cycle_clause - - scalar_subquery: - - - - - - - - subquery - - - - -
             ::= subquery
    -
    - referenced by: - - nonparenthesized_value_expression_primary - - row_subquery: - - - - - - - - subquery - - - - -
             ::= subquery
    -
    - referenced by: - - explicit_row_value_constructor - - table_subquery: - - - - - - - - subquery - - - - -
             ::= subquery
    -
    - referenced by: - - derived_table - exists_predicate - in_predicate_value - lateral_derived_table - match_predicate_part_2 - quantified_comparison_predicate_part_2 - unique_predicate - - subquery: - - - - - - - - ( - - - query_expression - - ) - - - - - - - referenced by: - - as_subquery_clause - row_subquery - scalar_subquery - table_subquery - - predicate: - - - - - - - - comparison_predicate - - - between_predicate - - - in_predicate - - - like_predicate - - - similar_predicate - - - null_predicate - - - quantified_comparison_predicate - - - exists_predicate - - - unique_predicate - - - normalized_predicate - - - match_predicate - - - overlaps_predicate - - - distinct_predicate - - - member_predicate - - - submultiset_predicate - - - set_predicate - - - type_predicate - - - - -
             ::= comparison_predicate
    -
               | between_predicate
    -
               | in_predicate
    -
               | like_predicate
    -
               | similar_predicate
    -
               | null_predicate
    -
               | quantified_comparison_predicate
    -
               | exists_predicate
    -
               | unique_predicate
    -
               | normalized_predicate
    -
               | match_predicate
    -
               | overlaps_predicate
    -
               | distinct_predicate
    -
               | member_predicate
    -
               | submultiset_predicate
    -
               | set_predicate
    -
               | type_predicate
    -
    - referenced by: - - boolean_primary - - comparison_predicate: - - - - - - - - row_value_predicand - - - comparison_predicate_part_2 - - - - - - - referenced by: - - predicate - - comparison_predicate_part_2: - - - - - - - - comp_op - - - row_value_predicand - - - - -
             ::= comp_op row_value_predicand
    -
    - referenced by: - - comparison_predicate - when_operand - - comp_op: - - - - - - - - = - - - <> - - - < - - - > - - - <= - - - >= - - - - -
    comp_op  ::= '='
    -
               | '<>'
    -
               | '<'
    -
               | '>'
    -
               | '<='
    -
               | '>='
    -
    - referenced by: - - comparison_predicate_part_2 - quantified_comparison_predicate_part_2 - - between_predicate: - - - - - - - - row_value_predicand - - - between_predicate_part_2 - - - - - - - referenced by: - - predicate - - between_predicate_part_2: - - - - - - - - NOT - - - BETWEEN - - - ASYMMETRIC - - - SYMMETRIC - - - row_value_predicand - - AND - - - row_value_predicand - - - - -
             ::= 'NOT'? 'BETWEEN' ( 'ASYMMETRIC' | 'SYMMETRIC' )? row_value_predicand 'AND' row_value_predicand
    -
    - referenced by: - - between_predicate - when_operand - - in_predicate: - - - - - - - - row_value_predicand - - - in_predicate_part_2 - - - - - - - referenced by: - - predicate - - in_predicate_part_2: - - - - - - - - NOT - - - IN - - - in_predicate_value - - - - -
             ::= 'NOT'? 'IN' in_predicate_value
    -
    - referenced by: - - in_predicate - when_operand - - in_predicate_value: - - - - - - - - table_subquery - - ( - - - in_value_list - - ) - - - - - -
             ::= table_subquery
    -
               | '(' in_value_list ')'
    -
    - referenced by: - - in_predicate_part_2 - - in_value_list: - - - - - - - - row_value_expression - - , - - - - - -
             ::= row_value_expression ( ',' row_value_expression )*
    -
    - referenced by: - - in_predicate_value - - like_predicate: - - - - - - - - character_like_predicate - - - octet_like_predicate - - - - -
             ::= character_like_predicate
    -
               | octet_like_predicate
    -
    - referenced by: - - predicate - - character_like_predicate: - - - - - - - - row_value_predicand - - - character_like_predicate_part_2 - - - - - - - referenced by: - - like_predicate - - character_like_predicate_part_2: - - - - - - - - NOT - - - LIKE - - - character_pattern - - ESCAPE - - - escape_character - - - - -
             ::= 'NOT'? 'LIKE' character_pattern ( 'ESCAPE' escape_character )?
    -
    - referenced by: - - character_like_predicate - when_operand - - character_pattern: - - - - - - - - character_value_expression - - - - -
             ::= character_value_expression
    -
    - referenced by: - - character_like_predicate_part_2 - - escape_character: - - - - - - - - character_value_expression - - - - -
             ::= character_value_expression
    -
    - referenced by: - - Unicode_character_string_literal - binary_string_literal - character_like_predicate_part_2 - regular_expression_substring_function - similar_predicate_part_2 - - octet_like_predicate: - - - - - - - - row_value_predicand - - - octet_like_predicate_part_2 - - - - - - - referenced by: - - like_predicate - - octet_like_predicate_part_2: - - - - - - - - NOT - - - LIKE - - - octet_pattern - - ESCAPE - - - escape_octet - - - - -
             ::= 'NOT'? 'LIKE' octet_pattern ( 'ESCAPE' escape_octet )?
    -
    - referenced by: - - octet_like_predicate - when_operand - - octet_pattern: - - - - - - - - blob_value_expression - - - - -
             ::= blob_value_expression
    -
    - referenced by: - - octet_like_predicate_part_2 - - escape_octet: - - - - - - - - blob_value_expression - - - - -
             ::= blob_value_expression
    -
    - referenced by: - - octet_like_predicate_part_2 - - similar_predicate: - - - - - - - - row_value_predicand - - - similar_predicate_part_2 - - - - - - - referenced by: - - predicate - - similar_predicate_part_2: - - - - - - - - NOT - - - SIMILAR - - - TO - - - similar_pattern - - ESCAPE - - - escape_character - - - - -
             ::= 'NOT'? 'SIMILAR' 'TO' similar_pattern ( 'ESCAPE' escape_character )?
    -
    - referenced by: - - similar_predicate - when_operand - - similar_pattern: - - - - - - - - character_value_expression - - - - -
             ::= character_value_expression
    -
    - referenced by: - - similar_predicate_part_2 - - regular_term: - - - - - - - - regular_factor - - - - -
             ::= regular_factor+
    -
    - referenced by: - - regular_primary - - regular_factor: - - - - - - - - regular_primary - - * - - - + - - - ? - - - repeat_factor - - - - -
             ::= regular_primary ( '*' | '+' | '?' | repeat_factor )?
    -
    - referenced by: - - regular_term - - repeat_factor: - - - - - - - - { - - - low_value - - - upper_limit - - } - - - - - -
             ::= '{' low_value upper_limit? '}'
    -
    - referenced by: - - regular_factor - - upper_limit: - - - - - - - - , - - - high_value - - - - -
             ::= ',' high_value?
    -
    - referenced by: - - repeat_factor - - low_value: - - - - - - - - unsigned_integer - - - - -
             ::= unsigned_integer
    -
    - referenced by: - - repeat_factor - - high_value: - - - - - - - - unsigned_integer - - - - -
             ::= unsigned_integer
    -
    - referenced by: - - upper_limit - - regular_primary: - - - - - - - - character_specifier - - % - - - regular_character_set - - ( - - - regular_term - - | - - - ) - - - - - -
             ::= character_specifier
    -
               | '%'
    -
               | regular_character_set
    -
               | '(' regular_term ( '|' regular_term )* ')'
    -
    - referenced by: - - regular_factor - - character_specifier: - - - - - - - - non_escaped_character - - - escaped_character - - - - -
             ::= non_escaped_character
    -
               | escaped_character
    -
    - referenced by: - - character_enumeration - regular_primary - - non_escaped_character: - - - - - - - - - - -
             ::=
    -
    - referenced by: - - character_specifier - - escaped_character: - - - - - - - - - - -
             ::=
    -
    - referenced by: - - character_specifier - - regular_character_set: - - - - - - - - _ - - - [ - - - ^ - - - character_enumeration - - - character_enumeration_include - - . - - - . - - - . - - - ^ - - - character_enumeration_exclude - - . - - - . - - - . - - - ] - - - - - -
             ::= '_'
    -
    -
    - referenced by: - - regular_primary - - character_enumeration_include: - - - - - - - - character_enumeration - - - - -
             ::= character_enumeration
    -
    - referenced by: - - regular_character_set - - character_enumeration_exclude: - - - - - - - - character_enumeration - - - - -
             ::= character_enumeration
    -
    - referenced by: - - regular_character_set - - character_enumeration: - - - - - - - - character_specifier - - - - - - character_specifier - - [ - - - : - - - regular_character_set_identifier - - : - - - ] - - - - - -
             ::= character_specifier ( '-' character_specifier )?
    -
               | '[' ':' regular_character_set_identifier ':' ']'
    -
    - referenced by: - - character_enumeration_exclude - character_enumeration_include - regular_character_set - - regular_character_set_identifier: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - character_enumeration - - null_predicate: - - - - - - - - row_value_predicand - - - null_predicate_part_2 - - - - - - - referenced by: - - predicate - - null_predicate_part_2: - - - - - - - - IS - - - NOT - - - NULL - - - - - -
             ::= 'IS' 'NOT'? 'NULL'
    -
    - referenced by: - - null_predicate - when_operand - - quantified_comparison_predicate: - - - - - - - - row_value_predicand - - - quantified_comparison_predicate_part_2 - - - - - - - referenced by: - - predicate - - quantified_comparison_predicate_part_2: - - - - - - - - comp_op - - - quantifier - - - table_subquery - - - - -
             ::= comp_op quantifier table_subquery
    -
    - referenced by: - - quantified_comparison_predicate - when_operand - - quantifier: - - - - - - - - ALL - - - some - - - - -
             ::= 'ALL'
    -
               | some
    -
    - referenced by: - - quantified_comparison_predicate_part_2 - - some: - - - - - - - - SOME - - - ANY - - - - -
    some     ::= 'SOME'
    -
               | 'ANY'
    -
    - referenced by: - - quantifier - - exists_predicate: - - - - - - - - EXISTS - - - table_subquery - - - - -
             ::= 'EXISTS' table_subquery
    -
    - referenced by: - - predicate - - unique_predicate: - - - - - - - - UNIQUE - - - table_subquery - - - - -
             ::= 'UNIQUE' table_subquery
    -
    - referenced by: - - predicate - - normalized_predicate: - - - - - - - - string_value_expression - - IS - - - NOT - - - NORMALIZED* - - - - - -
             ::= string_value_expression 'IS' 'NOT'? 'NORMALIZED*'
    -
    - referenced by: - - predicate - - match_predicate: - - - - - - - - row_value_predicand - - - match_predicate_part_2 - - - - - - - referenced by: - - predicate - - match_predicate_part_2: - - - - - - - - MATCH - - - UNIQUE - - - SIMPLE* - - - PARTIAL* - - - FULL - - - table_subquery - - - - -
             ::= 'MATCH' 'UNIQUE'? ( 'SIMPLE*' | 'PARTIAL*' | 'FULL' )? table_subquery
    -
    - referenced by: - - match_predicate - when_operand - - overlaps_predicate: - - - - - - - - overlaps_predicate_part_1 - - - overlaps_predicate_part_2 - - - - - - - referenced by: - - case_operand - predicate - - overlaps_predicate_part_1: - - - - - - - - row_value_predicand_1 - - - - -
             ::= row_value_predicand_1
    -
    - referenced by: - - overlaps_predicate - - overlaps_predicate_part_2: - - - - - - - - OVERLAPS - - - row_value_predicand_2 - - - - -
             ::= 'OVERLAPS' row_value_predicand_2
    -
    - referenced by: - - overlaps_predicate - when_operand - - row_value_predicand_1: - - - - - - - - row_value_predicand - - - - -
             ::= row_value_predicand
    -
    - referenced by: - - overlaps_predicate_part_1 - - row_value_predicand_2: - - - - - - - - row_value_predicand - - - - -
             ::= row_value_predicand
    -
    - referenced by: - - overlaps_predicate_part_2 - - distinct_predicate: - - - - - - - - row_value_predicand_3 - - - distinct_predicate_part_2 - - - - - - - referenced by: - - predicate - - distinct_predicate_part_2: - - - - - - - - IS - - - DISTINCT - - - FROM - - - row_value_predicand_4 - - - - -
             ::= 'IS' 'DISTINCT' 'FROM' row_value_predicand_4
    -
    - referenced by: - - distinct_predicate - when_operand - - row_value_predicand_3: - - - - - - - - row_value_predicand - - - - -
             ::= row_value_predicand
    -
    - referenced by: - - distinct_predicate - - row_value_predicand_4: - - - - - - - - row_value_predicand - - - - -
             ::= row_value_predicand
    -
    - referenced by: - - distinct_predicate_part_2 - - member_predicate: - - - - - - - - row_value_predicand - - - member_predicate_part_2 - - - - - - - referenced by: - - predicate - - member_predicate_part_2: - - - - - - - - NOT - - - MEMBER - - - OF - - - multiset_value_expression - - - - -
             ::= 'NOT'? 'MEMBER' 'OF'? multiset_value_expression
    -
    - referenced by: - - member_predicate - when_operand - - submultiset_predicate: - - - - - - - - row_value_predicand - - - submultiset_predicate_part_2 - - - - - - - referenced by: - - predicate - - submultiset_predicate_part_2: - - - - - - - - NOT - - - SUBMULTISET - - - OF - - - multiset_value_expression - - - - -
             ::= 'NOT'? 'SUBMULTISET' 'OF'? multiset_value_expression
    -
    - referenced by: - - submultiset_predicate - when_operand - - set_predicate: - - - - - - - - row_value_predicand - - - set_predicate_part_2 - - - - - - - referenced by: - - predicate - - set_predicate_part_2: - - - - - - - - IS - - - NOT - - - A* - - - SET - - - - - -
             ::= 'IS' 'NOT'? 'A*' 'SET'
    -
    - referenced by: - - set_predicate - when_operand - - type_predicate: - - - - - - - - row_value_predicand - - - type_predicate_part_2 - - - - - - - referenced by: - - predicate - - type_predicate_part_2: - - - - - - - - IS - - - NOT - - - OF - - - ( - - - type_list - - ) - - - - - -
             ::= 'IS' 'NOT'? 'OF' '(' type_list ')'
    -
    - referenced by: - - type_predicate - when_operand - - type_list: - - - - - - - - user_defined_type_specification - - , - - - - - - - - referenced by: - - type_predicate_part_2 - - user_defined_type_specification: - - - - - - - - inclusive_user_defined_type_specification - - - exclusive_user_defined_type_specification - - - - - - - - referenced by: - - type_list - - inclusive_user_defined_type_specification: - - - - - - - - path_resolved_user_defined_type_name - - - - - - - referenced by: - - user_defined_type_specification - - exclusive_user_defined_type_specification: - - - - - - - - ONLY - - - path_resolved_user_defined_type_name - - - - -
             ::= 'ONLY' path_resolved_user_defined_type_name
    -
    - referenced by: - - user_defined_type_specification - - search_condition: - - - - - - - - boolean_value_expression - - - - -
             ::= boolean_value_expression
    -
    - referenced by: - - assertion_definition - check_constraint_definition - delete_statement__searched - filter_clause - having_clause - join_condition - merge_statement - searched_when_clause - triggered_action - update_statement__searched - where_clause - - interval_qualifier: - - - - - - - - start_field - - TO - - - end_field - - - single_datetime_field - - - - -
             ::= start_field 'TO' end_field
    -
               | single_datetime_field
    -
    - referenced by: - - interval_literal - interval_primary - interval_type - interval_value_expression - - start_field: - - - - - - - - non_second_primary_datetime_field - - ( - - - interval_leading_field_precision - - ) - - - - - - - - referenced by: - - interval_qualifier - - end_field: - - - - - - - - non_second_primary_datetime_field - - SECOND - - - ( - - - interval_fractional_seconds_precision - - ) - - - - - -
             ::= non_second_primary_datetime_field
    -
               | 'SECOND' ( '(' interval_fractional_seconds_precision ')' )?
    -
    - referenced by: - - interval_qualifier - - single_datetime_field: - - - - - - - - non_second_primary_datetime_field - - ( - - - interval_leading_field_precision - - ) - - - SECOND - - - ( - - - interval_leading_field_precision - - , - - - interval_fractional_seconds_precision - - ) - - - - - - -
               | 'SECOND' ( '(' interval_leading_field_precision ( ',' interval_fractional_seconds_precision )? ')' )?
    -
    - referenced by: - - interval_qualifier - - primary_datetime_field: - - - - - - - - non_second_primary_datetime_field - - SECOND - - - - - -
             ::= non_second_primary_datetime_field
    -
               | 'SECOND'
    -
    - referenced by: - - extract_field - - non_second_primary_datetime_field: - - - - - - - - YEAR - - - MONTH - - - DAY - - - HOUR - - - MINUTE - - - - - -
             ::= 'YEAR'
    -
               | 'MONTH'
    -
               | 'DAY'
    -
               | 'HOUR'
    -
               | 'MINUTE'
    -
    - referenced by: - - end_field - primary_datetime_field - single_datetime_field - start_field - - interval_fractional_seconds_precision: - - - - - - - - unsigned_integer - - - - -
             ::= unsigned_integer
    -
    - referenced by: - - end_field - single_datetime_field - - interval_leading_field_precision: - - - - - - - - unsigned_integer - - - - -
             ::= unsigned_integer
    -
    - referenced by: - - single_datetime_field - start_field - - language_clause: - - - - - - - - LANGUAGE - - - language_name - - - - -
             ::= 'LANGUAGE' language_name
    -
    - referenced by: - - SQL_client_module_definition - alter_routine_characteristic - method_characteristic - routine_characteristic - - language_name: - - - - - - - - ADA* - - - C* - - - COBOL* - - - FORTRAN* - - - MUMPS* - - - PASCAL* - - - PLI* - - - SQL - - - - - -
             ::= 'ADA*'
    -
               | 'C*'
    -
               | 'COBOL*'
    -
               | 'FORTRAN*'
    -
               | 'MUMPS*'
    -
               | 'PASCAL*'
    -
               | 'PLI*'
    -
               | 'SQL'
    -
    - referenced by: - - language_clause - - path_specification: - - - - - - - - PATH* - - - schema_name_list - - - - -
             ::= 'PATH*' schema_name_list
    -
    - referenced by: - - embedded_path_specification - module_path_specification - schema_path_specification - - schema_name_list: - - - - - - - - schema_name - - , - - - - - -
             ::= schema_name ( ',' schema_name )*
    -
    - referenced by: - - path_specification - - routine_invocation: - - - - - - - - routine_name - - - SQL_argument_list - - - - -
             ::= routine_name SQL_argument_list
    -
    - referenced by: - - call_statement - constructor_method_selection - method_selection - new_invocation - new_specification - nonparenthesized_value_expression_primary - static_method_selection - - routine_name: - - - - - - - - schema_name - - . - - - qualified_identifier - - - - -
             ::= ( schema_name '.' )? qualified_identifier
    -
    - referenced by: - - routine_invocation - - SQL_argument_list: - - - - - - - - ( - - - SQL_argument - - , - - - ) - - - - - -
             ::= '(' ( SQL_argument ( ',' SQL_argument )* )? ')'
    -
    - referenced by: - - attribute_or_method_reference - direct_invocation - generalized_invocation - method_reference - routine_invocation - static_method_invocation - - SQL_argument: - - - - - - - - value_expression - - - generalized_expression - - - target_specification - - - - -
             ::= value_expression
    -
               | generalized_expression
    -
               | target_specification
    -
    - referenced by: - - SQL_argument_list - - generalized_expression: - - - - - - - - value_expression - - AS - - - path_resolved_user_defined_type_name - - - - - - - referenced by: - - SQL_argument - - character_set_specification: - - - - - - - - standard_character_set_name - - - implementation_defined_character_set_name - - - user_defined_character_set_name - - - - -
             ::= standard_character_set_name
    - -
               | user_defined_character_set_name
    -
    - referenced by: - - Ada_CLOB_variable - Ada_qualified_type_specification - COBOL_CLOB_variable - COBOL_NCLOB_variable - COBOL_character_type - COBOL_national_character_type - C_CLOB_variable - C_NCHAR_VARYING_variable - C_NCHAR_variable - C_NCLOB_variable - C_VARCHAR_variable - C_character_variable - Fortran_CLOB_variable - Fortran_type_specification - MUMPS_CLOB_variable - PL_I_CLOB_variable - PL_I_type_specification - Pascal_CLOB_variable - Pascal_type_specification - Unicode_character_string_literal - character_set_source - character_set_specification_list - character_string_literal - collation_definition - embedded_character_set_declaration - module_character_set_specification - predefined_type - schema_character_set_specification - source_character_set_specification - target_character_set_specification - - standard_character_set_name: - - - - - - - - character_set_name - - - - -
             ::= character_set_name
    -
    - referenced by: - - character_set_specification - - implementation_defined_character_set_name: - - - - - - - - character_set_name - - - - -
             ::= character_set_name
    -
    - referenced by: - - character_set_specification - - user_defined_character_set_name: - - - - - - - - character_set_name - - - - -
             ::= character_set_name
    -
    - referenced by: - - character_set_specification - - specific_routine_designator: - - - - - - - - SPECIFIC - - - routine_type - - - specific_name - - - routine_type - - - member_name - - FOR - - - schema_resolved_user_defined_type_name - - - - -
             ::= 'SPECIFIC' routine_type specific_name
    -
    -
    - referenced by: - - alter_routine_statement - cast_function - drop_routine_statement - from_sql_function - map_function_specification - object_name - privilege_method_list - relative_function_specification - result_set_cursor - to_sql_function - transliteration_routine - - routine_type: - - - - - - - - ROUTINE* - - - FUNCTION - - - PROCEDURE - - - INSTANCE* - - - STATIC - - - CONSTRUCTOR - - METHOD - - - - - -
             ::= 'ROUTINE*'
    -
               | 'FUNCTION'
    -
               | 'PROCEDURE'
    -
               | ( 'INSTANCE*' | 'STATIC' | CONSTRUCTOR )? 'METHOD'
    -
    - referenced by: - - specific_routine_designator - - member_name: - - - - - - - - member_name_alternatives - - - data_type_list - - - - - - - referenced by: - - specific_routine_designator - - member_name_alternatives: - - - - - - - - schema_qualified_routine_name - - - method_name - - - - -
             ::= schema_qualified_routine_name
    -
               | method_name
    -
    - referenced by: - - member_name - - data_type_list: - - - - - - - - ( - - - data_type - - , - - - ) - - - - - -
             ::= '(' ( data_type ( ',' data_type )* )? ')'
    -
    - referenced by: - - member_name - specific_method_specification_designator - - collate_clause: - - - - - - - - COLLATE - - - collation_name - - - - -
             ::= 'COLLATE' collation_name
    -
    - referenced by: - - attribute_definition - character_factor - character_set_definition - column_definition - domain_definition - grouping_column_reference - predefined_type - window_partition_column_reference - - constraint_name_definition: - - - - - - - - CONSTRAINT - - - constraint_name - - - - -
             ::= 'CONSTRAINT' constraint_name
    -
    - referenced by: - - column_constraint_definition - domain_constraint - table_constraint_definition - - constraint_characteristics: - - - - - - - - constraint_check_time - - NOT - - - DEFERRABLE* - - - NOT - - - DEFERRABLE* - - - constraint_check_time - - - - -
             ::= constraint_check_time ( 'NOT'? 'DEFERRABLE*' )?
    -
               | 'NOT'? 'DEFERRABLE*' constraint_check_time?
    -
    - referenced by: - - assertion_definition - column_constraint_definition - domain_constraint - table_constraint_definition - - constraint_check_time: - - - - - - - - INITIALLY* - - - DEFERRED* - - - IMMEDIATE - - - - - -
             ::= 'INITIALLY*' ( 'DEFERRED*' | 'IMMEDIATE' )
    -
    - referenced by: - - constraint_characteristics - - aggregate_function: - - - - - - - - COUNT* - - - ( - - - * - - - ) - - - general_set_function - - - binary_set_function - - - ordered_set_function - - - filter_clause - - - - -
             ::= ( 'COUNT*' '(' '*' ')' | general_set_function | binary_set_function | ordered_set_function ) filter_clause?
    -
    - referenced by: - - set_function_specification - window_function_type - - general_set_function: - - - - - - - - set_function_type - - ( - - - set_quantifier - - - value_expression - - ) - - - - - -
             ::= set_function_type '(' set_quantifier? value_expression ')'
    -
    - referenced by: - - aggregate_function - - set_function_type: - - - - - - - - computational_operation - - - - -
             ::= computational_operation
    -
    - referenced by: - - general_set_function - - computational_operation: - - - - - - - - AVG* - - - MAX* - - - MIN* - - - SUM* - - - EVERY* - - - ANY - - - SOME - - - COUNT* - - - STDDEV_POP* - - - STDDEV_SAMP* - - - VAR_SAMP - - - VAR_POP - - - COLLECT* - - - FUSION* - - - INTERSECTION* - - - - - -
             ::= 'AVG*'
    -
               | 'MAX*'
    -
               | 'MIN*'
    -
               | 'SUM*'
    -
               | 'EVERY*'
    -
               | 'ANY'
    -
               | 'SOME'
    -
               | 'COUNT*'
    -
               | 'STDDEV_POP*'
    -
               | 'STDDEV_SAMP*'
    -
               | 'VAR_SAMP'
    -
               | 'VAR_POP'
    -
               | 'COLLECT*'
    -
               | 'FUSION*'
    -
               | 'INTERSECTION*'
    -
    - referenced by: - - set_function_type - - set_quantifier: - - - - - - - - DISTINCT - - - ALL - - - - - -
             ::= 'DISTINCT'
    -
               | 'ALL'
    -
    - referenced by: - - general_set_function - group_by_clause - query_specification - select_statement__single_row - - filter_clause: - - - - - - - - FILTER - - - ( - - - WHERE - - - search_condition - - ) - - - - - -
             ::= 'FILTER' '(' 'WHERE' search_condition ')'
    -
    - referenced by: - - aggregate_function - - binary_set_function: - - - - - - - - binary_set_function_type - - ( - - - dependent_variable_expression - - , - - - independent_variable_expression - - ) - - - - - - - - referenced by: - - aggregate_function - - binary_set_function_type: - - - - - - - - COVAR_POP* - - - COVAR_SAMP* - - - CORR* - - - REGR_SLOPE - - - REGR_INTERCEPT - - - REGR_COUNT - - - REGR_R2 - - - REGR_AVGX - - - REGR_AVGY - - - REGR_SXX - - - REGR_SYY - - - REGR_SXY - - - - - -
             ::= 'COVAR_POP*'
    -
               | 'COVAR_SAMP*'
    -
               | 'CORR*'
    -
               | 'REGR_SLOPE'
    -
               | 'REGR_INTERCEPT'
    -
               | 'REGR_COUNT'
    -
               | 'REGR_R2'
    -
               | 'REGR_AVGX'
    -
               | 'REGR_AVGY'
    -
               | 'REGR_SXX'
    -
               | 'REGR_SYY'
    -
               | 'REGR_SXY'
    -
    - referenced by: - - binary_set_function - - dependent_variable_expression: - - - - - - - - numeric_value_expression - - - - -
             ::= numeric_value_expression
    -
    - referenced by: - - binary_set_function - - independent_variable_expression: - - - - - - - - numeric_value_expression - - - - -
             ::= numeric_value_expression
    -
    - referenced by: - - binary_set_function - - ordered_set_function: - - - - - - - - hypothetical_set_function - - - inverse_distribution_function - - - - -
             ::= hypothetical_set_function
    -
               | inverse_distribution_function
    -
    - referenced by: - - aggregate_function - - hypothetical_set_function: - - - - - - - - rank_function_type - - ( - - - hypothetical_set_function_value_expression_list - - ) - - - within_group_specification - - - - - - - referenced by: - - ordered_set_function - - within_group_specification: - - - - - - - - WITHIN - - - GROUP - - - ( - - - ORDER - - - BY - - - sort_specification_list - - ) - - - - - -
             ::= 'WITHIN' 'GROUP' '(' 'ORDER' 'BY' sort_specification_list ')'
    -
    - referenced by: - - hypothetical_set_function - inverse_distribution_function - - hypothetical_set_function_value_expression_list: - - - - - - - - value_expression - - , - - - - - -
             ::= value_expression ( ',' value_expression )*
    -
    - referenced by: - - hypothetical_set_function - - inverse_distribution_function: - - - - - - - - inverse_distribution_function_type - - ( - - - inverse_distribution_function_argument - - ) - - - within_group_specification - - - - - - - referenced by: - - ordered_set_function - - inverse_distribution_function_argument: - - - - - - - - numeric_value_expression - - - - -
             ::= numeric_value_expression
    -
    - referenced by: - - inverse_distribution_function - - inverse_distribution_function_type: - - - - - - - - PERCENTILE_CONT* - - - PERCENTILE_DISC* - - - - - -
             ::= 'PERCENTILE_CONT*'
    -
               | 'PERCENTILE_DISC*'
    -
    - referenced by: - - inverse_distribution_function - - sort_specification_list: - - - - - - - - sort_specification - - , - - - - - -
             ::= sort_specification ( ',' sort_specification )*
    -
    - referenced by: - - order_by_clause - recursive_search_order - window_order_clause - within_group_specification - - sort_specification: - - - - - - - - sort_key - - - ordering_specification - - - null_ordering - - - - - - - referenced by: - - sort_specification_list - - sort_key: - - - - - - - - value_expression - - - - - - referenced by: - - sort_specification - - ordering_specification: - - - - - - - - ASC* - - - DESC* - - - - - -
             ::= 'ASC*'
    -
               | 'DESC*'
    -
    - referenced by: - - sort_specification - - null_ordering: - - - - - - - - NULLS* - - - FIRST* - - - LAST* - - - - - -
             ::= 'NULLS*' ( 'FIRST*' | 'LAST*' )
    -
    - referenced by: - - sort_specification - - schema_definition: - - - - - - - - CREATE - - - SCHEMA* - - - schema_name_clause - - - schema_character_set_or_path - - - schema_element - - - - -
             ::= 'CREATE' 'SCHEMA*' schema_name_clause schema_character_set_or_path? schema_element?
    -
    - referenced by: - - SQL_schema_definition_statement - - schema_character_set_or_path: - - - - - - - - schema_character_set_specification - - - schema_path_specification - - - schema_path_specification - - - schema_character_set_specification - - - - - - - - referenced by: - - schema_definition - - schema_name_clause: - - - - - - - - schema_name - - AUTHORIZATION - - - schema_authorization_identifier - - AUTHORIZATION - - - schema_authorization_identifier - - - - -
             ::= schema_name ( 'AUTHORIZATION' schema_authorization_identifier )?
    -
               | 'AUTHORIZATION' schema_authorization_identifier
    -
    - referenced by: - - schema_definition - - schema_authorization_identifier: - - - - - - - - authorization_identifier - - - - -
             ::= authorization_identifier
    -
    - referenced by: - - schema_name_clause - - schema_character_set_specification: - - - - - - - - DEFAULT - - - CHARACTER - - - SET - - - character_set_specification - - - - -
             ::= 'DEFAULT' 'CHARACTER' 'SET' character_set_specification
    -
    - referenced by: - - schema_character_set_or_path - - schema_path_specification: - - - - - - - - path_specification - - - - -
             ::= path_specification
    -
    - referenced by: - - schema_character_set_or_path - - schema_element: - - - - - - - - table_definition - - - view_definition - - - domain_definition - - - character_set_definition - - - collation_definition - - - transliteration_definition - - - assertion_definition - - - trigger_definition - - - user_defined_type_definition - - - user_defined_cast_definition - - - user_defined_ordering_definition - - - transform_definition - - - schema_routine - - - sequence_generator_definition - - - grant_statement - - - role_definition - - - - -
             ::= table_definition
    -
               | view_definition
    -
               | domain_definition
    -
               | character_set_definition
    -
               | collation_definition
    -
               | transliteration_definition
    -
               | assertion_definition
    -
               | trigger_definition
    -
               | user_defined_type_definition
    -
               | user_defined_cast_definition
    -
               | user_defined_ordering_definition
    -
               | transform_definition
    -
               | schema_routine
    -
               | sequence_generator_definition
    -
               | grant_statement
    -
               | role_definition
    -
    - referenced by: - - schema_definition - - drop_schema_statement: - - - - - - - - DROP - - - SCHEMA* - - - schema_name - - - drop_behavior - - - - -
             ::= 'DROP' 'SCHEMA*' schema_name drop_behavior
    -
    - referenced by: - - SQL_schema_manipulation_statement - - drop_behavior: - - - - - - - - CASCADE* - - - RESTRICT - - - - -
             ::= 'CASCADE*'
    -
               | RESTRICT
    -
    - referenced by: - - drop_collation_statement - drop_column_definition - drop_column_scope_clause - drop_data_type_statement - drop_domain_statement - drop_routine_statement - drop_schema_statement - drop_sequence_generator_statement - drop_table_constraint_definition - drop_table_statement - drop_transform_element_list - drop_transform_statement - drop_user_defined_cast_statement - drop_user_defined_ordering_statement - drop_view_statement - revoke_privilege_statement - revoke_role_statement - - table_definition: - - - - - - - - CREATE - - - table_scope - - TABLE - - - table_name - - - table_contents_source - - ON - - - COMMIT - - - table_commit_action - - ROWS - - - - - -
             ::= 'CREATE' table_scope? 'TABLE' table_name table_contents_source ( 'ON' 'COMMIT' table_commit_action 'ROWS' )?
    -
    - referenced by: - - SQL_schema_definition_statement - schema_element - - table_contents_source: - - - - - - - - table_element_list - - OF - - - path_resolved_user_defined_type_name - - - subtable_clause - - - table_element_list - - - as_subquery_clause - - - - -
             ::= table_element_list
    - -
               | as_subquery_clause
    -
    - referenced by: - - table_definition - - table_scope: - - - - - - - - global_or_local - - TEMPORARY* - - - - - -
             ::= global_or_local 'TEMPORARY*'
    -
    - referenced by: - - table_definition - - global_or_local: - - - - - - - - GLOBAL - - - LOCAL - - - - - -
             ::= 'GLOBAL'
    -
               | 'LOCAL'
    -
    - referenced by: - - table_scope - - table_commit_action: - - - - - - - - PRESERVE* - - - DELETE - - - - - -
             ::= 'PRESERVE*'
    -
               | 'DELETE'
    -
    - referenced by: - - table_definition - temporary_table_declaration - - table_element_list: - - - - - - - - ( - - - table_element - - , - - - ) - - - - - -
             ::= '(' table_element ( ',' table_element )* ')'
    -
    - referenced by: - - table_contents_source - temporary_table_declaration - - table_element: - - - - - - - - column_definition - - - table_constraint_definition - - - like_clause - - - self_referencing_column_specification - - - column_options - - - - -
             ::= column_definition
    -
               | table_constraint_definition
    -
               | like_clause
    - -
               | column_options
    -
    - referenced by: - - table_element_list - - self_referencing_column_specification: - - - - - - - - REF - - - IS - - - self_referencing_column_name - - - reference_generation - - - - -
             ::= 'REF' 'IS' self_referencing_column_name reference_generation
    -
    - referenced by: - - table_element - view_element - - reference_generation: - - - - - - - - SYSTEM - - - USER - - - GENERATED - - DERIVED* - - - - - -
             ::= ( 'SYSTEM' | 'USER' ) GENERATED
    -
               | 'DERIVED*'
    -
    - referenced by: - - self_referencing_column_specification - - self_referencing_column_name: - - - - - - - - column_name - - - - -
             ::= column_name
    -
    - referenced by: - - self_referencing_column_specification - - column_options: - - - - - - - - column_name - - WITH - - - OPTIONS* - - - column_option_list - - - - -
             ::= column_name 'WITH' 'OPTIONS*' column_option_list
    -
    - referenced by: - - table_element - - column_option_list: - - - - - - - - scope_clause - - - default_clause - - - column_constraint_definition - - - - - - - referenced by: - - column_options - - subtable_clause: - - - - - - - - UNDER* - - - supertable_clause - - - - -
             ::= 'UNDER*' supertable_clause
    -
    - referenced by: - - table_contents_source - - supertable_clause: - - - - - - - - supertable_name - - - - -
             ::= supertable_name
    -
    - referenced by: - - subtable_clause - - supertable_name: - - - - - - - - table_name - - - - -
             ::= table_name
    -
    - referenced by: - - supertable_clause - - like_clause: - - - - - - - - LIKE - - - table_name - - - like_options - - - - -
             ::= 'LIKE' table_name like_options?
    -
    - referenced by: - - table_element - - like_options: - - - - - - - - identity_option - - - column_default_option - - - - -
             ::= identity_option
    -
               | column_default_option
    -
    - referenced by: - - like_clause - - identity_option: - - - - - - - - INCLUDING* - - - EXCLUDING* - - - IDENTITY - - - - - -
             ::= ( 'INCLUDING*' | 'EXCLUDING*' ) 'IDENTITY'
    -
    - referenced by: - - like_options - - column_default_option: - - - - - - - - INCLUDING* - - - EXCLUDING* - - - DEFAULTS* - - - - - -
             ::= ( 'INCLUDING*' | 'EXCLUDING*' ) 'DEFAULTS*'
    -
    - referenced by: - - like_options - - as_subquery_clause: - - - - - - - - ( - - - column_name_list - - ) - - - AS - - - subquery - - - with_or_without_data - - - - -
             ::= ( '(' column_name_list ')' )? 'AS' subquery with_or_without_data
    -
    - referenced by: - - table_contents_source - - with_or_without_data: - - - - - - - - WITH - - - NO - - - DATA* - - - - - -
             ::= 'WITH' 'NO'? 'DATA*'
    -
    - referenced by: - - as_subquery_clause - - column_definition: - - - - - - - - column_name - - - data_type - - - domain_name - - - reference_scope_check - - - default_clause - - - identity_column_specification - - - generation_clause - - - column_constraint_definition - - - collate_clause - - - - - - - referenced by: - - add_column_definition - table_element - - column_constraint_definition: - - - - - - - - constraint_name_definition - - - column_constraint - - - constraint_characteristics - - - - - - - referenced by: - - column_definition - column_option_list - - column_constraint: - - - - - - - - NOT - - - NULL - - - unique_specification - - - references_specification - - - check_constraint_definition - - - - -
             ::= 'NOT' 'NULL'
    -
               | unique_specification
    -
               | references_specification
    -
               | check_constraint_definition
    -
    - referenced by: - - column_constraint_definition - - reference_scope_check: - - - - - - - - REFERENCES - - - ARE - - - NOT - - - CHECKED* - - - ON - - - DELETE - - - reference_scope_check_action - - - - -
             ::= 'REFERENCES' 'ARE' 'NOT'? 'CHECKED*' ( 'ON' 'DELETE' reference_scope_check_action )?
    -
    - referenced by: - - attribute_definition - column_definition - field_definition - - reference_scope_check_action: - - - - - - - - referential_action - - - - -
             ::= referential_action
    -
    - referenced by: - - reference_scope_check - - identity_column_specification: - - - - - - - - GENERATED - - ALWAYS* - - - BY - - - DEFAULT - - - AS - - - IDENTITY - - - ( - - - common_sequence_generator_options - - ) - - - - - -
             ::= GENERATED ( 'ALWAYS*' | 'BY' 'DEFAULT' ) 'AS' 'IDENTITY' ( '(' common_sequence_generator_options ')' )?
    -
    - referenced by: - - column_definition - - generation_clause: - - - - - - - - generation_rule - - AS - - - generation_expression - - - - -
             ::= generation_rule 'AS' generation_expression
    -
    - referenced by: - - column_definition - - generation_rule: - - - - - - - - GENERATED - - ALWAYS* - - - - - -
             ::= GENERATED 'ALWAYS*'
    -
    - referenced by: - - generation_clause - - generation_expression: - - - - - - - - ( - - - value_expression - - ) - - - - - -
             ::= '(' value_expression ')'
    -
    - referenced by: - - generation_clause - - default_clause: - - - - - - - - DEFAULT - - - default_option - - - - -
             ::= 'DEFAULT' default_option
    -
    - referenced by: - - attribute_default - column_definition - column_option_list - domain_definition - set_column_default_clause - set_domain_default_clause - - default_option: - - - - - - - - literal - - - datetime_value_function - - USER - - - CURRENT_USER - - - CURRENT_ROLE - - - SESSION_USER - - - SYSTEM_USER - - - CURRENT_PATH - - - implicitly_typed_value_specification - - - - -
             ::= literal
    -
               | datetime_value_function
    -
               | 'USER'
    -
               | 'CURRENT_USER'
    -
               | 'CURRENT_ROLE'
    -
               | 'SESSION_USER'
    -
               | 'SYSTEM_USER'
    -
               | 'CURRENT_PATH'
    -
               | implicitly_typed_value_specification
    -
    - referenced by: - - default_clause - - table_constraint_definition: - - - - - - - - constraint_name_definition - - - table_constraint - - - constraint_characteristics - - - - - - - referenced by: - - add_table_constraint_definition - table_element - - table_constraint: - - - - - - - - unique_constraint_definition - - - referential_constraint_definition - - - check_constraint_definition - - - - -
             ::= unique_constraint_definition
    -
               | referential_constraint_definition
    -
               | check_constraint_definition
    -
    - referenced by: - - table_constraint_definition - - unique_constraint_definition: - - - - - - - - unique_specification - - ( - - - unique_column_list - - ) - - - UNIQUE - - - VALUE - - - - - -
             ::= unique_specification '(' unique_column_list ')'
    -
               | 'UNIQUE' 'VALUE'
    -
    - referenced by: - - table_constraint - - unique_specification: - - - - - - - - UNIQUE - - - PRIMARY - - - KEY* - - - - - -
             ::= 'UNIQUE'
    -
               | 'PRIMARY' 'KEY*'
    -
    - referenced by: - - column_constraint - unique_constraint_definition - - unique_column_list: - - - - - - - - column_name_list - - - - -
             ::= column_name_list
    -
    - referenced by: - - unique_constraint_definition - - referential_constraint_definition: - - - - - - - - FOREIGN - - - KEY* - - - ( - - - referencing_columns - - ) - - - references_specification - - - - -
             ::= 'FOREIGN' 'KEY*' '(' referencing_columns ')' references_specification
    -
    - referenced by: - - table_constraint - - references_specification: - - - - - - - - REFERENCES - - - referenced_table_and_columns - - MATCH - - - match_type - - - referential_triggered_action - - - - -
             ::= 'REFERENCES' referenced_table_and_columns ( 'MATCH' match_type )? referential_triggered_action?
    -
    - referenced by: - - column_constraint - referential_constraint_definition - - match_type: - - - - - - - - FULL - - - PARTIAL* - - - SIMPLE* - - - - - -
             ::= 'FULL'
    -
               | 'PARTIAL*'
    -
               | 'SIMPLE*'
    -
    - referenced by: - - references_specification - - referencing_columns: - - - - - - - - reference_column_list - - - - -
             ::= reference_column_list
    -
    - referenced by: - - referential_constraint_definition - - referenced_table_and_columns: - - - - - - - - table_name - - ( - - - reference_column_list - - ) - - - - - -
             ::= table_name ( '(' reference_column_list ')' )?
    -
    - referenced by: - - references_specification - - reference_column_list: - - - - - - - - column_name_list - - - - -
             ::= column_name_list
    -
    - referenced by: - - referenced_table_and_columns - referencing_columns - - referential_triggered_action: - - - - - - - - update_rule - - - delete_rule - - - delete_rule - - - update_rule - - - - -
             ::= update_rule delete_rule?
    -
               | delete_rule update_rule?
    -
    - referenced by: - - references_specification - - update_rule: - - - - - - - - ON - - - UPDATE - - - referential_action - - - - -
             ::= 'ON' 'UPDATE' referential_action
    -
    - referenced by: - - referential_triggered_action - - delete_rule: - - - - - - - - ON - - - DELETE - - - referential_action - - - - -
             ::= 'ON' 'DELETE' referential_action
    -
    - referenced by: - - referential_triggered_action - - referential_action: - - - - - - - - CASCADE* - - - SET - - - NULL - - - DEFAULT - - - RESTRICT - - NO - - - ACTION* - - - - - -
             ::= 'CASCADE*'
    -
               | 'SET' ( 'NULL' | 'DEFAULT' )
    -
               | RESTRICT
    -
               | 'NO' 'ACTION*'
    -
    - referenced by: - - delete_rule - reference_scope_check_action - update_rule - - check_constraint_definition: - - - - - - - - CHECK - - - ( - - - search_condition - - ) - - - - - -
             ::= 'CHECK' '(' search_condition ')'
    -
    - referenced by: - - column_constraint - domain_constraint - table_constraint - - alter_table_statement: - - - - - - - - ALTER - - - TABLE - - - table_name - - - alter_table_action - - - - -
             ::= 'ALTER' 'TABLE' table_name alter_table_action
    -
    - referenced by: - - SQL_schema_manipulation_statement - - alter_table_action: - - - - - - - - add_column_definition - - - alter_column_definition - - - drop_column_definition - - - add_table_constraint_definition - - - drop_table_constraint_definition - - - - -
             ::= add_column_definition
    -
               | alter_column_definition
    -
               | drop_column_definition
    -
               | add_table_constraint_definition
    -
               | drop_table_constraint_definition
    -
    - referenced by: - - alter_table_statement - - add_column_definition: - - - - - - - - ADD - - - COLUMN - - - column_definition - - - - -
             ::= 'ADD' 'COLUMN'? column_definition
    -
    - referenced by: - - alter_table_action - - alter_column_definition: - - - - - - - - ALTER - - - COLUMN - - - column_name - - - alter_column_action - - - - -
             ::= 'ALTER' 'COLUMN'? column_name alter_column_action
    -
    - referenced by: - - alter_table_action - - alter_column_action: - - - - - - - - set_column_default_clause - - - drop_column_default_clause - - - add_column_scope_clause - - - drop_column_scope_clause - - - alter_identity_column_specification - - - - -
             ::= set_column_default_clause
    -
               | drop_column_default_clause
    -
               | add_column_scope_clause
    -
               | drop_column_scope_clause
    -
               | alter_identity_column_specification
    -
    - referenced by: - - alter_column_definition - - set_column_default_clause: - - - - - - - - SET - - - default_clause - - - - -
             ::= 'SET' default_clause
    -
    - referenced by: - - alter_column_action - - drop_column_default_clause: - - - - - - - - DROP - - - DEFAULT - - - - - -
             ::= 'DROP' 'DEFAULT'
    -
    - referenced by: - - alter_column_action - - add_column_scope_clause: - - - - - - - - ADD - - - scope_clause - - - - -
             ::= 'ADD' scope_clause
    -
    - referenced by: - - alter_column_action - - drop_column_scope_clause: - - - - - - - - DROP - - - SCOPE - - - drop_behavior - - - - -
             ::= 'DROP' SCOPE drop_behavior
    -
    - referenced by: - - alter_column_action - - alter_identity_column_specification: - - - - - - - - alter_identity_column_option - - . - - - . - - - . - - - - - -
             ::= alter_identity_column_option . . .
    -
    - referenced by: - - alter_column_action - - alter_identity_column_option: - - - - - - - - alter_sequence_generator_restart_option - - SET - - - basic_sequence_generator_option - - - - - -
               | 'SET' basic_sequence_generator_option
    -
    - referenced by: - - alter_identity_column_specification - - drop_column_definition: - - - - - - - - DROP - - - COLUMN - - - column_name - - - drop_behavior - - - - -
             ::= 'DROP' 'COLUMN'? column_name drop_behavior
    -
    - referenced by: - - alter_table_action - - add_table_constraint_definition: - - - - - - - - ADD - - - table_constraint_definition - - - - -
             ::= 'ADD' table_constraint_definition
    -
    - referenced by: - - alter_table_action - - drop_table_constraint_definition: - - - - - - - - DROP - - - CONSTRAINT - - - constraint_name - - - drop_behavior - - - - -
             ::= 'DROP' 'CONSTRAINT' constraint_name drop_behavior
    -
    - referenced by: - - alter_table_action - - drop_table_statement: - - - - - - - - DROP - - - TABLE - - - table_name - - - drop_behavior - - - - -
             ::= 'DROP' 'TABLE' table_name drop_behavior
    -
    - referenced by: - - SQL_schema_manipulation_statement - - view_definition: - - - - - - - - CREATE - - - RECURSIVE - - - VIEW* - - - table_name - - - view_specification - - AS - - - query_expression - - WITH - - - levels_clause - - CHECK - - - OPTION* - - - - - -
             ::= 'CREATE' 'RECURSIVE'? 'VIEW*' table_name view_specification 'AS' query_expression ( 'WITH' levels_clause? 'CHECK' 'OPTION*' )?
    -
    - referenced by: - - SQL_schema_definition_statement - schema_element - - view_specification: - - - - - - - - regular_view_specification - - - referenceable_view_specification - - - - -
             ::= regular_view_specification
    -
               | referenceable_view_specification
    -
    - referenced by: - - view_definition - - regular_view_specification: - - - - - - - - ( - - - view_column_list - - ) - - - - - -
             ::= ( '(' view_column_list ')' )?
    -
    - referenced by: - - view_specification - - referenceable_view_specification: - - - - - - - - OF - - - path_resolved_user_defined_type_name - - - subview_clause - - - view_element_list - - - - - - - referenced by: - - view_specification - - subview_clause: - - - - - - - - UNDER* - - - table_name - - - - -
             ::= 'UNDER*' table_name
    -
    - referenced by: - - referenceable_view_specification - - view_element_list: - - - - - - - - ( - - - view_element - - , - - - ) - - - - - -
             ::= '(' view_element ( ',' view_element )* ')'
    -
    - referenced by: - - referenceable_view_specification - - view_element: - - - - - - - - self_referencing_column_specification - - - view_column_option - - - - - -
               | view_column_option
    -
    - referenced by: - - view_element_list - - view_column_option: - - - - - - - - column_name - - WITH - - - OPTIONS* - - - scope_clause - - - - -
             ::= column_name 'WITH' 'OPTIONS*' scope_clause
    -
    - referenced by: - - view_element - - levels_clause: - - - - - - - - CASCADED - - - LOCAL - - - - - -
             ::= 'CASCADED'
    -
               | 'LOCAL'
    -
    - referenced by: - - view_definition - - view_column_list: - - - - - - - - column_name_list - - - - -
             ::= column_name_list
    -
    - referenced by: - - regular_view_specification - - drop_view_statement: - - - - - - - - DROP - - - VIEW* - - - table_name - - - drop_behavior - - - - -
             ::= 'DROP' 'VIEW*' table_name drop_behavior
    -
    - referenced by: - - SQL_schema_manipulation_statement - - domain_definition: - - - - - - - - CREATE - - - DOMAIN* - - - domain_name - - AS - - - data_type - - - default_clause - - - domain_constraint - - - collate_clause - - - - -
             ::= 'CREATE' 'DOMAIN*' domain_name 'AS'? data_type default_clause? domain_constraint? collate_clause?
    -
    - referenced by: - - SQL_schema_definition_statement - schema_element - - domain_constraint: - - - - - - - - constraint_name_definition - - - check_constraint_definition - - - constraint_characteristics - - - - - - - referenced by: - - add_domain_constraint_definition - domain_definition - - alter_domain_statement: - - - - - - - - ALTER - - - DOMAIN* - - - domain_name - - - alter_domain_action - - - - -
             ::= 'ALTER' 'DOMAIN*' domain_name alter_domain_action
    -
    - referenced by: - - SQL_schema_manipulation_statement - - alter_domain_action: - - - - - - - - set_domain_default_clause - - - drop_domain_default_clause - - - add_domain_constraint_definition - - - drop_domain_constraint_definition - - - - -
             ::= set_domain_default_clause
    -
               | drop_domain_default_clause
    -
               | add_domain_constraint_definition
    -
               | drop_domain_constraint_definition
    -
    - referenced by: - - alter_domain_statement - - set_domain_default_clause: - - - - - - - - SET - - - default_clause - - - - -
             ::= 'SET' default_clause
    -
    - referenced by: - - alter_domain_action - - drop_domain_default_clause: - - - - - - - - DROP - - - DEFAULT - - - - - -
             ::= 'DROP' 'DEFAULT'
    -
    - referenced by: - - alter_domain_action - - add_domain_constraint_definition: - - - - - - - - ADD - - - domain_constraint - - - - -
             ::= 'ADD' domain_constraint
    -
    - referenced by: - - alter_domain_action - - drop_domain_constraint_definition: - - - - - - - - DROP - - - CONSTRAINT - - - constraint_name - - - - -
             ::= 'DROP' 'CONSTRAINT' constraint_name
    -
    - referenced by: - - alter_domain_action - - drop_domain_statement: - - - - - - - - DROP - - - DOMAIN* - - - domain_name - - - drop_behavior - - - - -
             ::= 'DROP' 'DOMAIN*' domain_name drop_behavior
    -
    - referenced by: - - SQL_schema_manipulation_statement - - character_set_definition: - - - - - - - - CREATE - - - CHARACTER - - - SET - - - character_set_name - - AS - - - character_set_source - - - collate_clause - - - - -
             ::= 'CREATE' 'CHARACTER' 'SET' character_set_name 'AS'? character_set_source collate_clause?
    -
    - referenced by: - - SQL_schema_definition_statement - schema_element - - character_set_source: - - - - - - - - GET - - - character_set_specification - - - - -
             ::= 'GET' character_set_specification
    -
    - referenced by: - - character_set_definition - - drop_character_set_statement: - - - - - - - - DROP - - - CHARACTER - - - SET - - - character_set_name - - - - -
             ::= 'DROP' 'CHARACTER' 'SET' character_set_name
    -
    - referenced by: - - SQL_schema_manipulation_statement - - collation_definition: - - - - - - - - CREATE - - - COLLATION* - - - collation_name - - FOR - - - character_set_specification - - FROM - - - existing_collation_name - - - pad_characteristic - - - - -
             ::= 'CREATE' 'COLLATION*' collation_name 'FOR' character_set_specification 'FROM' existing_collation_name pad_characteristic?
    -
    - referenced by: - - SQL_schema_definition_statement - schema_element - - existing_collation_name: - - - - - - - - collation_name - - - - -
             ::= collation_name
    -
    - referenced by: - - collation_definition - - pad_characteristic: - - - - - - - - NO - - - PAD* - - - PAD* - - - SPACE* - - - - - -
             ::= 'NO' 'PAD*'
    -
               | 'PAD*' 'SPACE*'
    -
    - referenced by: - - collation_definition - - drop_collation_statement: - - - - - - - - DROP - - - COLLATION* - - - collation_name - - - drop_behavior - - - - -
             ::= 'DROP' 'COLLATION*' collation_name drop_behavior
    -
    - referenced by: - - SQL_schema_manipulation_statement - - transliteration_definition: - - - - - - - - CREATE - - - TRANSLATION - - - transliteration_name - - FOR - - - source_character_set_specification - - TO - - - target_character_set_specification - - FROM - - - transliteration_source - - - - - - - referenced by: - - SQL_schema_definition_statement - schema_element - - source_character_set_specification: - - - - - - - - character_set_specification - - - - -
             ::= character_set_specification
    -
    - referenced by: - - transliteration_definition - - target_character_set_specification: - - - - - - - - character_set_specification - - - - -
             ::= character_set_specification
    -
    - referenced by: - - transliteration_definition - - transliteration_source: - - - - - - - - existing_transliteration_name - - - transliteration_routine - - - - -
             ::= existing_transliteration_name
    -
               | transliteration_routine
    -
    - referenced by: - - transliteration_definition - - existing_transliteration_name: - - - - - - - - transliteration_name - - - - -
             ::= transliteration_name
    -
    - referenced by: - - transliteration_source - - transliteration_routine: - - - - - - - - specific_routine_designator - - - - -
             ::= specific_routine_designator
    -
    - referenced by: - - transliteration_source - - drop_transliteration_statement: - - - - - - - - DROP - - - TRANSLATION - - - transliteration_name - - - - -
             ::= 'DROP' 'TRANSLATION' transliteration_name
    -
    - referenced by: - - SQL_schema_manipulation_statement - - assertion_definition: - - - - - - - - CREATE - - - ASSERTION* - - - constraint_name - - CHECK - - - ( - - - search_condition - - ) - - - constraint_characteristics - - - - -
             ::= 'CREATE' 'ASSERTION*' constraint_name 'CHECK' '(' search_condition ')' constraint_characteristics?
    -
    - referenced by: - - SQL_schema_definition_statement - schema_element - - drop_assertion_statement: - - - - - - - - DROP - - - ASSERTION* - - - constraint_name - - - - -
             ::= 'DROP' 'ASSERTION*' constraint_name
    -
    - referenced by: - - SQL_schema_manipulation_statement - - trigger_definition: - - - - - - - - CREATE - - - TRIGGER - - - trigger_name - - - trigger_action_time - - - trigger_event - - ON - - - table_name - - REFERENCING - - - old_or_new_values_alias_list - - - triggered_action - - - - -
             ::= 'CREATE' 'TRIGGER' trigger_name trigger_action_time trigger_event 'ON' table_name ( 'REFERENCING' old_or_new_values_alias_list )? triggered_action
    -
    - referenced by: - - SQL_schema_definition_statement - schema_element - - trigger_action_time: - - - - - - - - BEFORE* - - - AFTER* - - - - - -
             ::= 'BEFORE*'
    -
               | 'AFTER*'
    -
    - referenced by: - - trigger_definition - - trigger_event: - - - - - - - - INSERT - - - DELETE - - - UPDATE - - - OF - - - trigger_column_list - - - - -
             ::= 'INSERT'
    -
               | 'DELETE'
    -
               | 'UPDATE' ( 'OF' trigger_column_list )?
    -
    - referenced by: - - trigger_definition - - trigger_column_list: - - - - - - - - column_name_list - - - - -
             ::= column_name_list
    -
    - referenced by: - - trigger_event - - triggered_action: - - - - - - - - FOR - - - EACH - - - ROW - - - STATEMENT* - - - WHEN - - - ( - - - search_condition - - ) - - - triggered_SQL_statement - - - - -
             ::= ( 'FOR' 'EACH' ( 'ROW' | 'STATEMENT*' ) )? ( 'WHEN' '(' search_condition ')' )? triggered_SQL_statement
    -
    - referenced by: - - trigger_definition - - triggered_SQL_statement: - - - - - - - - SQL_procedure_statement - - BEGIN - - - ATOMIC - - - SQL_procedure_statement - - ; - - - END - - - - - -
             ::= SQL_procedure_statement
    -
               | 'BEGIN' 'ATOMIC' ( SQL_procedure_statement ';' )* 'END'
    -
    - referenced by: - - triggered_action - - old_or_new_values_alias_list: - - - - - - - - old_or_new_values_alias - - . - - - . - - - . - - - - - -
             ::= old_or_new_values_alias . . .
    -
    - referenced by: - - trigger_definition - - old_or_new_values_alias: - - - - - - - - OLD - - - ROW - - - AS - - - old_values_correlation_name - - TABLE - - - AS - - - old_values_table_alias - - NEW - - - ROW - - - AS - - - new_values_correlation_name - - TABLE - - - AS - - - new_values_table_alias - - - - -
             ::= 'OLD' ( 'ROW'? 'AS'? old_values_correlation_name | 'TABLE' 'AS'? old_values_table_alias )
    -
               | 'NEW' ( 'ROW'? 'AS'? new_values_correlation_name | 'TABLE' 'AS'? new_values_table_alias )
    -
    - referenced by: - - old_or_new_values_alias_list - - old_values_table_alias: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - old_or_new_values_alias - - new_values_table_alias: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - old_or_new_values_alias - - old_values_correlation_name: - - - - - - - - correlation_name - - - - -
             ::= correlation_name
    -
    - referenced by: - - old_or_new_values_alias - - new_values_correlation_name: - - - - - - - - correlation_name - - - - -
             ::= correlation_name
    -
    - referenced by: - - old_or_new_values_alias - - drop_trigger_statement: - - - - - - - - DROP - - - TRIGGER - - - trigger_name - - - - -
             ::= 'DROP' 'TRIGGER' trigger_name
    -
    - referenced by: - - SQL_schema_manipulation_statement - - user_defined_type_definition: - - - - - - - - CREATE - - - TYPE* - - - user_defined_type_body - - - - -
             ::= 'CREATE' 'TYPE*' user_defined_type_body
    -
    - referenced by: - - SQL_schema_definition_statement - schema_element - - user_defined_type_body: - - - - - - - - schema_resolved_user_defined_type_name - - - subtype_clause - - AS - - - representation - - - user_defined_type_option_list - - - method_specification_list - - - - - - - referenced by: - - user_defined_type_definition - - user_defined_type_option_list: - - - - - - - - user_defined_type_option - - - user_defined_type_option - - - - - - - referenced by: - - user_defined_type_body - - user_defined_type_option: - - - - - - - - instantiable_clause - - - finality - - - reference_type_specification - - - ref_cast_option - - - cast_option - - - - -
             ::= instantiable_clause
    -
               | finality
    -
               | reference_type_specification
    -
               | ref_cast_option
    -
               | cast_option
    -
    - referenced by: - - user_defined_type_option_list - - subtype_clause: - - - - - - - - UNDER* - - - supertype_name - - - - -
             ::= 'UNDER*' supertype_name
    -
    - referenced by: - - user_defined_type_body - - supertype_name: - - - - - - - - path_resolved_user_defined_type_name - - - - - - - referenced by: - - subtype_clause - - representation: - - - - - - - - predefined_type - - - member_list - - - - -
             ::= predefined_type
    -
               | member_list
    -
    - referenced by: - - user_defined_type_body - - member_list: - - - - - - - - ( - - - member - - , - - - ) - - - - - -
             ::= '(' member ( ',' member )* ')'
    -
    - referenced by: - - representation - - member: - - - - - - - - attribute_definition - - - - - - referenced by: - - member_list - - instantiable_clause: - - - - - - - - NOT - - - INSTANTIABLE* - - - - - -
             ::= 'NOT'? 'INSTANTIABLE*'
    -
    - referenced by: - - user_defined_type_option - - finality: - - - - - - - - NOT - - - FINAL* - - - - -
    finality ::= 'NOT'? 'FINAL*'
    -
    - referenced by: - - user_defined_type_option - - reference_type_specification: - - - - - - - - user_defined_representation - - - derived_representation - - - system_generated_representation - - - - -
             ::= user_defined_representation
    -
               | derived_representation
    -
               | system_generated_representation
    -
    - referenced by: - - user_defined_type_option - - user_defined_representation: - - - - - - - - REF - - - USING - - - predefined_type - - - - -
             ::= 'REF' 'USING' predefined_type
    -
    - referenced by: - - reference_type_specification - - derived_representation: - - - - - - - - REF - - - FROM - - - list_of_attributes - - - - -
             ::= 'REF' 'FROM' list_of_attributes
    -
    - referenced by: - - reference_type_specification - - system_generated_representation: - - - - - - - - REF - - - IS - - - SYSTEM - - - GENERATED - - - - -
             ::= 'REF' 'IS' 'SYSTEM' GENERATED
    -
    - referenced by: - - reference_type_specification - - ref_cast_option: - - - - - - - - cast_to_ref - - - cast_to_type - - - - -
             ::= cast_to_ref? cast_to_type?
    -
    - referenced by: - - user_defined_type_option - - cast_to_ref: - - - - - - - - CAST - - - ( - - - SOURCE* - - - AS - - - REF - - - ) - - - WITH - - - cast_to_ref_identifier - - - - -
             ::= 'CAST' '(' 'SOURCE*' 'AS' 'REF' ')' 'WITH' cast_to_ref_identifier
    -
    - referenced by: - - ref_cast_option - - cast_to_ref_identifier: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - cast_to_ref - - cast_to_type: - - - - - - - - CAST - - - ( - - - REF - - - AS - - - SOURCE* - - - ) - - - WITH - - - cast_to_type_identifier - - - - -
             ::= 'CAST' '(' 'REF' 'AS' 'SOURCE*' ')' 'WITH' cast_to_type_identifier
    -
    - referenced by: - - ref_cast_option - - cast_to_type_identifier: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - cast_to_type - - list_of_attributes: - - - - - - - - ( - - - attribute_name - - , - - - ) - - - - - -
             ::= '(' attribute_name ( ',' attribute_name )* ')'
    -
    - referenced by: - - derived_representation - - cast_option: - - - - - - - - cast_to_distinct - - - cast_to_source - - - - -
             ::= cast_to_distinct? cast_to_source?
    -
    - referenced by: - - user_defined_type_option - - cast_to_distinct: - - - - - - - - CAST - - - ( - - - SOURCE* - - - AS - - - DISTINCT - - - ) - - - WITH - - - cast_to_distinct_identifier - - - - -
             ::= 'CAST' '(' 'SOURCE*' 'AS' 'DISTINCT' ')' 'WITH' cast_to_distinct_identifier
    -
    - referenced by: - - cast_option - - cast_to_distinct_identifier: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - cast_to_distinct - - cast_to_source: - - - - - - - - CAST - - - ( - - - DISTINCT - - - AS - - - SOURCE* - - - ) - - - WITH - - - cast_to_source_identifier - - - - -
             ::= 'CAST' '(' 'DISTINCT' 'AS' 'SOURCE*' ')' 'WITH' cast_to_source_identifier
    -
    - referenced by: - - cast_option - - cast_to_source_identifier: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - cast_to_source - - method_specification_list: - - - - - - - - method_specification - - , - - - - - -
             ::= method_specification ( ',' method_specification )*
    -
    - referenced by: - - user_defined_type_body - - method_specification: - - - - - - - - original_method_specification - - - overriding_method_specification - - - - -
             ::= original_method_specification
    -
               | overriding_method_specification
    -
    - referenced by: - - method_specification_list - - original_method_specification: - - - - - - - - partial_method_specification - - SELF* - - - AS - - - RESULT - - - SELF* - - - AS - - - LOCATOR* - - - method_characteristics - - - - -
             ::= partial_method_specification ( 'SELF*' 'AS' 'RESULT' )? ( 'SELF*' 'AS' 'LOCATOR*' )? method_characteristics?
    -
    - referenced by: - - add_original_method_specification - method_specification - - overriding_method_specification: - - - - - - - - OVERRIDING* - - - partial_method_specification - - - - -
             ::= 'OVERRIDING*' partial_method_specification
    -
    - referenced by: - - add_overriding_method_specification - method_specification - - partial_method_specification: - - - - - - - - INSTANCE* - - - STATIC - - - CONSTRUCTOR - - METHOD - - - method_name - - - SQL_parameter_declaration_list - - - returns_clause - - SPECIFIC - - - specific_method_name - - - - -
             ::= ( 'INSTANCE*' | 'STATIC' | CONSTRUCTOR )? 'METHOD' method_name SQL_parameter_declaration_list returns_clause ( 'SPECIFIC' specific_method_name )?
    -
    - referenced by: - - original_method_specification - overriding_method_specification - - specific_method_name: - - - - - - - - schema_name - - . - - - qualified_identifier_ - - - - -
             ::= ( schema_name '.' )? qualified_identifier_
    -
    - referenced by: - - method_specification_designator - partial_method_specification - - method_characteristics: - - - - - - - - method_characteristic - - . - - - . - - - . - - - - - -
             ::= method_characteristic . . .
    -
    - referenced by: - - original_method_specification - - method_characteristic: - - - - - - - - language_clause - - - parameter_style_clause - - - deterministic_characteristic - - - SQL_data_access_indication - - - null_call_clause - - - - -
             ::= language_clause
    -
               | parameter_style_clause
    -
               | deterministic_characteristic
    -
               | SQL_data_access_indication
    -
               | null_call_clause
    -
    - referenced by: - - method_characteristics - - attribute_definition: - - - - - - - - attribute_name - - - data_type - - - reference_scope_check - - - attribute_default - - - collate_clause - - - - - - - referenced by: - - add_attribute_definition - member - - attribute_default: - - - - - - - - default_clause - - - - -
             ::= default_clause
    -
    - referenced by: - - attribute_definition - - alter_type_statement: - - - - - - - - ALTER - - - TYPE* - - - schema_resolved_user_defined_type_name - - - alter_type_action - - - - -
             ::= 'ALTER' 'TYPE*' schema_resolved_user_defined_type_name alter_type_action
    -
    - referenced by: - - SQL_schema_manipulation_statement - - alter_type_action: - - - - - - - - add_attribute_definition - - - drop_attribute_definition - - - add_original_method_specification - - - add_overriding_method_specification - - - drop_method_specification - - - - -
             ::= add_attribute_definition
    -
               | drop_attribute_definition
    -
               | add_original_method_specification
    -
               | add_overriding_method_specification
    -
               | drop_method_specification
    -
    - referenced by: - - alter_type_statement - - add_attribute_definition: - - - - - - - - ADD - - - ATTRIBUTE* - - - attribute_definition - - - - -
             ::= 'ADD' 'ATTRIBUTE*' attribute_definition
    -
    - referenced by: - - alter_type_action - - drop_attribute_definition: - - - - - - - - DROP - - - ATTRIBUTE* - - - attribute_name - - - RESTRICT - - - - -
             ::= 'DROP' 'ATTRIBUTE*' attribute_name RESTRICT
    -
    - referenced by: - - alter_type_action - - add_original_method_specification: - - - - - - - - ADD - - - original_method_specification - - - - -
             ::= 'ADD' original_method_specification
    -
    - referenced by: - - alter_type_action - - add_overriding_method_specification: - - - - - - - - ADD - - - overriding_method_specification - - - - -
             ::= 'ADD' overriding_method_specification
    -
    - referenced by: - - alter_type_action - - drop_method_specification: - - - - - - - - DROP - - - specific_method_specification_designator - - - RESTRICT - - - - - - - referenced by: - - alter_type_action - - specific_method_specification_designator: - - - - - - - - INSTANCE* - - - STATIC - - - CONSTRUCTOR - - METHOD - - - method_name - - - data_type_list - - - - -
             ::= ( 'INSTANCE*' | 'STATIC' | CONSTRUCTOR )? 'METHOD' method_name data_type_list
    -
    - referenced by: - - drop_method_specification - - drop_data_type_statement: - - - - - - - - DROP - - - TYPE* - - - schema_resolved_user_defined_type_name - - - drop_behavior - - - - -
             ::= 'DROP' 'TYPE*' schema_resolved_user_defined_type_name drop_behavior
    -
    - referenced by: - - SQL_schema_manipulation_statement - - SQL_invoked_routine: - - - - - - - - schema_routine - - - - -
             ::= schema_routine
    -
    - referenced by: - - SQL_schema_definition_statement - - schema_routine: - - - - - - - - schema_procedure - - - schema_function - - - - -
             ::= schema_procedure
    -
               | schema_function
    -
    - referenced by: - - SQL_invoked_routine - schema_element - - schema_procedure: - - - - - - - - CREATE - - - SQL_invoked_procedure - - - - -
             ::= 'CREATE' SQL_invoked_procedure
    -
    - referenced by: - - schema_routine - - schema_function: - - - - - - - - CREATE - - - SQL_invoked_function - - - - -
             ::= 'CREATE' SQL_invoked_function
    -
    - referenced by: - - schema_routine - - SQL_invoked_procedure: - - - - - - - - PROCEDURE - - - schema_qualified_routine_name - - - SQL_parameter_declaration_list - - - routine_characteristics - - - routine_body - - - - - - - referenced by: - - schema_procedure - - SQL_invoked_function: - - - - - - - - function_specification - - - method_specification_designator - - - routine_body - - - - - - - referenced by: - - schema_function - - SQL_parameter_declaration_list: - - - - - - - - ( - - - SQL_parameter_declaration - - , - - - ) - - - - - -
             ::= '(' ( SQL_parameter_declaration ( ',' SQL_parameter_declaration )* )? ')'
    -
    - referenced by: - - SQL_invoked_procedure - function_specification - method_specification_designator - partial_method_specification - - SQL_parameter_declaration: - - - - - - - - parameter_mode - - - SQL_parameter_name - - - parameter_type - - RESULT - - - - - -
             ::= parameter_mode? SQL_parameter_name? parameter_type 'RESULT'?
    -
    - referenced by: - - SQL_parameter_declaration_list - - parameter_mode: - - - - - - - - IN - - - OUT - - - INOUT - - - - - -
             ::= 'IN'
    -
               | 'OUT'
    -
               | 'INOUT'
    -
    - referenced by: - - SQL_parameter_declaration - - parameter_type: - - - - - - - - data_type - - - locator_indication - - - - -
             ::= data_type locator_indication?
    -
    - referenced by: - - SQL_parameter_declaration - - locator_indication: - - - - - - - - AS - - - LOCATOR* - - - - - -
             ::= 'AS' 'LOCATOR*'
    -
    - referenced by: - - host_parameter_data_type - parameter_type - result_cast_from_type - returns_data_type - - function_specification: - - - - - - - - FUNCTION - - - schema_qualified_routine_name - - - SQL_parameter_declaration_list - - - returns_clause - - - routine_characteristics - - - dispatch_clause - - - - - - - referenced by: - - SQL_invoked_function - - method_specification_designator: - - - - - - - - SPECIFIC - - - METHOD - - - specific_method_name - - INSTANCE* - - - STATIC - - - CONSTRUCTOR - - METHOD - - - method_name - - - SQL_parameter_declaration_list - - - returns_clause - - FOR - - - schema_resolved_user_defined_type_name - - - - -
             ::= 'SPECIFIC' 'METHOD' specific_method_name
    -
               | ( 'INSTANCE*' | 'STATIC' | CONSTRUCTOR )? 'METHOD' method_name SQL_parameter_declaration_list returns_clause? 'FOR' schema_resolved_user_defined_type_name
    -
    - referenced by: - - SQL_invoked_function - - routine_characteristics: - - - - - - - - routine_characteristic - - - - -
             ::= routine_characteristic?
    -
    - referenced by: - - SQL_invoked_procedure - function_specification - - routine_characteristic: - - - - - - - - language_clause - - - parameter_style_clause - - SPECIFIC - - - specific_name - - - deterministic_characteristic - - - SQL_data_access_indication - - - null_call_clause - - - dynamic_result_sets_characteristic - - - savepoint_level_indication - - - - -
             ::= language_clause
    -
               | parameter_style_clause
    -
               | 'SPECIFIC' specific_name
    -
               | deterministic_characteristic
    -
               | SQL_data_access_indication
    -
               | null_call_clause
    -
               | dynamic_result_sets_characteristic
    -
               | savepoint_level_indication
    -
    - referenced by: - - routine_characteristics - - savepoint_level_indication: - - - - - - - - NEW - - - OLD - - - SAVEPOINT - - - LEVEL* - - - - - -
             ::= ( 'NEW' | 'OLD' ) 'SAVEPOINT' 'LEVEL*'
    -
    - referenced by: - - routine_characteristic - - dynamic_result_sets_characteristic: - - - - - - - - DYNAMIC - - - RESULT - - - SETS* - - - maximum_dynamic_result_sets - - - - -
             ::= 'DYNAMIC' 'RESULT' 'SETS*' maximum_dynamic_result_sets
    -
    - referenced by: - - alter_routine_characteristic - routine_characteristic - - parameter_style_clause: - - - - - - - - PARAMETER - - - STYLE* - - - parameter_style - - - - -
             ::= 'PARAMETER' 'STYLE*' parameter_style
    -
    - referenced by: - - alter_routine_characteristic - external_body_reference - method_characteristic - routine_characteristic - - dispatch_clause: - - - - - - - - STATIC - - - DISPATCH* - - - - - -
             ::= 'STATIC' 'DISPATCH*'
    -
    - referenced by: - - function_specification - - returns_clause: - - - - - - - - RETURNS - - - returns_type - - - - -
             ::= 'RETURNS' returns_type
    -
    - referenced by: - - function_specification - method_specification_designator - partial_method_specification - - returns_type: - - - - - - - - returns_data_type - - - result_cast - - - returns_table_type - - - - -
             ::= returns_data_type result_cast?
    -
               | returns_table_type
    -
    - referenced by: - - returns_clause - - returns_table_type: - - - - - - - - TABLE - - - table_function_column_list - - - - -
             ::= 'TABLE' table_function_column_list
    -
    - referenced by: - - returns_type - - table_function_column_list: - - - - - - - - ( - - - table_function_column_list_element - - , - - - ) - - - - - - - - referenced by: - - returns_table_type - - table_function_column_list_element: - - - - - - - - column_name - - - data_type - - - - -
             ::= column_name data_type
    -
    - referenced by: - - table_function_column_list - - result_cast: - - - - - - - - CAST - - - FROM - - - result_cast_from_type - - - - -
             ::= 'CAST' 'FROM' result_cast_from_type
    -
    - referenced by: - - returns_type - - result_cast_from_type: - - - - - - - - data_type - - - locator_indication - - - - -
             ::= data_type locator_indication?
    -
    - referenced by: - - result_cast - - returns_data_type: - - - - - - - - data_type - - - locator_indication - - - - -
             ::= data_type locator_indication?
    -
    - referenced by: - - returns_type - - routine_body: - - - - - - - - SQL_routine_spec - - - external_body_reference - - - - -
             ::= SQL_routine_spec
    -
               | external_body_reference
    -
    - referenced by: - - SQL_invoked_function - SQL_invoked_procedure - - SQL_routine_spec: - - - - - - - - rights_clause - - - SQL_routine_body - - - - -
             ::= rights_clause? SQL_routine_body
    -
    - referenced by: - - routine_body - - rights_clause: - - - - - - - - SQL - - - SECURITY* - - - INVOKER* - - - DEFINER* - - - - - -
             ::= 'SQL' 'SECURITY*' ( 'INVOKER*' | 'DEFINER*' )
    -
    - referenced by: - - SQL_routine_spec - - SQL_routine_body: - - - - - - - - SQL_procedure_statement - - - - -
             ::= SQL_procedure_statement
    -
    - referenced by: - - SQL_routine_spec - - external_body_reference: - - - - - - - - EXTERNAL - - - NAME* - - - external_routine_name - - - parameter_style_clause - - - transform_group_specification - - - external_security_clause - - - - - - - referenced by: - - routine_body - - external_security_clause: - - - - - - - - EXTERNAL - - - SECURITY* - - - DEFINER* - - - INVOKER* - - - IMPLEMENTATION* - - - DEFINED* - - - - - -
             ::= 'EXTERNAL' 'SECURITY*' ( 'DEFINER*' | 'INVOKER*' | 'IMPLEMENTATION*' - 'DEFINED*' )
    -
    - referenced by: - - external_body_reference - - parameter_style: - - - - - - - - SQL - - - GENERAL* - - - - - -
             ::= 'SQL'
    -
               | 'GENERAL*'
    -
    - referenced by: - - parameter_style_clause - - deterministic_characteristic: - - - - - - - - NOT - - - DETERMINISTIC - - - - - -
             ::= 'NOT'? 'DETERMINISTIC'
    -
    - referenced by: - - method_characteristic - routine_characteristic - - SQL_data_access_indication: - - - - - - - - NO - - - CONTAINS* - - - SQL - - - READS - - - MODIFIES - - - SQL - - - DATA* - - - - - -
             ::= ( 'NO' | 'CONTAINS*' ) 'SQL'
    -
               | ( 'READS' | 'MODIFIES' ) 'SQL' 'DATA*'
    -
    - referenced by: - - alter_routine_characteristic - method_characteristic - routine_characteristic - - null_call_clause: - - - - - - - - RETURNS - - - NULL - - - CALLED - - - ON - - - NULL - - - INPUT - - - - - -
             ::= ( 'RETURNS' 'NULL' | 'CALLED' ) 'ON' 'NULL' 'INPUT'
    -
    - referenced by: - - alter_routine_characteristic - method_characteristic - routine_characteristic - - maximum_dynamic_result_sets: - - - - - - - - unsigned_integer - - - - -
             ::= unsigned_integer
    -
    - referenced by: - - dynamic_result_sets_characteristic - - transform_group_specification: - - - - - - - - TRANSFORM* - - - GROUP - - - single_group_specification - - - multiple_group_specification - - - - -
             ::= 'TRANSFORM*' 'GROUP' ( single_group_specification | multiple_group_specification )
    -
    - referenced by: - - embedded_transform_group_specification - external_body_reference - module_transform_group_specification - - single_group_specification: - - - - - - - - group_name - - - - -
             ::= group_name
    -
    - referenced by: - - transform_group_specification - - multiple_group_specification: - - - - - - - - group_specification - - , - - - - - -
             ::= group_specification ( ',' group_specification )*
    -
    - referenced by: - - transform_group_specification - - group_specification: - - - - - - - - group_name - - FOR - - - TYPE* - - - path_resolved_user_defined_type_name - - - - -
             ::= group_name 'FOR' 'TYPE*' path_resolved_user_defined_type_name
    -
    - referenced by: - - multiple_group_specification - - alter_routine_statement: - - - - - - - - ALTER - - - specific_routine_designator - - - alter_routine_characteristics - - - alter_routine_behavior - - - - - - - referenced by: - - SQL_schema_manipulation_statement - - alter_routine_characteristics: - - - - - - - - alter_routine_characteristic - - . - - - . - - - . - - - - - -
             ::= alter_routine_characteristic . . .
    -
    - referenced by: - - alter_routine_statement - - alter_routine_characteristic: - - - - - - - - language_clause - - - parameter_style_clause - - - SQL_data_access_indication - - - null_call_clause - - - dynamic_result_sets_characteristic - - NAME* - - - external_routine_name - - - - -
             ::= language_clause
    -
               | parameter_style_clause
    -
               | SQL_data_access_indication
    -
               | null_call_clause
    -
               | dynamic_result_sets_characteristic
    -
               | 'NAME*' external_routine_name
    -
    - referenced by: - - alter_routine_characteristics - - alter_routine_behavior: - - - - - - - - RESTRICT - - - - -
             ::= RESTRICT
    -
    - referenced by: - - alter_routine_statement - - drop_routine_statement: - - - - - - - - DROP - - - specific_routine_designator - - - drop_behavior - - - - -
             ::= 'DROP' specific_routine_designator drop_behavior
    -
    - referenced by: - - SQL_schema_manipulation_statement - - user_defined_cast_definition: - - - - - - - - CREATE - - - CAST - - - ( - - - source_data_type - - AS - - - target_data_type - - ) - - - WITH - - - cast_function - - AS - - - ASSIGNMENT* - - - - - -
             ::= 'CREATE' 'CAST' '(' source_data_type 'AS' target_data_type ')' 'WITH' cast_function ( 'AS' 'ASSIGNMENT*' )?
    -
    - referenced by: - - SQL_schema_definition_statement - schema_element - - cast_function: - - - - - - - - specific_routine_designator - - - - -
             ::= specific_routine_designator
    -
    - referenced by: - - user_defined_cast_definition - - source_data_type: - - - - - - - - data_type - - - - -
             ::= data_type
    -
    - referenced by: - - drop_user_defined_cast_statement - user_defined_cast_definition - - target_data_type: - - - - - - - - data_type - - - - -
             ::= data_type
    -
    - referenced by: - - drop_user_defined_cast_statement - user_defined_cast_definition - - drop_user_defined_cast_statement: - - - - - - - - DROP - - - CAST - - - ( - - - source_data_type - - AS - - - target_data_type - - ) - - - drop_behavior - - - - -
             ::= 'DROP' 'CAST' '(' source_data_type 'AS' target_data_type ')' drop_behavior
    -
    - referenced by: - - SQL_schema_manipulation_statement - - user_defined_ordering_definition: - - - - - - - - CREATE - - - ORDERING* - - - FOR - - - schema_resolved_user_defined_type_name - - - ordering_form - - - - -
             ::= 'CREATE' 'ORDERING*' 'FOR' schema_resolved_user_defined_type_name ordering_form
    -
    - referenced by: - - SQL_schema_definition_statement - schema_element - - ordering_form: - - - - - - - - equals_ordering_form - - - full_ordering_form - - - - -
             ::= equals_ordering_form
    -
               | full_ordering_form
    -
    - referenced by: - - user_defined_ordering_definition - - equals_ordering_form: - - - - - - - - EQUALS* - - - ONLY - - - BY - - - ordering_category - - - - -
             ::= 'EQUALS*' 'ONLY' 'BY' ordering_category
    -
    - referenced by: - - ordering_form - - full_ordering_form: - - - - - - - - ORDER - - - FULL - - - BY - - - ordering_category - - - - -
             ::= 'ORDER' 'FULL' 'BY' ordering_category
    -
    - referenced by: - - ordering_form - - ordering_category: - - - - - - - - relative_category - - - map_category - - - state_category - - - - -
             ::= relative_category
    -
               | map_category
    -
               | state_category
    -
    - referenced by: - - equals_ordering_form - full_ordering_form - - relative_category: - - - - - - - - RELATIVE* - - - WITH - - - relative_function_specification - - - - -
             ::= 'RELATIVE*' 'WITH' relative_function_specification
    -
    - referenced by: - - ordering_category - - map_category: - - - - - - - - MAP* - - - WITH - - - map_function_specification - - - - -
             ::= 'MAP*' 'WITH' map_function_specification
    -
    - referenced by: - - ordering_category - - state_category: - - - - - - - - STATE* - - - specific_name - - - - -
             ::= 'STATE*' specific_name?
    -
    - referenced by: - - ordering_category - - relative_function_specification: - - - - - - - - specific_routine_designator - - - - -
             ::= specific_routine_designator
    -
    - referenced by: - - relative_category - - map_function_specification: - - - - - - - - specific_routine_designator - - - - -
             ::= specific_routine_designator
    -
    - referenced by: - - map_category - - drop_user_defined_ordering_statement: - - - - - - - - DROP - - - ORDERING* - - - FOR - - - schema_resolved_user_defined_type_name - - - drop_behavior - - - - -
             ::= 'DROP' 'ORDERING*' 'FOR' schema_resolved_user_defined_type_name drop_behavior
    -
    - referenced by: - - SQL_schema_manipulation_statement - - transform_definition: - - - - - - - - CREATE - - - TRANSFORM* - - - TRANSFORMS* - - - FOR - - - schema_resolved_user_defined_type_name - - - transform_group - - . - - - . - - - . - - - - - -
             ::= 'CREATE' ( 'TRANSFORM*' | 'TRANSFORMS*' ) 'FOR' schema_resolved_user_defined_type_name transform_group . . .
    -
    - referenced by: - - SQL_schema_definition_statement - schema_element - - transform_group: - - - - - - - - group_name - - ( - - - transform_element_list - - ) - - - - - -
             ::= group_name '(' transform_element_list ')'
    -
    - referenced by: - - transform_definition - - group_name: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - alter_group - group_specification - single_group_specification - transform_group - transform_group_element - - transform_element_list: - - - - - - - - transform_element - - , - - - transform_element - - - - -
             ::= transform_element ( ',' transform_element )?
    -
    - referenced by: - - add_transform_element_list - transform_group - - transform_element: - - - - - - - - to_sql - - - from_sql - - - - -
             ::= to_sql
    -
               | from_sql
    -
    - referenced by: - - transform_element_list - - to_sql: - - - - - - - - TO - - - SQL - - - WITH - - - to_sql_function - - - -
    to_sql   ::= 'TO' 'SQL' 'WITH' to_sql_function
    -
    - referenced by: - - transform_element - - from_sql: - - - - - - - - FROM - - - SQL - - - WITH - - - from_sql_function - - - -
    from_sql ::= 'FROM' 'SQL' 'WITH' from_sql_function
    -
    - referenced by: - - transform_element - - to_sql_function: - - - - - - - - specific_routine_designator - - - - -
             ::= specific_routine_designator
    -
    - referenced by: - - to_sql - - from_sql_function: - - - - - - - - specific_routine_designator - - - - -
             ::= specific_routine_designator
    -
    - referenced by: - - from_sql - - alter_transform_statement: - - - - - - - - ALTER - - - TRANSFORM* - - - TRANSFORMS* - - - FOR - - - schema_resolved_user_defined_type_name - - - alter_group - - . - - - . - - - . - - - - - -
             ::= 'ALTER' ( 'TRANSFORM*' | 'TRANSFORMS*' ) 'FOR' schema_resolved_user_defined_type_name alter_group . . .
    -
    - referenced by: - - SQL_schema_manipulation_statement - - alter_group: - - - - - - - - group_name - - ( - - - alter_transform_action_list - - ) - - - - - -
             ::= group_name '(' alter_transform_action_list ')'
    -
    - referenced by: - - alter_transform_statement - - alter_transform_action_list: - - - - - - - - alter_transform_action - - , - - - - - -
             ::= alter_transform_action ( ',' alter_transform_action )*
    -
    - referenced by: - - alter_group - - alter_transform_action: - - - - - - - - add_transform_element_list - - - drop_transform_element_list - - - - -
             ::= add_transform_element_list
    -
               | drop_transform_element_list
    -
    - referenced by: - - alter_transform_action_list - - add_transform_element_list: - - - - - - - - ADD - - - ( - - - transform_element_list - - ) - - - - - -
             ::= 'ADD' '(' transform_element_list ')'
    -
    - referenced by: - - alter_transform_action - - drop_transform_element_list: - - - - - - - - DROP - - - ( - - - transform_kind - - , - - - transform_kind - - - drop_behavior - - ) - - - - - -
             ::= 'DROP' '(' transform_kind ( ',' transform_kind )? drop_behavior ')'
    -
    - referenced by: - - alter_transform_action - - transform_kind: - - - - - - - - TO - - - FROM - - - SQL - - - - - -
             ::= ( 'TO' | 'FROM' ) 'SQL'
    -
    - referenced by: - - drop_transform_element_list - - drop_transform_statement: - - - - - - - - DROP - - - TRANSFORM* - - - TRANSFORMS* - - - transforms_to_be_dropped - - FOR - - - schema_resolved_user_defined_type_name - - - drop_behavior - - - - -
             ::= 'DROP' ( 'TRANSFORM*' | 'TRANSFORMS*' ) transforms_to_be_dropped 'FOR' schema_resolved_user_defined_type_name drop_behavior
    -
    - referenced by: - - SQL_schema_manipulation_statement - - transforms_to_be_dropped: - - - - - - - - ALL - - - transform_group_element - - - - -
             ::= 'ALL'
    -
               | transform_group_element
    -
    - referenced by: - - drop_transform_statement - - transform_group_element: - - - - - - - - group_name - - - - -
             ::= group_name
    -
    - referenced by: - - transforms_to_be_dropped - - sequence_generator_definition: - - - - - - - - CREATE - - - SEQUENCE* - - - sequence_generator_name - - - sequence_generator_options - - - - -
             ::= 'CREATE' 'SEQUENCE*' sequence_generator_name sequence_generator_options?
    -
    - referenced by: - - SQL_schema_definition_statement - schema_element - - sequence_generator_options: - - - - - - - - sequence_generator_option - - . - - - . - - - . - - - - - -
             ::= sequence_generator_option . . .
    -
    - referenced by: - - sequence_generator_definition - - sequence_generator_option: - - - - - - - - sequence_generator_data_type_option - - - common_sequence_generator_options - - - - - -
               | common_sequence_generator_options
    -
    - referenced by: - - sequence_generator_options - - common_sequence_generator_options: - - - - - - - - common_sequence_generator_option - - . - - - . - - - . - - - - - -
             ::= common_sequence_generator_option . . .
    -
    - referenced by: - - identity_column_specification - sequence_generator_option - - common_sequence_generator_option: - - - - - - - - sequence_generator_start_with_option - - - basic_sequence_generator_option - - - - - -
               | basic_sequence_generator_option
    -
    - referenced by: - - common_sequence_generator_options - - basic_sequence_generator_option: - - - - - - - - sequence_generator_increment_by_option - - - sequence_generator_maxvalue_option - - - sequence_generator_minvalue_option - - - sequence_generator_cycle_option - - - - - -
               | sequence_generator_maxvalue_option
    -
               | sequence_generator_minvalue_option
    -
               | sequence_generator_cycle_option
    -
    - referenced by: - - alter_identity_column_option - alter_sequence_generator_option - common_sequence_generator_option - - sequence_generator_data_type_option: - - - - - - - - AS - - - data_type - - - - -
             ::= 'AS' data_type
    -
    - referenced by: - - sequence_generator_option - - sequence_generator_start_with_option: - - - - - - - - START - - - WITH - - - sequence_generator_start_value - - - - -
             ::= 'START' 'WITH' sequence_generator_start_value
    -
    - referenced by: - - common_sequence_generator_option - - sequence_generator_start_value: - - - - - - - - signed_numeric_literal - - - - -
             ::= signed_numeric_literal
    -
    - referenced by: - - sequence_generator_start_with_option - - sequence_generator_increment_by_option: - - - - - - - - INCREMENT* - - - BY - - - sequence_generator_increment - - - - -
             ::= 'INCREMENT*' 'BY' sequence_generator_increment
    -
    - referenced by: - - basic_sequence_generator_option - - sequence_generator_increment: - - - - - - - - signed_numeric_literal - - - - -
             ::= signed_numeric_literal
    -
    - referenced by: - - sequence_generator_increment_by_option - - sequence_generator_maxvalue_option: - - - - - - - - MAXVALUE* - - - sequence_generator_max_value - - NO - - - MAXVALUE* - - - - - -
             ::= 'MAXVALUE*' sequence_generator_max_value
    -
               | 'NO' 'MAXVALUE*'
    -
    - referenced by: - - basic_sequence_generator_option - - sequence_generator_max_value: - - - - - - - - signed_numeric_literal - - - - -
             ::= signed_numeric_literal
    -
    - referenced by: - - sequence_generator_maxvalue_option - - sequence_generator_minvalue_option: - - - - - - - - MINVALUE* - - - sequence_generator_min_value - - NO - - - MINVALUE* - - - - - -
             ::= 'MINVALUE*' sequence_generator_min_value
    -
               | 'NO' 'MINVALUE*'
    -
    - referenced by: - - basic_sequence_generator_option - - sequence_generator_min_value: - - - - - - - - signed_numeric_literal - - - - -
             ::= signed_numeric_literal
    -
    - referenced by: - - sequence_generator_minvalue_option - - sequence_generator_cycle_option: - - - - - - - - NO - - - CYCLE - - - - - -
             ::= 'NO'? 'CYCLE'
    -
    - referenced by: - - basic_sequence_generator_option - - alter_sequence_generator_statement: - - - - - - - - ALTER - - - SEQUENCE* - - - sequence_generator_name - - - alter_sequence_generator_options - - - - -
             ::= 'ALTER' 'SEQUENCE*' sequence_generator_name alter_sequence_generator_options
    -
    - referenced by: - - SQL_schema_manipulation_statement - - alter_sequence_generator_options: - - - - - - - - alter_sequence_generator_option - - . - - - . - - - . - - - - - -
             ::= alter_sequence_generator_option . . .
    -
    - referenced by: - - alter_sequence_generator_statement - - alter_sequence_generator_option: - - - - - - - - alter_sequence_generator_restart_option - - - basic_sequence_generator_option - - - - - -
               | basic_sequence_generator_option
    -
    - referenced by: - - alter_sequence_generator_options - - alter_sequence_generator_restart_option: - - - - - - - - RESTART* - - - WITH - - - sequence_generator_restart_value - - - - -
             ::= 'RESTART*' 'WITH' sequence_generator_restart_value
    -
    - referenced by: - - alter_identity_column_option - alter_sequence_generator_option - - sequence_generator_restart_value: - - - - - - - - signed_numeric_literal - - - - -
             ::= signed_numeric_literal
    -
    - referenced by: - - alter_sequence_generator_restart_option - - drop_sequence_generator_statement: - - - - - - - - DROP - - - SEQUENCE* - - - sequence_generator_name - - - drop_behavior - - - - -
             ::= 'DROP' 'SEQUENCE*' sequence_generator_name drop_behavior
    -
    - referenced by: - - SQL_schema_manipulation_statement - - grant_statement: - - - - - - - - grant_privilege_statement - - - grant_role_statement - - - - -
             ::= grant_privilege_statement
    -
               | grant_role_statement
    -
    - referenced by: - - SQL_schema_definition_statement - schema_element - - grant_privilege_statement: - - - - - - - - GRANT - - - privileges - - TO - - - grantee - - , - - - WITH - - - HIERARCHY* - - - OPTION* - - - WITH - - - GRANT - - - OPTION* - - - GRANTED* - - - BY - - - grantor - - - - -
             ::= 'GRANT' privileges 'TO' grantee ( ',' grantee )* ( 'WITH' 'HIERARCHY*' 'OPTION*' )? ( 'WITH' 'GRANT' 'OPTION*' )? ( 'GRANTED*' - 'BY' grantor )?
    -
    - referenced by: - - grant_statement - - privileges: - - - - - - - - object_privileges - - ON - - - object_name - - - - -
             ::= object_privileges 'ON' object_name
    -
    - referenced by: - - grant_privilege_statement - revoke_privilege_statement - - object_name: - - - - - - - - TABLE - - - table_name - - DOMAIN* - - - domain_name - - COLLATION* - - - collation_name - - CHARACTER - - - SET - - - character_set_name - - TRANSLATION - - - transliteration_name - - TYPE* - - - schema_resolved_user_defined_type_name - - SEQUENCE* - - - sequence_generator_name - - - specific_routine_designator - - - - -
             ::= 'TABLE'? table_name
    -
               | 'DOMAIN*' domain_name
    -
               | 'COLLATION*' collation_name
    -
               | 'CHARACTER' 'SET' character_set_name
    -
               | 'TRANSLATION' transliteration_name
    -
               | 'TYPE*' schema_resolved_user_defined_type_name
    -
               | 'SEQUENCE*' sequence_generator_name
    -
               | specific_routine_designator
    -
    - referenced by: - - privileges - - object_privileges: - - - - - - - - ALL - - - PRIVILEGES* - - - action - - , - - - - - -
             ::= 'ALL' 'PRIVILEGES*'
    -
               | action ( ',' action )*
    -
    - referenced by: - - privileges - - action: - - - - - - - - SELECT - - - ( - - - privilege_column_list - - - privilege_method_list - - ) - - - DELETE - - - INSERT - - - UPDATE - - - REFERENCES - - - ( - - - privilege_column_list - - ) - - - USAGE* - - - TRIGGER - - - UNDER* - - - EXECUTE - - - - -
    action   ::= 'SELECT' ( '(' ( privilege_column_list | privilege_method_list ) ')' )?
    -
               | 'DELETE'
    -
               | ( 'INSERT' | 'UPDATE' | 'REFERENCES' ) ( '(' privilege_column_list ')' )?
    -
               | 'USAGE*'
    -
               | 'TRIGGER'
    -
               | 'UNDER*'
    -
               | 'EXECUTE'
    -
    - referenced by: - - object_privileges - - privilege_method_list: - - - - - - - - specific_routine_designator - - , - - - - - - - - referenced by: - - action - - privilege_column_list: - - - - - - - - column_name_list - - - - -
             ::= column_name_list
    -
    - referenced by: - - action - - grantee: - - - - - - - - PUBLIC* - - - authorization_identifier - - - -
    grantee  ::= 'PUBLIC*'
    -
               | authorization_identifier
    -
    - referenced by: - - grant_privilege_statement - grant_role_statement - revoke_privilege_statement - revoke_role_statement - - grantor: - - - - - - - - CURRENT_USER - - - CURRENT_ROLE - - - - -
    grantor  ::= 'CURRENT_USER'
    -
               | 'CURRENT_ROLE'
    -
    - referenced by: - - grant_privilege_statement - grant_role_statement - revoke_privilege_statement - revoke_role_statement - role_definition - - role_definition: - - - - - - - - CREATE - - - ROLE* - - - role_name - - WITH - - - ADMIN* - - - grantor - - - - -
             ::= 'CREATE' 'ROLE*' role_name ( 'WITH' 'ADMIN*' grantor )?
    -
    - referenced by: - - SQL_schema_definition_statement - schema_element - - grant_role_statement: - - - - - - - - GRANT - - - role_granted - - , - - - TO - - - grantee - - , - - - WITH - - - ADMIN* - - - OPTION* - - - GRANTED* - - - BY - - - grantor - - - - -
             ::= 'GRANT' role_granted ( ',' role_granted )* 'TO' grantee ( ',' grantee )* ( 'WITH' 'ADMIN*' 'OPTION*' )? ( 'GRANTED*' 'BY' grantor )?
    -
    - referenced by: - - grant_statement - - role_granted: - - - - - - - - role_name - - - - -
             ::= role_name
    -
    - referenced by: - - grant_role_statement - - drop_role_statement: - - - - - - - - DROP - - - ROLE* - - - role_name - - - - -
             ::= 'DROP' 'ROLE*' role_name
    -
    - referenced by: - - SQL_schema_manipulation_statement - - revoke_statement: - - - - - - - - revoke_privilege_statement - - - revoke_role_statement - - - - -
             ::= revoke_privilege_statement
    -
               | revoke_role_statement
    -
    - referenced by: - - SQL_schema_manipulation_statement - - revoke_privilege_statement: - - - - - - - - REVOKE - - - revoke_option_extension - - - privileges - - FROM - - - grantee - - , - - - GRANTED* - - - BY - - - grantor - - - drop_behavior - - - - -
             ::= 'REVOKE' revoke_option_extension? privileges 'FROM' grantee ( ',' grantee )* ( 'GRANTED*' 'BY' grantor )? drop_behavior
    -
    - referenced by: - - revoke_statement - - revoke_option_extension: - - - - - - - - GRANT - - - HIERARCHY* - - - OPTION* - - - FOR - - - - - -
             ::= ( 'GRANT' | 'HIERARCHY*' ) 'OPTION*' 'FOR'
    -
    - referenced by: - - revoke_privilege_statement - - revoke_role_statement: - - - - - - - - REVOKE - - - ADMIN* - - - OPTION* - - - FOR - - - role_revoked - - , - - - FROM - - - grantee - - , - - - GRANTED* - - - BY - - - grantor - - - drop_behavior - - - - -
             ::= 'REVOKE' ( 'ADMIN*' 'OPTION*' 'FOR' )? role_revoked ( ',' role_revoked )* 'FROM' grantee ( ',' grantee )* ( 'GRANTED*' 'BY' grantor )? drop_behavior
    -
    - referenced by: - - revoke_statement - - role_revoked: - - - - - - - - role_name - - - - -
             ::= role_name
    -
    - referenced by: - - revoke_role_statement - - SQL_client_module_definition: - - - - - - - - module_name_clause - - - language_clause - - - module_authorization_clause - - - module_path_specification - - - module_transform_group_specification - - - module_collation - - - temporary_table_declaration - - - module_contents - - - - - - - no referencesmodule_authorization_clause: - - - - - - - - SCHEMA* - - - schema_name - - AUTHORIZATION - - - module_authorization_identifier - - FOR - - - STATIC - - - ONLY - - - AND - - - DYNAMIC - - - AUTHORIZATION - - - module_authorization_identifier - - FOR - - - STATIC - - - ONLY - - - AND - - - DYNAMIC - - - - - -
             ::= 'SCHEMA*' schema_name ( 'AUTHORIZATION' module_authorization_identifier ( 'FOR' 'STATIC' ( 'ONLY' | 'AND' 'DYNAMIC' ) )? )?
    -
               | 'AUTHORIZATION' module_authorization_identifier ( 'FOR' 'STATIC' ( 'ONLY' | 'AND' 'DYNAMIC' ) )?
    -
    - referenced by: - - SQL_client_module_definition - - module_authorization_identifier: - - - - - - - - authorization_identifier - - - - -
             ::= authorization_identifier
    -
    - referenced by: - - embedded_authorization_identifier - module_authorization_clause - - module_path_specification: - - - - - - - - path_specification - - - - -
             ::= path_specification
    -
    - referenced by: - - SQL_client_module_definition - - module_transform_group_specification: - - - - - - - - transform_group_specification - - - - -
             ::= transform_group_specification
    -
    - referenced by: - - SQL_client_module_definition - - module_collation: - - - - - - - - module_collation_specification - - . - - - . - - - . - - - - - -
             ::= module_collation_specification . . .
    -
    - referenced by: - - SQL_client_module_definition - embedded_collation_specification - - module_collation_specification: - - - - - - - - COLLATION* - - - collation_name - - FOR - - - character_set_specification_list - - - - -
             ::= 'COLLATION*' collation_name ( 'FOR' character_set_specification_list )?
    -
    - referenced by: - - module_collation - - character_set_specification_list: - - - - - - - - character_set_specification - - , - - - - - - - - referenced by: - - module_collation_specification - set_session_collation_statement - - module_contents: - - - - - - - - declare_cursor - - - dynamic_declare_cursor - - - externally_invoked_procedure - - - - -
             ::= declare_cursor
    -
               | dynamic_declare_cursor
    -
               | externally_invoked_procedure
    -
    - referenced by: - - SQL_client_module_definition - - module_name_clause: - - - - - - - - MODULE - - - SQL_client_module_name - - - module_character_set_specification - - - - - - - referenced by: - - SQL_client_module_definition - - module_character_set_specification: - - - - - - - - NAMES* - - - ARE - - - character_set_specification - - - - -
             ::= 'NAMES*' 'ARE' character_set_specification
    -
    - referenced by: - - module_name_clause - - externally_invoked_procedure: - - - - - - - - PROCEDURE - - - procedure_name - - - host_parameter_declaration_list - - ; - - - SQL_procedure_statement - - ; - - - - - - - - referenced by: - - module_contents - - host_parameter_declaration_list: - - - - - - - - ( - - - host_parameter_declaration - - , - - - ) - - - - - -
             ::= '(' host_parameter_declaration ( ',' host_parameter_declaration )* ')'
    -
    - referenced by: - - externally_invoked_procedure - - host_parameter_declaration: - - - - - - - - host_parameter_name - - - host_parameter_data_type - - SQLSTATE - - - - - - -
               | 'SQLSTATE'
    -
    - referenced by: - - host_parameter_declaration_list - - host_parameter_data_type: - - - - - - - - data_type - - - locator_indication - - - - -
             ::= data_type locator_indication?
    -
    - referenced by: - - host_parameter_declaration - - SQL_procedure_statement: - - - - - - - - SQL_executable_statement - - - - -
             ::= SQL_executable_statement
    -
    - referenced by: - - SQL_routine_body - externally_invoked_procedure - statement_or_declaration - triggered_SQL_statement - - SQL_executable_statement: - - - - - - - - SQL_schema_statement - - - SQL_data_statement - - - SQL_control_statement - - - SQL_transaction_statement - - - SQL_connection_statement - - - SQL_session_statement - - - SQL_diagnostics_statement - - - SQL_dynamic_statement - - - - -
             ::= SQL_schema_statement
    -
               | SQL_data_statement
    -
               | SQL_control_statement
    -
               | SQL_transaction_statement
    -
               | SQL_connection_statement
    -
               | SQL_session_statement
    -
               | SQL_diagnostics_statement
    -
               | SQL_dynamic_statement
    -
    - referenced by: - - SQL_procedure_statement - - SQL_schema_statement: - - - - - - - - SQL_schema_definition_statement - - - SQL_schema_manipulation_statement - - - - -
             ::= SQL_schema_definition_statement
    -
               | SQL_schema_manipulation_statement
    -
    - referenced by: - - SQL_executable_statement - directly_executable_statement - preparable_SQL_schema_statement - - SQL_schema_definition_statement: - - - - - - - - schema_definition - - - table_definition - - - view_definition - - - SQL_invoked_routine - - - grant_statement - - - role_definition - - - domain_definition - - - character_set_definition - - - collation_definition - - - transliteration_definition - - - assertion_definition - - - trigger_definition - - - user_defined_type_definition - - - user_defined_cast_definition - - - user_defined_ordering_definition - - - transform_definition - - - sequence_generator_definition - - - - -
             ::= schema_definition
    -
               | table_definition
    -
               | view_definition
    -
               | SQL_invoked_routine
    -
               | grant_statement
    -
               | role_definition
    -
               | domain_definition
    -
               | character_set_definition
    -
               | collation_definition
    -
               | transliteration_definition
    -
               | assertion_definition
    -
               | trigger_definition
    -
               | user_defined_type_definition
    -
               | user_defined_cast_definition
    -
               | user_defined_ordering_definition
    -
               | transform_definition
    -
               | sequence_generator_definition
    -
    - referenced by: - - SQL_schema_statement - - SQL_schema_manipulation_statement: - - - - - - - - drop_schema_statement - - - alter_table_statement - - - drop_table_statement - - - drop_view_statement - - - alter_routine_statement - - - drop_routine_statement - - - drop_user_defined_cast_statement - - - revoke_statement - - - drop_role_statement - - - alter_domain_statement - - - drop_domain_statement - - - drop_character_set_statement - - - drop_collation_statement - - - drop_transliteration_statement - - - drop_assertion_statement - - - drop_trigger_statement - - - alter_type_statement - - - drop_data_type_statement - - - drop_user_defined_ordering_statement - - - alter_transform_statement - - - drop_transform_statement - - - alter_sequence_generator_statement - - - drop_sequence_generator_statement - - - - -
             ::= drop_schema_statement
    -
               | alter_table_statement
    -
               | drop_table_statement
    -
               | drop_view_statement
    -
               | alter_routine_statement
    -
               | drop_routine_statement
    -
               | drop_user_defined_cast_statement
    -
               | revoke_statement
    -
               | drop_role_statement
    -
               | alter_domain_statement
    -
               | drop_domain_statement
    -
               | drop_character_set_statement
    -
               | drop_collation_statement
    -
               | drop_transliteration_statement
    -
               | drop_assertion_statement
    -
               | drop_trigger_statement
    -
               | alter_type_statement
    -
               | drop_data_type_statement
    -
               | drop_user_defined_ordering_statement
    -
               | alter_transform_statement
    -
               | drop_transform_statement
    -
               | alter_sequence_generator_statement
    -
               | drop_sequence_generator_statement
    -
    - referenced by: - - SQL_schema_statement - - SQL_data_statement: - - - - - - - - open_statement - - - fetch_statement - - - close_statement - - - select_statement__single_row - - - free_locator_statement - - - hold_locator_statement - - - SQL_data_change_statement - - - - -
             ::= open_statement
    -
               | fetch_statement
    -
               | close_statement
    -
               | select_statement__single_row
    -
               | free_locator_statement
    -
               | hold_locator_statement
    -
               | SQL_data_change_statement
    -
    - referenced by: - - SQL_executable_statement - - SQL_data_change_statement: - - - - - - - - delete_statement__positioned - - - delete_statement__searched - - - insert_statement - - - update_statement__positioned - - - update_statement__searched - - - merge_statement - - - - -
             ::= delete_statement__positioned
    -
               | delete_statement__searched
    -
               | insert_statement
    -
               | update_statement__positioned
    -
               | update_statement__searched
    -
               | merge_statement
    -
    - referenced by: - - SQL_data_statement - - SQL_control_statement: - - - - - - - - call_statement - - - return_statement - - - - -
             ::= call_statement
    -
               | return_statement
    -
    - referenced by: - - SQL_executable_statement - preparable_SQL_control_statement - - SQL_transaction_statement: - - - - - - - - start_transaction_statement - - - set_transaction_statement - - - set_constraints_mode_statement - - - savepoint_statement - - - release_savepoint_statement - - - commit_statement - - - rollback_statement - - - - -
             ::= start_transaction_statement
    -
               | set_transaction_statement
    -
               | set_constraints_mode_statement
    -
               | savepoint_statement
    -
               | release_savepoint_statement
    -
               | commit_statement
    -
               | rollback_statement
    -
    - referenced by: - - SQL_executable_statement - directly_executable_statement - preparable_SQL_transaction_statement - - SQL_connection_statement: - - - - - - - - connect_statement - - - set_connection_statement - - - disconnect_statement - - - - -
             ::= connect_statement
    -
               | set_connection_statement
    -
               | disconnect_statement
    -
    - referenced by: - - SQL_executable_statement - directly_executable_statement - - SQL_session_statement: - - - - - - - - set_session_user_identifier_statement - - - set_role_statement - - - set_local_time_zone_statement - - - set_session_characteristics_statement - - - set_catalog_statement - - - set_schema_statement - - - set_names_statement - - - set_path_statement - - - set_transform_group_statement - - - set_session_collation_statement - - - - - -
               | set_role_statement
    -
               | set_local_time_zone_statement
    - -
               | set_catalog_statement
    -
               | set_schema_statement
    -
               | set_names_statement
    -
               | set_path_statement
    -
               | set_transform_group_statement
    -
               | set_session_collation_statement
    -
    - referenced by: - - SQL_executable_statement - directly_executable_statement - preparable_SQL_session_statement - - SQL_diagnostics_statement: - - - - - - - - get_diagnostics_statement - - - - -
             ::= get_diagnostics_statement
    -
    - referenced by: - - SQL_executable_statement - - SQL_dynamic_statement: - - - - - - - - system_descriptor_statement - - - prepare_statement - - - deallocate_prepared_statement - - - describe_statement - - - execute_statement - - - execute_immediate_statement - - - SQL_dynamic_data_statement - - - - -
             ::= system_descriptor_statement
    -
               | prepare_statement
    -
               | deallocate_prepared_statement
    -
               | describe_statement
    -
               | execute_statement
    -
               | execute_immediate_statement
    -
               | SQL_dynamic_data_statement
    -
    - referenced by: - - SQL_executable_statement - - SQL_dynamic_data_statement: - - - - - - - - allocate_cursor_statement - - - dynamic_open_statement - - - dynamic_fetch_statement - - - dynamic_close_statement - - - dynamic_delete_statement__positioned - - - dynamic_update_statement__positioned - - - - -
             ::= allocate_cursor_statement
    -
               | dynamic_open_statement
    -
               | dynamic_fetch_statement
    -
               | dynamic_close_statement
    -
               | dynamic_delete_statement__positioned
    -
               | dynamic_update_statement__positioned
    -
    - referenced by: - - SQL_dynamic_statement - - system_descriptor_statement: - - - - - - - - allocate_descriptor_statement - - - deallocate_descriptor_statement - - - set_descriptor_statement - - - get_descriptor_statement - - - - -
             ::= allocate_descriptor_statement
    -
               | deallocate_descriptor_statement
    -
               | set_descriptor_statement
    -
               | get_descriptor_statement
    -
    - referenced by: - - SQL_dynamic_statement - - declare_cursor: - - - - - - - - DECLARE - - - cursor_name - - - cursor_sensitivity - - - cursor_scrollability - - CURSOR - - - cursor_holdability - - - cursor_returnability - - FOR - - - cursor_specification - - - - - - - referenced by: - - module_contents - statement_or_declaration - - cursor_sensitivity: - - - - - - - - SENSITIVE - - - INSENSITIVE - - - ASENSITIVE - - - - - -
             ::= 'SENSITIVE'
    -
               | 'INSENSITIVE'
    -
               | 'ASENSITIVE'
    -
    - referenced by: - - cursor_attribute - declare_cursor - dynamic_declare_cursor - statement_cursor - - cursor_scrollability: - - - - - - - - NO - - - SCROLL - - - - - -
             ::= 'NO'? 'SCROLL'
    -
    - referenced by: - - cursor_attribute - declare_cursor - dynamic_declare_cursor - statement_cursor - - cursor_holdability: - - - - - - - - WITH - - - WITHOUT - - - HOLD - - - - - -
             ::= ( 'WITH' | 'WITHOUT' ) 'HOLD'
    -
    - referenced by: - - cursor_attribute - declare_cursor - dynamic_declare_cursor - statement_cursor - - cursor_returnability: - - - - - - - - WITH - - - WITHOUT - - - RETURN - - - - - -
             ::= ( 'WITH' | 'WITHOUT' ) 'RETURN'
    -
    - referenced by: - - cursor_attribute - declare_cursor - dynamic_declare_cursor - statement_cursor - - cursor_specification: - - - - - - - - query_expression - - - order_by_clause - - - updatability_clause - - - - - - - referenced by: - - declare_cursor - direct_select_statement__multiple_rows - dynamic_select_statement - - updatability_clause: - - - - - - - - FOR - - - READ* - - - ONLY - - - UPDATE - - - OF - - - column_name_list - - - - -
             ::= 'FOR' ( 'READ*' 'ONLY' | 'UPDATE' ( 'OF' column_name_list )? )
    -
    - referenced by: - - cursor_specification - - order_by_clause: - - - - - - - - ORDER - - - BY - - - sort_specification_list - - - - -
             ::= 'ORDER' 'BY' sort_specification_list
    -
    - referenced by: - - array_value_constructor_by_query - cursor_specification - - open_statement: - - - - - - - - OPEN - - - cursor_name - - - - -
             ::= 'OPEN' cursor_name
    -
    - referenced by: - - SQL_data_statement - - fetch_statement: - - - - - - - - FETCH - - - fetch_orientation - - FROM - - - cursor_name - - INTO - - - fetch_target_list - - - - -
             ::= 'FETCH' ( fetch_orientation? 'FROM' )? cursor_name 'INTO' fetch_target_list
    -
    - referenced by: - - SQL_data_statement - - fetch_orientation: - - - - - - - - NEXT* - - - PRIOR* - - - FIRST* - - - LAST* - - - ABSOLUTE* - - - RELATIVE* - - - simple_value_specification - - - - -
             ::= 'NEXT*'
    -
               | 'PRIOR*'
    -
               | 'FIRST*'
    -
               | 'LAST*'
    -
               | ( 'ABSOLUTE*' | 'RELATIVE*' ) simple_value_specification
    -
    - referenced by: - - dynamic_fetch_statement - fetch_statement - - fetch_target_list: - - - - - - - - target_specification - - , - - - - - -
             ::= target_specification ( ',' target_specification )*
    -
    - referenced by: - - fetch_statement - - close_statement: - - - - - - - - CLOSE - - - cursor_name - - - - -
             ::= 'CLOSE' cursor_name
    -
    - referenced by: - - SQL_data_statement - - select_statement__single_row: - - - - - - - - SELECT - - - set_quantifier - - - select_list - - INTO - - - select_target_list - - - table_expression - - - - -
             ::= 'SELECT' set_quantifier? select_list 'INTO' select_target_list table_expression
    -
    - referenced by: - - SQL_data_statement - - select_target_list: - - - - - - - - target_specification - - , - - - - - -
             ::= target_specification ( ',' target_specification )*
    -
    - referenced by: - - select_statement__single_row - - delete_statement__positioned: - - - - - - - - DELETE - - - FROM - - - target_table - - WHERE - - - CURRENT - - - OF - - - cursor_name - - - - -
             ::= 'DELETE' 'FROM' target_table 'WHERE' 'CURRENT' 'OF' cursor_name
    -
    - referenced by: - - SQL_data_change_statement - - target_table: - - - - - - - - table_name - - ONLY - - - ( - - - table_name - - ) - - - - - -
             ::= table_name
    -
               | 'ONLY' '(' table_name ')'
    -
    - referenced by: - - delete_statement__positioned - delete_statement__searched - dynamic_delete_statement__positioned - dynamic_update_statement__positioned - merge_statement - preparable_dynamic_delete_statement__positioned - preparable_dynamic_update_statement__positioned - update_statement__positioned - update_statement__searched - - delete_statement__searched: - - - - - - - - DELETE - - - FROM - - - target_table - - WHERE - - - search_condition - - - - -
             ::= 'DELETE' 'FROM' target_table ( 'WHERE' search_condition )?
    -
    - referenced by: - - SQL_data_change_statement - direct_SQL_data_statement - preparable_SQL_data_statement - - insert_statement: - - - - - - - - INSERT - - - INTO - - - insertion_target - - - insert_columns_and_source - - - - -
             ::= 'INSERT' 'INTO' insertion_target insert_columns_and_source
    -
    - referenced by: - - SQL_data_change_statement - direct_SQL_data_statement - preparable_SQL_data_statement - - insertion_target: - - - - - - - - table_name - - - - -
             ::= table_name
    -
    - referenced by: - - insert_statement - - insert_columns_and_source: - - - - - - - - from_subquery - - - from_constructor - - - from_default - - - - -
             ::= from_subquery
    -
               | from_constructor
    -
               | from_default
    -
    - referenced by: - - insert_statement - - from_subquery: - - - - - - - - ( - - - insert_column_list - - ) - - - override_clause - - - query_expression - - - - -
             ::= ( '(' insert_column_list ')' )? override_clause query_expression
    -
    - referenced by: - - insert_columns_and_source - - from_constructor: - - - - - - - - ( - - - insert_column_list - - ) - - - override_clause - - - contextually_typed_table_value_constructor - - - - - - - referenced by: - - insert_columns_and_source - - override_clause: - - - - - - - - OVERRIDING* - - - USER - - - SYSTEM - - - VALUE - - - - - -
             ::= 'OVERRIDING*' ( 'USER' | 'SYSTEM' ) 'VALUE'
    -
    - referenced by: - - from_constructor - from_subquery - merge_insert_specification - - from_default: - - - - - - - - DEFAULT - - - VALUES - - - - - -
             ::= 'DEFAULT' 'VALUES'
    -
    - referenced by: - - insert_columns_and_source - - insert_column_list: - - - - - - - - column_name_list - - - - -
             ::= column_name_list
    -
    - referenced by: - - from_constructor - from_subquery - merge_insert_specification - - merge_statement: - - - - - - - - MERGE - - - INTO - - - target_table - - AS - - - merge_correlation_name - - USING - - - table_reference - - ON - - - search_condition - - - merge_operation_specification - - - - -
             ::= 'MERGE' 'INTO' target_table ( 'AS'? merge_correlation_name )? 'USING' table_reference 'ON' search_condition merge_operation_specification
    -
    - referenced by: - - SQL_data_change_statement - direct_SQL_data_statement - preparable_SQL_data_statement - - merge_correlation_name: - - - - - - - - correlation_name - - - - -
             ::= correlation_name
    -
    - referenced by: - - merge_statement - - merge_operation_specification: - - - - - - - - merge_when_clause - - . - - - . - - - . - - - - - -
             ::= merge_when_clause . . .
    -
    - referenced by: - - merge_statement - - merge_when_clause: - - - - - - - - merge_when_matched_clause - - - merge_when_not_matched_clause - - - - -
             ::= merge_when_matched_clause
    -
               | merge_when_not_matched_clause
    -
    - referenced by: - - merge_operation_specification - - merge_when_matched_clause: - - - - - - - - WHEN - - - MATCHED* - - - THEN - - - merge_update_specification - - - - -
             ::= 'WHEN' 'MATCHED*' 'THEN' merge_update_specification
    -
    - referenced by: - - merge_when_clause - - merge_when_not_matched_clause: - - - - - - - - WHEN - - - NOT - - - MATCHED* - - - THEN - - - merge_insert_specification - - - - -
             ::= 'WHEN' 'NOT' 'MATCHED*' 'THEN' merge_insert_specification
    -
    - referenced by: - - merge_when_clause - - merge_update_specification: - - - - - - - - UPDATE - - - SET - - - set_clause_list - - - - -
             ::= 'UPDATE' 'SET' set_clause_list
    -
    - referenced by: - - merge_when_matched_clause - - merge_insert_specification: - - - - - - - - INSERT - - - ( - - - insert_column_list - - ) - - - override_clause - - VALUES - - - merge_insert_value_list - - - - -
             ::= 'INSERT' ( '(' insert_column_list ')' )? override_clause? 'VALUES' merge_insert_value_list
    -
    - referenced by: - - merge_when_not_matched_clause - - merge_insert_value_list: - - - - - - - - ( - - - merge_insert_value_element - - , - - - ) - - - - - -
             ::= '(' merge_insert_value_element ( ',' merge_insert_value_element )* ')'
    -
    - referenced by: - - merge_insert_specification - - merge_insert_value_element: - - - - - - - - value_expression - - - contextually_typed_value_specification - - - - -
             ::= value_expression
    -
    -
    - referenced by: - - merge_insert_value_list - - update_statement__positioned: - - - - - - - - UPDATE - - - target_table - - SET - - - set_clause_list - - WHERE - - - CURRENT - - - OF - - - cursor_name - - - - -
             ::= 'UPDATE' target_table 'SET' set_clause_list 'WHERE' 'CURRENT' 'OF' cursor_name
    -
    - referenced by: - - SQL_data_change_statement - - update_statement__searched: - - - - - - - - UPDATE - - - target_table - - SET - - - set_clause_list - - WHERE - - - search_condition - - - - -
             ::= 'UPDATE' target_table 'SET' set_clause_list ( 'WHERE' search_condition )?
    -
    - referenced by: - - SQL_data_change_statement - direct_SQL_data_statement - preparable_SQL_data_statement - - set_clause_list: - - - - - - - - set_clause - - , - - - - - -
             ::= set_clause ( ',' set_clause )*
    -
    - referenced by: - - dynamic_update_statement__positioned - merge_update_specification - preparable_dynamic_update_statement__positioned - update_statement__positioned - update_statement__searched - - set_clause: - - - - - - - - multiple_column_assignment - - - set_target - - = - - - update_source - - - - -
             ::= multiple_column_assignment
    -
               | set_target '=' update_source
    -
    - referenced by: - - set_clause_list - - set_target: - - - - - - - - update_target - - - mutated_set_clause - - - - -
             ::= update_target
    -
               | mutated_set_clause
    -
    - referenced by: - - set_clause - set_target_list - - multiple_column_assignment: - - - - - - - - set_target_list - - = - - - assigned_row - - - - -
             ::= set_target_list '=' assigned_row
    -
    - referenced by: - - set_clause - - set_target_list: - - - - - - - - ( - - - set_target - - , - - - ) - - - - - -
             ::= '(' set_target ( ',' set_target )* ')'
    -
    - referenced by: - - multiple_column_assignment - - assigned_row: - - - - - - - - contextually_typed_row_value_expression - - - - - - - referenced by: - - multiple_column_assignment - - update_target: - - - - - - - - object_column - - - left_bracket_or_trigraph - - - simple_value_specification - - - right_bracket_or_trigraph - - - - - - - referenced by: - - set_target - - object_column: - - - - - - - - column_name - - - - -
             ::= column_name
    -
    - referenced by: - - mutated_target - update_target - - mutated_set_clause: - - - - - - - - mutated_target - - . - - - method_name - - - - -
             ::= mutated_target '.' method_name
    -
    - referenced by: - - mutated_target - set_target - - mutated_target: - - - - - - - - object_column - - - mutated_set_clause - - - - -
             ::= object_column
    -
               | mutated_set_clause
    -
    - referenced by: - - mutated_set_clause - - update_source: - - - - - - - - value_expression - - - contextually_typed_value_specification - - - - -
             ::= value_expression
    -
    -
    - referenced by: - - set_clause - - temporary_table_declaration: - - - - - - - - DECLARE - - - LOCAL - - - TEMPORARY* - - - TABLE - - - table_name - - - table_element_list - - ON - - - COMMIT - - - table_commit_action - - ROWS - - - - - -
             ::= 'DECLARE' 'LOCAL' 'TEMPORARY*' 'TABLE' table_name table_element_list ( 'ON' 'COMMIT' table_commit_action 'ROWS' )?
    -
    - referenced by: - - SQL_client_module_definition - direct_SQL_data_statement - statement_or_declaration - - free_locator_statement: - - - - - - - - FREE - - - LOCATOR* - - - locator_reference - - , - - - - - -
             ::= 'FREE' 'LOCATOR*' locator_reference ( ',' locator_reference )*
    -
    - referenced by: - - SQL_data_statement - - locator_reference: - - - - - - - - host_parameter_name - - - embedded_variable_name - - - - -
             ::= host_parameter_name
    -
               | embedded_variable_name
    -
    - referenced by: - - free_locator_statement - hold_locator_statement - - hold_locator_statement: - - - - - - - - HOLD - - - LOCATOR* - - - locator_reference - - , - - - - - -
             ::= 'HOLD' 'LOCATOR*' locator_reference ( ',' locator_reference )*
    -
    - referenced by: - - SQL_data_statement - - call_statement: - - - - - - - - CALL - - - routine_invocation - - - - -
             ::= 'CALL' routine_invocation
    -
    - referenced by: - - SQL_control_statement - - return_statement: - - - - - - - - RETURN - - - return_value - - - - -
             ::= 'RETURN' return_value
    -
    - referenced by: - - SQL_control_statement - - return_value: - - - - - - - - value_expression - - NULL - - - - - -
             ::= value_expression
    -
               | 'NULL'
    -
    - referenced by: - - return_statement - - start_transaction_statement: - - - - - - - - START - - - TRANSACTION* - - - transaction_mode - - , - - - - - -
             ::= 'START' 'TRANSACTION*' ( transaction_mode ( ',' transaction_mode )* )?
    -
    - referenced by: - - SQL_transaction_statement - - transaction_mode: - - - - - - - - isolation_level - - - transaction_access_mode - - - diagnostics_size - - - - -
             ::= isolation_level
    -
               | transaction_access_mode
    -
               | diagnostics_size
    -
    - referenced by: - - start_transaction_statement - transaction_characteristics - - transaction_access_mode: - - - - - - - - READ* - - - ONLY - - - WRITE* - - - - - -
             ::= 'READ*' ( 'ONLY' | 'WRITE*' )
    -
    - referenced by: - - transaction_mode - - isolation_level: - - - - - - - - ISOLATION - - LEVEL* - - - level_of_isolation - - - - -
             ::= ISOLATION 'LEVEL*' level_of_isolation
    -
    - referenced by: - - transaction_mode - - level_of_isolation: - - - - - - - - READ* - - - UNCOMMITTED* - - - COMMITTED* - - - REPEATABLE* - - - READ* - - - SERIALIZABLE* - - - - - -
             ::= 'READ*' ( 'UNCOMMITTED*' | 'COMMITTED*' )
    -
               | 'REPEATABLE*' 'READ*'
    -
               | 'SERIALIZABLE*'
    -
    - referenced by: - - isolation_level - - diagnostics_size: - - - - - - - - DIAGNOSTICS* - - - SIZE* - - - number_of_conditions - - - - -
             ::= 'DIAGNOSTICS*' 'SIZE*' number_of_conditions
    -
    - referenced by: - - transaction_mode - - number_of_conditions: - - - - - - - - simple_value_specification - - - - -
             ::= simple_value_specification
    -
    - referenced by: - - diagnostics_size - - set_transaction_statement: - - - - - - - - SET - - - LOCAL - - - transaction_characteristics - - - - -
             ::= 'SET' 'LOCAL'? transaction_characteristics
    -
    - referenced by: - - SQL_transaction_statement - - transaction_characteristics: - - - - - - - - TRANSACTION* - - - transaction_mode - - , - - - - - -
             ::= 'TRANSACTION*' transaction_mode ( ',' transaction_mode )*
    -
    - referenced by: - - session_characteristic - set_transaction_statement - - set_constraints_mode_statement: - - - - - - - - SET - - - CONSTRAINTS* - - - constraint_name_list - - DEFERRED* - - - IMMEDIATE - - - - - -
             ::= 'SET' 'CONSTRAINTS*' constraint_name_list ( 'DEFERRED*' | 'IMMEDIATE' )
    -
    - referenced by: - - SQL_transaction_statement - - constraint_name_list: - - - - - - - - ALL - - - constraint_name - - , - - - - - -
             ::= 'ALL'
    -
               | constraint_name ( ',' constraint_name )*
    -
    - referenced by: - - set_constraints_mode_statement - - savepoint_statement: - - - - - - - - SAVEPOINT - - - savepoint_specifier - - - - -
             ::= 'SAVEPOINT' savepoint_specifier
    -
    - referenced by: - - SQL_transaction_statement - - savepoint_specifier: - - - - - - - - savepoint_name - - - - -
             ::= savepoint_name
    -
    - referenced by: - - release_savepoint_statement - savepoint_clause - savepoint_statement - - release_savepoint_statement: - - - - - - - - RELEASE - - - SAVEPOINT - - - savepoint_specifier - - - - -
             ::= 'RELEASE' 'SAVEPOINT' savepoint_specifier
    -
    - referenced by: - - SQL_transaction_statement - - commit_statement: - - - - - - - - COMMIT - - - WORK* - - - AND - - - NO - - - CHAIN* - - - - - -
             ::= 'COMMIT' 'WORK*'? ( 'AND' 'NO'? 'CHAIN*' )?
    -
    - referenced by: - - SQL_transaction_statement - - rollback_statement: - - - - - - - - ROLLBACK - - - WORK* - - - AND - - - NO - - - CHAIN* - - - savepoint_clause - - - - -
             ::= 'ROLLBACK' 'WORK*'? ( 'AND' 'NO'? 'CHAIN*' )? savepoint_clause?
    -
    - referenced by: - - SQL_transaction_statement - - savepoint_clause: - - - - - - - - TO - - - SAVEPOINT - - - savepoint_specifier - - - - -
             ::= 'TO' 'SAVEPOINT' savepoint_specifier
    -
    - referenced by: - - rollback_statement - - connect_statement: - - - - - - - - CONNECT - - - TO - - - connection_target - - - - -
             ::= 'CONNECT' 'TO' connection_target
    -
    - referenced by: - - SQL_connection_statement - - connection_target: - - - - - - - - SQL_server_name - - AS - - - connection_name - - USER - - - connection_user_name - - DEFAULT - - - - - -
             ::= SQL_server_name ( 'AS' connection_name )? ( 'USER' connection_user_name )?
    -
               | 'DEFAULT'
    -
    - referenced by: - - connect_statement - - set_connection_statement: - - - - - - - - SET - - - CONNECTION - - - connection_object - - - - -
             ::= 'SET' CONNECTION connection_object
    -
    - referenced by: - - SQL_connection_statement - - connection_object: - - - - - - - - DEFAULT - - - connection_name - - - - -
             ::= 'DEFAULT'
    -
               | connection_name
    -
    - referenced by: - - disconnect_object - set_connection_statement - - disconnect_statement: - - - - - - - - DISCONNECT - - - disconnect_object - - - - -
             ::= 'DISCONNECT' disconnect_object
    -
    - referenced by: - - SQL_connection_statement - - disconnect_object: - - - - - - - - connection_object - - ALL - - - CURRENT - - - - - -
             ::= connection_object
    -
               | 'ALL'
    -
               | 'CURRENT'
    -
    - referenced by: - - disconnect_statement - - set_session_characteristics_statement: - - - - - - - - SET - - - SESSION* - - - CHARACTERISTICS* - - - AS - - - session_characteristic_list - - - - -
             ::= 'SET' 'SESSION*' 'CHARACTERISTICS*' 'AS' session_characteristic_list
    -
    - referenced by: - - SQL_session_statement - - session_characteristic_list: - - - - - - - - session_characteristic - - , - - - - - -
             ::= session_characteristic ( ',' session_characteristic )*
    -
    - referenced by: - - set_session_characteristics_statement - - session_characteristic: - - - - - - - - transaction_characteristics - - - - -
             ::= transaction_characteristics
    -
    - referenced by: - - session_characteristic_list - - set_session_user_identifier_statement: - - - - - - - - SET - - - SESSION* - - - AUTHORIZATION - - - value_specification - - - - -
             ::= 'SET' 'SESSION*' 'AUTHORIZATION' value_specification
    -
    - referenced by: - - SQL_session_statement - - set_role_statement: - - - - - - - - SET - - - ROLE* - - - role_specification - - - - -
             ::= 'SET' 'ROLE*' role_specification
    -
    - referenced by: - - SQL_session_statement - - role_specification: - - - - - - - - value_specification - - NONE - - - - - -
             ::= value_specification
    -
               | 'NONE'
    -
    - referenced by: - - set_role_statement - - set_local_time_zone_statement: - - - - - - - - SET - - - TIME - - - ZONE* - - - set_time_zone_value - - - - -
             ::= 'SET' 'TIME' 'ZONE*' set_time_zone_value
    -
    - referenced by: - - SQL_session_statement - - set_time_zone_value: - - - - - - - - interval_value_expression - - LOCAL - - - - - -
             ::= interval_value_expression
    -
               | 'LOCAL'
    -
    - referenced by: - - set_local_time_zone_statement - - set_catalog_statement: - - - - - - - - SET - - - catalog_name_characteristic - - - - -
             ::= 'SET' catalog_name_characteristic
    -
    - referenced by: - - SQL_session_statement - - catalog_name_characteristic: - - - - - - - - CATALOG* - - - value_specification - - - - -
             ::= 'CATALOG*' value_specification
    -
    - referenced by: - - set_catalog_statement - - set_schema_statement: - - - - - - - - SET - - - schema_name_characteristic - - - - -
             ::= 'SET' schema_name_characteristic
    -
    - referenced by: - - SQL_session_statement - - schema_name_characteristic: - - - - - - - - SCHEMA* - - - value_specification - - - - -
             ::= 'SCHEMA*' value_specification
    -
    - referenced by: - - set_schema_statement - - set_names_statement: - - - - - - - - SET - - - character_set_name_characteristic - - - - -
             ::= 'SET' character_set_name_characteristic
    -
    - referenced by: - - SQL_session_statement - - character_set_name_characteristic: - - - - - - - - NAMES* - - - value_specification - - - - -
             ::= 'NAMES*' value_specification
    -
    - referenced by: - - set_names_statement - - set_path_statement: - - - - - - - - SET - - - SQL_path_characteristic - - - - -
             ::= 'SET' SQL_path_characteristic
    -
    - referenced by: - - SQL_session_statement - - SQL_path_characteristic: - - - - - - - - PATH* - - - value_specification - - - - -
             ::= 'PATH*' value_specification
    -
    - referenced by: - - set_path_statement - - set_transform_group_statement: - - - - - - - - SET - - - transform_group_characteristic - - - - -
             ::= 'SET' transform_group_characteristic
    -
    - referenced by: - - SQL_session_statement - - transform_group_characteristic: - - - - - - - - DEFAULT - - - TRANSFORM* - - - GROUP - - - TRANSFORM* - - - GROUP - - - FOR - - - TYPE* - - - path_resolved_user_defined_type_name - - - value_specification - - - - -
             ::= ( 'DEFAULT' 'TRANSFORM*' 'GROUP' | 'TRANSFORM*' 'GROUP' 'FOR' 'TYPE*' - path_resolved_user_defined_type_name ) value_specification
    -
    - referenced by: - - set_transform_group_statement - - set_session_collation_statement: - - - - - - - - SET - - - COLLATION* - - - collation_specification - - NO - - - COLLATION* - - - FOR - - - character_set_specification_list - - - - -
             ::= 'SET' ( 'COLLATION*' collation_specification | 'NO' 'COLLATION*' ) ( 'FOR' character_set_specification_list )?
    -
    - referenced by: - - SQL_session_statement - - collation_specification: - - - - - - - - value_specification - - - - -
             ::= value_specification
    -
    - referenced by: - - set_session_collation_statement - - allocate_descriptor_statement: - - - - - - - - ALLOCATE - - - SQL - - - DESCRIPTOR* - - - descriptor_name - - WITH - - - MAX* - - - occurrences - - - - -
             ::= 'ALLOCATE' 'SQL'? 'DESCRIPTOR*' descriptor_name ( 'WITH' 'MAX*' occurrences )?
    -
    - referenced by: - - system_descriptor_statement - - occurrences: - - - - - - - - simple_value_specification - - - - -
             ::= simple_value_specification
    -
    - referenced by: - - allocate_descriptor_statement - - deallocate_descriptor_statement: - - - - - - - - DEALLOCATE - - - SQL - - - DESCRIPTOR* - - - descriptor_name - - - - -
             ::= 'DEALLOCATE' 'SQL'? 'DESCRIPTOR*' descriptor_name
    -
    - referenced by: - - system_descriptor_statement - - get_descriptor_statement: - - - - - - - - GET - - - SQL - - - DESCRIPTOR* - - - descriptor_name - - - get_descriptor_information - - - - -
             ::= 'GET' 'SQL'? 'DESCRIPTOR*' descriptor_name get_descriptor_information
    -
    - referenced by: - - system_descriptor_statement - - get_descriptor_information: - - - - - - - - get_header_information - - , - - - VALUE - - - item_number - - - get_item_information - - , - - - - - -
             ::= get_header_information ( ',' get_header_information )*
    -
               | 'VALUE' item_number get_item_information ( ',' get_item_information )*
    -
    - referenced by: - - get_descriptor_statement - - get_header_information: - - - - - - - - simple_target_specification_1 - - = - - - header_item_name - - - - - - - referenced by: - - get_descriptor_information - - header_item_name: - - - - - - - - COUNT* - - - KEY_TYPE* - - - DYNAMIC_FUNCTION* - - - DYNAMIC_FUNCTION_CODE* - - - TOP_LEVEL_COUNT* - - - - - -
             ::= 'COUNT*'
    -
               | 'KEY_TYPE*'
    -
               | 'DYNAMIC_FUNCTION*'
    -
               | 'DYNAMIC_FUNCTION_CODE*'
    -
               | 'TOP_LEVEL_COUNT*'
    -
    - referenced by: - - get_header_information - set_header_information - - get_item_information: - - - - - - - - simple_target_specification_2 - - = - - - descriptor_item_name - - - - - - - referenced by: - - get_descriptor_information - - item_number: - - - - - - - - simple_value_specification - - - - -
             ::= simple_value_specification
    -
    - referenced by: - - get_descriptor_information - set_descriptor_information - - simple_target_specification_1: - - - - - - - - simple_target_specification - - - - -
             ::= simple_target_specification
    -
    - referenced by: - - get_header_information - - simple_target_specification_2: - - - - - - - - simple_target_specification - - - - -
             ::= simple_target_specification
    -
    - referenced by: - - get_item_information - - descriptor_item_name: - - - - - - - - CARDINALITY* - - - CHARACTER_SET_CATALOG* - - - CHARACTER_SET_NAME* - - - CHARACTER_SET_SCHEMA* - - - COLLATION_CATALOG* - - - COLLATION_NAME* - - - COLLATION_SCHEMA* - - - DATA* - - - DATETIME_INTERVAL_CODE* - - - DATETIME_INTERVAL_PRECISION* - - - DEGREE* - - - INDICATOR - - - KEY_MEMBER* - - - LENGTH* - - - LEVEL* - - - NAME* - - - NULLABLE* - - - OCTET_LENGTH* - - - PARAMETER_MODE* - - - PARAMETER_ORDINAL_POSITION* - - - PARAMETER_SPECIFIC_CATALOG* - - - PARAMETER_SPECIFIC_NAME* - - - PARAMETER_SPECIFIC_SCHEMA* - - - PRECISION - - - RETURNED_CARDINALITY* - - - RETURNED_LENGTH* - - - RETURNED_OCTET_LENGTH* - - - SCALE* - - - SCOPE_CATALOG* - - - SCOPE_NAME* - - - SCOPE_SCHEMA* - - - TYPE* - - - UNNAMED* - - - USER_DEFINED_TYPE_CATALOG* - - - USER_DEFINED_TYPE_NAME* - - - USER_DEFINED_TYPE_SCHEMA* - - - USER_DEFINED_TYPE_CODE* - - - - - -
             ::= 'CARDINALITY*'
    -
               | 'CHARACTER_SET_CATALOG*'
    -
               | 'CHARACTER_SET_NAME*'
    -
               | 'CHARACTER_SET_SCHEMA*'
    -
               | 'COLLATION_CATALOG*'
    -
               | 'COLLATION_NAME*'
    -
               | 'COLLATION_SCHEMA*'
    -
               | 'DATA*'
    -
               | 'DATETIME_INTERVAL_CODE*'
    -
               | 'DATETIME_INTERVAL_PRECISION*'
    -
               | 'DEGREE*'
    -
               | 'INDICATOR'
    -
               | 'KEY_MEMBER*'
    -
               | 'LENGTH*'
    -
               | 'LEVEL*'
    -
               | 'NAME*'
    -
               | 'NULLABLE*'
    -
               | 'OCTET_LENGTH*'
    -
               | 'PARAMETER_MODE*'
    -
               | 'PARAMETER_ORDINAL_POSITION*'
    -
               | 'PARAMETER_SPECIFIC_CATALOG*'
    -
               | 'PARAMETER_SPECIFIC_NAME*'
    -
               | 'PARAMETER_SPECIFIC_SCHEMA*'
    -
               | 'PRECISION'
    -
               | 'RETURNED_CARDINALITY*'
    -
               | 'RETURNED_LENGTH*'
    -
               | 'RETURNED_OCTET_LENGTH*'
    -
               | 'SCALE*'
    -
               | 'SCOPE_CATALOG*'
    -
               | 'SCOPE_NAME*'
    -
               | 'SCOPE_SCHEMA*'
    -
               | 'TYPE*'
    -
               | 'UNNAMED*'
    -
               | 'USER_DEFINED_TYPE_CATALOG*'
    -
               | 'USER_DEFINED_TYPE_NAME*'
    -
               | 'USER_DEFINED_TYPE_SCHEMA*'
    -
               | 'USER_DEFINED_TYPE_CODE*'
    -
    - referenced by: - - get_item_information - set_item_information - - set_descriptor_statement: - - - - - - - - SET - - - SQL - - - DESCRIPTOR* - - - descriptor_name - - - set_descriptor_information - - - - -
             ::= 'SET' 'SQL'? 'DESCRIPTOR*' descriptor_name set_descriptor_information
    -
    - referenced by: - - system_descriptor_statement - - set_descriptor_information: - - - - - - - - set_header_information - - , - - - VALUE - - - item_number - - - set_item_information - - , - - - - - -
             ::= set_header_information ( ',' set_header_information )*
    -
               | 'VALUE' item_number set_item_information ( ',' set_item_information )*
    -
    - referenced by: - - set_descriptor_statement - - set_header_information: - - - - - - - - header_item_name - - = - - - simple_value_specification_1 - - - - - - - referenced by: - - set_descriptor_information - - set_item_information: - - - - - - - - descriptor_item_name - - = - - - simple_value_specification_2 - - - - - - - referenced by: - - set_descriptor_information - - simple_value_specification_1: - - - - - - - - simple_value_specification - - - - -
             ::= simple_value_specification
    -
    - referenced by: - - set_header_information - - simple_value_specification_2: - - - - - - - - simple_value_specification - - - - -
             ::= simple_value_specification
    -
    - referenced by: - - set_item_information - - prepare_statement: - - - - - - - - PREPARE - - - SQL_statement_name - - - attributes_specification - - FROM - - - SQL_statement_variable - - - - - - - referenced by: - - SQL_dynamic_statement - - attributes_specification: - - - - - - - - ATTRIBUTES* - - - attributes_variable - - - - -
             ::= 'ATTRIBUTES*' attributes_variable
    -
    - referenced by: - - prepare_statement - - attributes_variable: - - - - - - - - simple_value_specification - - - - -
             ::= simple_value_specification
    -
    - referenced by: - - attributes_specification - - SQL_statement_variable: - - - - - - - - simple_value_specification - - - - -
             ::= simple_value_specification
    -
    - referenced by: - - execute_immediate_statement - prepare_statement - - preparable_statement: - - - - - - - - preparable_SQL_data_statement - - - preparable_SQL_schema_statement - - - preparable_SQL_transaction_statement - - - preparable_SQL_control_statement - - - preparable_SQL_session_statement - - - preparable_implementation_defined_statement - - - - -
             ::= preparable_SQL_data_statement
    -
               | preparable_SQL_schema_statement
    -
               | preparable_SQL_transaction_statement
    -
               | preparable_SQL_control_statement
    -
               | preparable_SQL_session_statement
    -
    -
    - no referencespreparable_SQL_data_statement: - - - - - - - - delete_statement__searched - - - dynamic_single_row_select_statement - - - insert_statement - - - dynamic_select_statement - - - update_statement__searched - - - merge_statement - - - preparable_dynamic_delete_statement__positioned - - - preparable_dynamic_update_statement__positioned - - - - -
             ::= delete_statement__searched
    -
               | dynamic_single_row_select_statement
    -
               | insert_statement
    -
               | dynamic_select_statement
    -
               | update_statement__searched
    -
               | merge_statement
    - -
    -
    - referenced by: - - preparable_statement - - preparable_SQL_schema_statement: - - - - - - - - SQL_schema_statement - - - - -
             ::= SQL_schema_statement
    -
    - referenced by: - - preparable_statement - - preparable_SQL_transaction_statement: - - - - - - - - SQL_transaction_statement - - - - -
             ::= SQL_transaction_statement
    -
    - referenced by: - - preparable_statement - - preparable_SQL_control_statement: - - - - - - - - SQL_control_statement - - - - -
             ::= SQL_control_statement
    -
    - referenced by: - - preparable_statement - - preparable_SQL_session_statement: - - - - - - - - SQL_session_statement - - - - -
             ::= SQL_session_statement
    -
    - referenced by: - - preparable_statement - - dynamic_select_statement: - - - - - - - - cursor_specification - - - - -
             ::= cursor_specification
    -
    - referenced by: - - preparable_SQL_data_statement - - preparable_implementation_defined_statement: - - - - - - - - - - -
             ::=
    -
    - referenced by: - - preparable_statement - - cursor_attributes: - - - - - - - - cursor_attribute - - . - - - . - - - . - - - - - -
             ::= cursor_attribute . . .
    -
    - no referencescursor_attribute: - - - - - - - - cursor_sensitivity - - - cursor_scrollability - - - cursor_holdability - - - cursor_returnability - - - - -
             ::= cursor_sensitivity
    -
               | cursor_scrollability
    -
               | cursor_holdability
    -
               | cursor_returnability
    -
    - referenced by: - - cursor_attributes - - deallocate_prepared_statement: - - - - - - - - DEALLOCATE - - - PREPARE - - - SQL_statement_name - - - - -
             ::= 'DEALLOCATE' 'PREPARE' SQL_statement_name
    -
    - referenced by: - - SQL_dynamic_statement - - describe_statement: - - - - - - - - describe_input_statement - - - describe_output_statement - - - - -
             ::= describe_input_statement
    -
               | describe_output_statement
    -
    - referenced by: - - SQL_dynamic_statement - - describe_input_statement: - - - - - - - - DESCRIBE - - - INPUT - - - SQL_statement_name - - - using_descriptor - - - nesting_option - - - - -
             ::= 'DESCRIBE' 'INPUT' SQL_statement_name using_descriptor nesting_option?
    -
    - referenced by: - - describe_statement - - describe_output_statement: - - - - - - - - DESCRIBE - - - OUTPUT - - - described_object - - - using_descriptor - - - nesting_option - - - - -
             ::= 'DESCRIBE' 'OUTPUT'? described_object using_descriptor nesting_option?
    -
    - referenced by: - - describe_statement - - nesting_option: - - - - - - - - WITH - - - WITHOUT - - - NESTING* - - - - - -
             ::= ( 'WITH' | 'WITHOUT' ) 'NESTING*'
    -
    - referenced by: - - describe_input_statement - describe_output_statement - - using_descriptor: - - - - - - - - USING - - - SQL - - - DESCRIPTOR* - - - descriptor_name - - - - -
             ::= 'USING' 'SQL'? 'DESCRIPTOR*' descriptor_name
    -
    - referenced by: - - describe_input_statement - describe_output_statement - using_input_descriptor - - described_object: - - - - - - - - SQL_statement_name - - CURSOR - - - extended_cursor_name - - STRUCTURE* - - - - - -
             ::= SQL_statement_name
    -
               | 'CURSOR' extended_cursor_name 'STRUCTURE*'
    -
    - referenced by: - - describe_output_statement - - input_using_clause: - - - - - - - - using_arguments - - - using_input_descriptor - - - - -
             ::= using_arguments
    -
               | using_input_descriptor
    -
    - referenced by: - - dynamic_open_statement - parameter_using_clause - - using_arguments: - - - - - - - - USING - - - using_argument - - , - - - - - -
             ::= 'USING' using_argument ( ',' using_argument )*
    -
    - referenced by: - - input_using_clause - - using_argument: - - - - - - - - general_value_specification - - - - -
             ::= general_value_specification
    -
    - referenced by: - - using_arguments - - using_input_descriptor: - - - - - - - - using_descriptor - - - - -
             ::= using_descriptor
    -
    - referenced by: - - input_using_clause - - output_using_clause: - - - - - - - - into_arguments - - - into_descriptor - - - - -
             ::= into_arguments
    -
               | into_descriptor
    -
    - referenced by: - - dynamic_fetch_statement - result_using_clause - - into_arguments: - - - - - - - - INTO - - - into_argument - - , - - - - - -
             ::= 'INTO' into_argument ( ',' into_argument )*
    -
    - referenced by: - - output_using_clause - - into_argument: - - - - - - - - target_specification - - - - -
             ::= target_specification
    -
    - referenced by: - - into_arguments - - into_descriptor: - - - - - - - - INTO - - - SQL - - - DESCRIPTOR* - - - descriptor_name - - - - -
             ::= 'INTO' 'SQL'? 'DESCRIPTOR*' descriptor_name
    -
    - referenced by: - - output_using_clause - - execute_statement: - - - - - - - - EXECUTE - - - SQL_statement_name - - - result_using_clause - - - parameter_using_clause - - - - - - - referenced by: - - SQL_dynamic_statement - - result_using_clause: - - - - - - - - output_using_clause - - - - -
             ::= output_using_clause
    -
    - referenced by: - - execute_statement - - parameter_using_clause: - - - - - - - - input_using_clause - - - - -
             ::= input_using_clause
    -
    - referenced by: - - execute_statement - - execute_immediate_statement: - - - - - - - - EXECUTE - - - IMMEDIATE - - - SQL_statement_variable - - - - -
             ::= 'EXECUTE' 'IMMEDIATE' SQL_statement_variable
    -
    - referenced by: - - SQL_dynamic_statement - - dynamic_declare_cursor: - - - - - - - - DECLARE - - - cursor_name - - - cursor_sensitivity - - - cursor_scrollability - - CURSOR - - - cursor_holdability - - - cursor_returnability - - FOR - - - statement_name - - - - - - - referenced by: - - module_contents - statement_or_declaration - - allocate_cursor_statement: - - - - - - - - ALLOCATE - - - extended_cursor_name - - - cursor_intent - - - - -
             ::= 'ALLOCATE' extended_cursor_name cursor_intent
    -
    - referenced by: - - SQL_dynamic_data_statement - - cursor_intent: - - - - - - - - statement_cursor - - - result_set_cursor - - - - -
             ::= statement_cursor
    -
               | result_set_cursor
    -
    - referenced by: - - allocate_cursor_statement - - statement_cursor: - - - - - - - - cursor_sensitivity - - - cursor_scrollability - - CURSOR - - - cursor_holdability - - - cursor_returnability - - FOR - - - extended_statement_name - - - - - - - referenced by: - - cursor_intent - - result_set_cursor: - - - - - - - - FOR - - - PROCEDURE - - - specific_routine_designator - - - - -
             ::= 'FOR' 'PROCEDURE' specific_routine_designator
    -
    - referenced by: - - cursor_intent - - dynamic_open_statement: - - - - - - - - OPEN - - - dynamic_cursor_name - - - input_using_clause - - - - -
             ::= 'OPEN' dynamic_cursor_name input_using_clause?
    -
    - referenced by: - - SQL_dynamic_data_statement - - dynamic_fetch_statement: - - - - - - - - FETCH - - - fetch_orientation - - FROM - - - dynamic_cursor_name - - - output_using_clause - - - - -
             ::= 'FETCH' ( fetch_orientation? 'FROM' )? dynamic_cursor_name output_using_clause
    -
    - referenced by: - - SQL_dynamic_data_statement - - dynamic_single_row_select_statement: - - - - - - - - query_specification - - - - -
             ::= query_specification
    -
    - referenced by: - - preparable_SQL_data_statement - - dynamic_close_statement: - - - - - - - - CLOSE - - - dynamic_cursor_name - - - - -
             ::= 'CLOSE' dynamic_cursor_name
    -
    - referenced by: - - SQL_dynamic_data_statement - - dynamic_delete_statement__positioned: - - - - - - - - DELETE - - - FROM - - - target_table - - WHERE - - - CURRENT - - - OF - - - dynamic_cursor_name - - - - -
             ::= 'DELETE' 'FROM' target_table 'WHERE' 'CURRENT' 'OF' dynamic_cursor_name
    -
    - referenced by: - - SQL_dynamic_data_statement - - dynamic_update_statement__positioned: - - - - - - - - UPDATE - - - target_table - - SET - - - set_clause_list - - WHERE - - - CURRENT - - - OF - - - dynamic_cursor_name - - - - -
             ::= 'UPDATE' target_table 'SET' set_clause_list 'WHERE' 'CURRENT' 'OF' dynamic_cursor_name
    -
    - referenced by: - - SQL_dynamic_data_statement - - preparable_dynamic_delete_statement__positioned: - - - - - - - - DELETE - - - FROM - - - target_table - - WHERE - - - CURRENT - - - OF - - - scope_option - - - cursor_name - - - - -
             ::= 'DELETE' ( 'FROM' target_table )? 'WHERE' 'CURRENT' 'OF' scope_option? cursor_name
    -
    - referenced by: - - preparable_SQL_data_statement - - preparable_dynamic_update_statement__positioned: - - - - - - - - UPDATE - - - target_table - - SET - - - set_clause_list - - WHERE - - - CURRENT - - - OF - - - scope_option - - - cursor_name - - - - -
             ::= 'UPDATE' target_table? 'SET' set_clause_list 'WHERE' 'CURRENT' 'OF' scope_option? cursor_name
    -
    - referenced by: - - preparable_SQL_data_statement - - embedded_SQL_host_program: - - - - - - - - embedded_SQL_Ada_program - - - embedded_SQL_C_program - - - embedded_SQL_COBOL_program - - - embedded_SQL_Fortran_program - - - embedded_SQL_MUMPS_program - - - embedded_SQL_Pascal_program - - - embedded_SQL_PL_I_program - - - - -
             ::= embedded_SQL_Ada_program
    -
               | embedded_SQL_C_program
    -
               | embedded_SQL_COBOL_program
    -
               | embedded_SQL_Fortran_program
    -
               | embedded_SQL_MUMPS_program
    -
               | embedded_SQL_Pascal_program
    -
               | embedded_SQL_PL_I_program
    -
    - no referencesembedded_SQL_statement: - - - - - - - - SQL_prefix - - - statement_or_declaration - - - SQL_terminator - - - - - - - no referencesstatement_or_declaration: - - - - - - - - declare_cursor - - - dynamic_declare_cursor - - - temporary_table_declaration - - - embedded_authorization_declaration - - - embedded_path_specification - - - embedded_transform_group_specification - - - embedded_collation_specification - - - embedded_exception_declaration - - - handler_declaration - - - SQL_procedure_statement - - - - -
             ::= declare_cursor
    -
               | dynamic_declare_cursor
    -
               | temporary_table_declaration
    -
               | embedded_authorization_declaration
    -
               | embedded_path_specification
    - -
               | embedded_collation_specification
    -
               | embedded_exception_declaration
    -
               | handler_declaration
    -
               | SQL_procedure_statement
    -
    - referenced by: - - embedded_SQL_statement - - SQL_prefix: - - - - - - - - EXEC - - - SQL - - - & - - - SQL - - - ( - - - - - -
             ::= 'EXEC' 'SQL'
    -
               | '&' 'SQL' '('
    -
    - referenced by: - - embedded_SQL_MUMPS_declare - embedded_SQL_begin_declare - embedded_SQL_end_declare - embedded_SQL_statement - - SQL_terminator: - - - - - - - - END-EXEC - - - ; - - - ) - - - - - -
             ::= 'END-EXEC'
    -
               | ';'
    -
               | ')'
    -
    - referenced by: - - embedded_SQL_MUMPS_declare - embedded_SQL_begin_declare - embedded_SQL_end_declare - embedded_SQL_statement - - embedded_authorization_declaration: - - - - - - - - DECLARE - - - embedded_authorization_clause - - - - -
             ::= 'DECLARE' embedded_authorization_clause
    -
    - referenced by: - - statement_or_declaration - - embedded_authorization_clause: - - - - - - - - SCHEMA* - - - schema_name - - AUTHORIZATION - - - embedded_authorization_identifier - - FOR - - - STATIC - - - ONLY - - - AND - - - DYNAMIC - - - AUTHORIZATION - - - embedded_authorization_identifier - - FOR - - - STATIC - - - ONLY - - - AND - - - DYNAMIC - - - - - -
             ::= 'SCHEMA*' schema_name ( 'AUTHORIZATION' embedded_authorization_identifier ( 'FOR' 'STATIC' ( 'ONLY' | 'AND' 'DYNAMIC' ) )? )?
    -
               | 'AUTHORIZATION' embedded_authorization_identifier ( 'FOR' 'STATIC' ( 'ONLY' | 'AND' 'DYNAMIC' ) )?
    -
    - referenced by: - - embedded_authorization_declaration - - embedded_authorization_identifier: - - - - - - - - module_authorization_identifier - - - - -
             ::= module_authorization_identifier
    -
    - referenced by: - - embedded_authorization_clause - - embedded_path_specification: - - - - - - - - path_specification - - - - -
             ::= path_specification
    -
    - referenced by: - - statement_or_declaration - - embedded_transform_group_specification: - - - - - - - - transform_group_specification - - - - -
             ::= transform_group_specification
    -
    - referenced by: - - statement_or_declaration - - embedded_collation_specification: - - - - - - - - module_collation - - - - -
             ::= module_collation
    -
    - referenced by: - - statement_or_declaration - - embedded_SQL_declare_section: - - - - - - - - embedded_SQL_begin_declare - - - embedded_character_set_declaration - - - host_variable_definition - - - embedded_SQL_end_declare - - - embedded_SQL_MUMPS_declare - - - - - -
               | embedded_SQL_MUMPS_declare
    -
    - no referencesembedded_character_set_declaration: - - - - - - - - SQL - - - NAMES* - - - ARE - - - character_set_specification - - - - -
             ::= 'SQL' 'NAMES*' 'ARE' character_set_specification
    -
    - referenced by: - - embedded_SQL_MUMPS_declare - embedded_SQL_declare_section - - embedded_SQL_begin_declare: - - - - - - - - SQL_prefix - - BEGIN - - - DECLARE - - - SECTION* - - - SQL_terminator - - - - -
             ::= SQL_prefix 'BEGIN' 'DECLARE' 'SECTION*' SQL_terminator?
    -
    - referenced by: - - embedded_SQL_declare_section - - embedded_SQL_end_declare: - - - - - - - - SQL_prefix - - END - - - DECLARE - - - SECTION* - - - SQL_terminator - - - - -
             ::= SQL_prefix 'END' 'DECLARE' 'SECTION*' SQL_terminator?
    -
    - referenced by: - - embedded_SQL_declare_section - - embedded_SQL_MUMPS_declare: - - - - - - - - SQL_prefix - - BEGIN - - - DECLARE - - - SECTION* - - - embedded_character_set_declaration - - - host_variable_definition - - END - - - DECLARE - - - SECTION* - - - SQL_terminator - - - - -
             ::= SQL_prefix 'BEGIN' 'DECLARE' 'SECTION*' embedded_character_set_declaration? host_variable_definition? 'END' 'DECLARE' 'SECTION*' SQL_terminator
    -
    - referenced by: - - embedded_SQL_declare_section - - host_variable_definition: - - - - - - - - Ada_variable_definition - - - C_variable_definition - - - COBOL_variable_definition - - - Fortran_variable_definition - - - MUMPS_variable_definition - - - Pascal_variable_definition - - - PL_I_variable_definition - - - - -
             ::= Ada_variable_definition
    -
               | C_variable_definition
    -
               | COBOL_variable_definition
    -
               | Fortran_variable_definition
    -
               | MUMPS_variable_definition
    -
               | Pascal_variable_definition
    -
               | PL_I_variable_definition
    -
    - referenced by: - - embedded_SQL_MUMPS_declare - embedded_SQL_declare_section - - embedded_variable_name: - - - - - - - - : - - - host_identifier - - - - -
             ::= ':' host_identifier
    -
    - referenced by: - - embedded_variable_specification - indicator_variable - locator_reference - simple_target_specification - simple_value_specification - - host_identifier: - - - - - - - - Ada_host_identifier - - - C_host_identifier - - - COBOL_host_identifier - - - Fortran_host_identifier - - - MUMPS_host_identifier - - - Pascal_host_identifier - - - PL_I_host_identifier - - - - -
             ::= Ada_host_identifier
    -
               | C_host_identifier
    -
               | COBOL_host_identifier
    -
               | Fortran_host_identifier
    -
               | MUMPS_host_identifier
    -
               | Pascal_host_identifier
    -
               | PL_I_host_identifier
    -
    - referenced by: - - embedded_variable_name - - embedded_exception_declaration: - - - - - - - - WHENEVER - - - condition - - - condition_action - - - - -
             ::= 'WHENEVER' condition condition_action
    -
    - referenced by: - - statement_or_declaration - - condition: - - - - - - - - SQL_condition - - - - -
             ::= SQL_condition
    -
    - referenced by: - - embedded_exception_declaration - - SQL_condition: - - - - - - - - major_category - - SQLSTATE - - - SQLSTATE_class_value - - , - - - SQLSTATE_subclass_value - - CONSTRAINT - - - constraint_name - - - - -
             ::= major_category
    -
               | 'SQLSTATE' SQLSTATE_class_value ( ',' SQLSTATE_subclass_value )?
    -
               | 'CONSTRAINT' constraint_name
    -
    - referenced by: - - condition - - major_category: - - - - - - - - SQLEXCEPTION - - - SQLWARNING - - - NOT - - - FOUND* - - - - - -
             ::= 'SQLEXCEPTION'
    -
               | 'SQLWARNING'
    -
               | 'NOT' 'FOUND*'
    -
    - referenced by: - - SQL_condition - - SQLSTATE_class_value: - - - - - - - - SQLSTATE_char - - - SQLSTATE_char - - - - -
             ::= SQLSTATE_char SQLSTATE_char
    -
    - referenced by: - - SQL_condition - - SQLSTATE_subclass_value: - - - - - - - - SQLSTATE_char - - - SQLSTATE_char - - - SQLSTATE_char - - - - - - - referenced by: - - SQL_condition - - SQLSTATE_char: - - - - - - - - simple_Latin_upper_case_letter - - - digit - - - - -
             ::= simple_Latin_upper_case_letter
    -
               | digit
    -
    - referenced by: - - SQLSTATE_class_value - SQLSTATE_subclass_value - - condition_action: - - - - - - - - CONTINUE - - - go_to - - - - -
             ::= 'CONTINUE'
    -
               | go_to
    -
    - referenced by: - - embedded_exception_declaration - - go_to: - - - - - - - - GOTO* - - - GO* - - - TO - - - goto_target - - - -
    go_to    ::= ( 'GOTO*' | 'GO*' 'TO' ) goto_target
    -
    - referenced by: - - condition_action - - goto_target: - - - - - - - - host_label_identifier - - - unsigned_integer - - - host_PL_I_label_variable - - - - -
             ::= host_label_identifier
    -
               | unsigned_integer
    -
               | host_PL_I_label_variable
    -
    - referenced by: - - go_to - - host_label_identifier: - - - - - - - - - - -
             ::=
    -
    - referenced by: - - goto_target - - host_PL_I_label_variable: - - - - - - - - - - -
             ::=
    -
    - referenced by: - - goto_target - - embedded_SQL_Ada_program: - - - - - - - - - - -
             ::=
    -
    - referenced by: - - embedded_SQL_host_program - - Ada_variable_definition: - - - - - - - - Ada_host_identifier - - , - - - : - - - Ada_type_specification - - - Ada_initial_value - - - - - - - referenced by: - - host_variable_definition - - Ada_initial_value: - - - - - - - - Ada_assignment_operator - - - character_representation - - . - - - . - - - . - - - - - - - - referenced by: - - Ada_variable_definition - - Ada_assignment_operator: - - - - - - - - : - - - = - - - - - -
             ::= ':' '='
    -
    - referenced by: - - Ada_initial_value - - Ada_host_identifier: - - - - - - - - - - -
             ::=
    -
    - referenced by: - - Ada_variable_definition - host_identifier - - Ada_type_specification: - - - - - - - - Ada_qualified_type_specification - - - Ada_unqualified_type_specification - - - Ada_derived_type_specification - - - - -
             ::= Ada_qualified_type_specification
    -
               | Ada_unqualified_type_specification
    -
               | Ada_derived_type_specification
    -
    - referenced by: - - Ada_variable_definition - - Ada_qualified_type_specification: - - - - - - - - Interfaces.SQL - - . - - - CHAR - - - CHARACTER - - - SET - - - IS - - - character_set_specification - - ( - - - .. - - - length - - ) - - - SMALLINT - - - INT - - - BIGINT - - - REAL - - - DOUBLE_PRECISION - - BOOLEAN - - - SQLSTATE_TYPE - - - INDICATOR_TYPE - - - - -
             ::= Interfaces.SQL '.' ( 'CHAR' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )? '(' '..' length ')' | 'SMALLINT' | 'INT' | 'BIGINT' | 'REAL' | DOUBLE_PRECISION | 'BOOLEAN' | SQLSTATE_TYPE | INDICATOR_TYPE )
    -
    - referenced by: - - Ada_type_specification - - Ada_unqualified_type_specification: - - - - - - - - CHAR - - - ( - - - .. - - - length - - ) - - - SMALLINT - - - INT - - - BIGINT - - - REAL - - - DOUBLE_PRECISION - - BOOLEAN - - - SQLSTATE_TYPE - - - INDICATOR_TYPE - - - - -
             ::= 'CHAR' '(' '..' length ')'
    -
               | 'SMALLINT'
    -
               | 'INT'
    -
               | 'BIGINT'
    -
               | 'REAL'
    -
               | DOUBLE_PRECISION
    -
               | 'BOOLEAN'
    -
               | SQLSTATE_TYPE
    -
               | INDICATOR_TYPE
    -
    - referenced by: - - Ada_type_specification - - Ada_derived_type_specification: - - - - - - - - Ada_CLOB_variable - - - Ada_CLOB_locator_variable - - - Ada_BLOB_variable - - - Ada_BLOB_locator_variable - - - Ada_user_defined_type_variable - - - Ada_user_defined_type_locator_variable - - - Ada_REF_variable - - - Ada_array_locator_variable - - - Ada_multiset_locator_variable - - - - -
             ::= Ada_CLOB_variable
    -
               | Ada_CLOB_locator_variable
    -
               | Ada_BLOB_variable
    -
               | Ada_BLOB_locator_variable
    -
               | Ada_user_defined_type_variable
    - -
               | Ada_REF_variable
    -
               | Ada_array_locator_variable
    -
               | Ada_multiset_locator_variable
    -
    - referenced by: - - Ada_type_specification - - Ada_CLOB_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - CLOB - - - ( - - - large_object_length - - ) - - - CHARACTER - - - SET - - - IS - - - character_set_specification - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' '(' large_object_length ')' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )?
    -
    - referenced by: - - Ada_derived_type_specification - - Ada_CLOB_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - CLOB - - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' 'AS' 'LOCATOR*'
    -
    - referenced by: - - Ada_derived_type_specification - - Ada_BLOB_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - BLOB - - - ( - - - large_object_length - - ) - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' '(' large_object_length ')'
    -
    - referenced by: - - Ada_derived_type_specification - - Ada_BLOB_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - BLOB - - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' 'AS' 'LOCATOR*'
    -
    - referenced by: - - Ada_derived_type_specification - - Ada_user_defined_type_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - path_resolved_user_defined_type_name - - AS - - - predefined_type - - - - -
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' predefined_type
    -
    - referenced by: - - Ada_derived_type_specification - - Ada_user_defined_type_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - path_resolved_user_defined_type_name - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' 'LOCATOR*'
    -
    - referenced by: - - Ada_derived_type_specification - - Ada_REF_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - reference_type - - - - -
             ::= 'SQL' 'TYPE*' 'IS' reference_type
    -
    - referenced by: - - Ada_derived_type_specification - - Ada_array_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - array_type - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' array_type 'AS' 'LOCATOR*'
    -
    - referenced by: - - Ada_derived_type_specification - - Ada_multiset_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - multiset_type - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' multiset_type 'AS' 'LOCATOR*'
    -
    - referenced by: - - Ada_derived_type_specification - - embedded_SQL_C_program: - - - - - - - - - - -
             ::=
    -
    - referenced by: - - embedded_SQL_host_program - - C_variable_definition: - - - - - - - - C_storage_class - - - C_class_modifier - - - C_variable_specification - - ; - - - - - - - - referenced by: - - host_variable_definition - - C_variable_specification: - - - - - - - - C_numeric_variable - - - C_character_variable - - - C_derived_variable - - - - -
             ::= C_numeric_variable
    -
               | C_character_variable
    -
               | C_derived_variable
    -
    - referenced by: - - C_variable_definition - - C_storage_class: - - - - - - - - auto - - - extern - - - static - - - - -
             ::= auto
    -
               | extern
    -
               | static
    -
    - referenced by: - - C_variable_definition - - C_class_modifier: - - - - - - - - const - - - volatile - - - - -
             ::= const
    -
               | volatile
    -
    - referenced by: - - C_variable_definition - - C_numeric_variable: - - - - - - - - long - - - long - - - short - - - float - - - double - - - C_host_identifier - - - C_initial_value - - , - - - - - - - - referenced by: - - C_variable_specification - - C_character_variable: - - - - - - - - C_character_type - - CHARACTER - - - SET - - - IS - - - character_set_specification - - - C_host_identifier - - - C_array_specification - - - C_initial_value - - , - - - - - - - - referenced by: - - C_variable_specification - - C_character_type: - - - - - - - - char - - - unsigned - - - char - - - short - - - - -
             ::= char
    -
               | unsigned ( char | short )
    -
    - referenced by: - - C_character_variable - - C_array_specification: - - - - - - - - [ - - - length - - ] - - - - - -
             ::= '[' length ']'
    -
    - referenced by: - - C_NCHAR_VARYING_variable - C_NCHAR_variable - C_VARCHAR_variable - C_character_variable - - C_host_identifier: - - - - - - - - - - -
             ::=
    -
    - referenced by: - - C_BLOB_locator_variable - C_BLOB_variable - C_CLOB_locator_variable - C_CLOB_variable - C_NCHAR_VARYING_variable - C_NCHAR_variable - C_NCLOB_variable - C_VARCHAR_variable - C_array_locator_variable - C_character_variable - C_multiset_locator_variable - C_numeric_variable - C_user_defined_type_locator_variable - C_user_defined_type_variable - host_identifier - - C_derived_variable: - - - - - - - - C_VARCHAR_variable - - - C_NCHAR_variable - - - C_NCHAR_VARYING_variable - - - C_CLOB_variable - - - C_NCLOB_variable - - - C_BLOB_variable - - - C_user_defined_type_variable - - - C_CLOB_locator_variable - - - C_BLOB_locator_variable - - - C_array_locator_variable - - - C_multiset_locator_variable - - - C_user_defined_type_locator_variable - - - C_REF_variable - - - - -
             ::= C_VARCHAR_variable
    -
               | C_NCHAR_variable
    -
               | C_NCHAR_VARYING_variable
    -
               | C_CLOB_variable
    -
               | C_NCLOB_variable
    -
               | C_BLOB_variable
    -
               | C_user_defined_type_variable
    -
               | C_CLOB_locator_variable
    -
               | C_BLOB_locator_variable
    -
               | C_array_locator_variable
    -
               | C_multiset_locator_variable
    -
               | C_user_defined_type_locator_variable
    -
               | C_REF_variable
    -
    - referenced by: - - C_variable_specification - - C_VARCHAR_variable: - - - - - - - - VARCHAR - - - CHARACTER - - - SET - - - IS - - - character_set_specification - - - C_host_identifier - - - C_array_specification - - - C_initial_value - - , - - - - - - - - referenced by: - - C_derived_variable - - C_NCHAR_variable: - - - - - - - - NCHAR - - - CHARACTER - - - SET - - - IS - - - character_set_specification - - - C_host_identifier - - - C_array_specification - - - C_initial_value - - , - - - - - - - - referenced by: - - C_derived_variable - - C_NCHAR_VARYING_variable: - - - - - - - - NCHAR - - - VARYING - - - CHARACTER - - - SET - - - IS - - - character_set_specification - - - C_host_identifier - - - C_array_specification - - - C_initial_value - - , - - - - - - - - referenced by: - - C_derived_variable - - C_CLOB_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - CLOB - - - ( - - - large_object_length - - ) - - - CHARACTER - - - SET - - - IS - - - character_set_specification - - - C_host_identifier - - - C_initial_value - - , - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' '(' large_object_length ')' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )? C_host_identifier C_initial_value? ( ',' C_host_identifier C_initial_value? )*
    -
    - referenced by: - - C_derived_variable - - C_NCLOB_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - NCLOB - - - ( - - - large_object_length - - ) - - - CHARACTER - - - SET - - - IS - - - character_set_specification - - - C_host_identifier - - - C_initial_value - - , - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'NCLOB' '(' large_object_length ')' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )? C_host_identifier C_initial_value? ( ',' C_host_identifier C_initial_value? )*
    -
    - referenced by: - - C_derived_variable - - C_user_defined_type_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - path_resolved_user_defined_type_name - - AS - - - predefined_type - - - C_host_identifier - - - C_initial_value - - , - - - - - - - - referenced by: - - C_derived_variable - - C_BLOB_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - BLOB - - - ( - - - large_object_length - - ) - - - C_host_identifier - - - C_initial_value - - , - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' '(' large_object_length ')' C_host_identifier C_initial_value? ( ',' C_host_identifier C_initial_value? )*
    -
    - referenced by: - - C_derived_variable - - C_CLOB_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - CLOB - - - AS - - - LOCATOR* - - - C_host_identifier - - - C_initial_value - - , - - - C_host_identifier - - - C_initial_value - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' 'AS' 'LOCATOR*' C_host_identifier C_initial_value? ( ',' C_host_identifier C_initial_value? )?
    -
    - referenced by: - - C_derived_variable - - C_BLOB_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - BLOB - - - AS - - - LOCATOR* - - - C_host_identifier - - - C_initial_value - - , - - - C_host_identifier - - - C_initial_value - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' 'AS' 'LOCATOR*' C_host_identifier C_initial_value? ( ',' C_host_identifier C_initial_value? )?
    -
    - referenced by: - - C_derived_variable - - C_array_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - array_type - - AS - - - LOCATOR* - - - C_host_identifier - - - C_initial_value - - , - - - C_host_identifier - - - C_initial_value - - - - -
             ::= 'SQL' 'TYPE*' 'IS' array_type 'AS' 'LOCATOR*' C_host_identifier C_initial_value? ( ',' C_host_identifier C_initial_value? )?
    -
    - referenced by: - - C_derived_variable - - C_multiset_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - multiset_type - - AS - - - LOCATOR* - - - C_host_identifier - - - C_initial_value - - , - - - C_host_identifier - - - C_initial_value - - - - -
             ::= 'SQL' 'TYPE*' 'IS' multiset_type 'AS' 'LOCATOR*' C_host_identifier C_initial_value? ( ',' C_host_identifier C_initial_value? )?
    -
    - referenced by: - - C_derived_variable - - C_user_defined_type_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - path_resolved_user_defined_type_name - - AS - - - LOCATOR* - - - C_host_identifier - - - C_initial_value - - , - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' 'LOCATOR*' C_host_identifier C_initial_value? ( ',' C_host_identifier C_initial_value? )*
    -
    - referenced by: - - C_derived_variable - - C_REF_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - reference_type - - - - -
             ::= 'SQL' 'TYPE*' 'IS' reference_type
    -
    - referenced by: - - C_derived_variable - - C_initial_value: - - - - - - - - = - - - character_representation - - . - - - . - - - . - - - - - -
             ::= '=' character_representation . . .
    -
    - referenced by: - - C_BLOB_locator_variable - C_BLOB_variable - C_CLOB_locator_variable - C_CLOB_variable - C_NCHAR_VARYING_variable - C_NCHAR_variable - C_NCLOB_variable - C_VARCHAR_variable - C_array_locator_variable - C_character_variable - C_multiset_locator_variable - C_numeric_variable - C_user_defined_type_locator_variable - C_user_defined_type_variable - - embedded_SQL_COBOL_program: - - - - - - - - - - -
             ::=
    -
    - referenced by: - - embedded_SQL_host_program - - COBOL_variable_definition: - - - - - - - - COBOL_host_identifier - - - COBOL_type_specification - - - character_representation - - . - - - - - - - - referenced by: - - host_variable_definition - - COBOL_host_identifier: - - - - - - - - - - -
             ::=
    -
    - referenced by: - - COBOL_variable_definition - host_identifier - - COBOL_type_specification: - - - - - - - - COBOL_character_type - - - COBOL_national_character_type - - - COBOL_numeric_type - - - COBOL_integer_type - - - COBOL_derived_type_specification - - - - -
             ::= COBOL_character_type
    -
               | COBOL_national_character_type
    -
               | COBOL_numeric_type
    -
               | COBOL_integer_type
    -
               | COBOL_derived_type_specification
    -
    - referenced by: - - COBOL_variable_definition - - COBOL_derived_type_specification: - - - - - - - - COBOL_CLOB_variable - - - COBOL_NCLOB_variable - - - COBOL_BLOB_variable - - - COBOL_user_defined_type_variable - - - COBOL_CLOB_locator_variable - - - COBOL_BLOB_locator_variable - - - COBOL_array_locator_variable - - - COBOL_multiset_locator_variable - - - COBOL_user_defined_type_locator_variable - - - COBOL_REF_variable - - - - -
             ::= COBOL_CLOB_variable
    -
               | COBOL_NCLOB_variable
    -
               | COBOL_BLOB_variable
    -
               | COBOL_user_defined_type_variable
    -
               | COBOL_CLOB_locator_variable
    -
               | COBOL_BLOB_locator_variable
    -
               | COBOL_array_locator_variable
    -
               | COBOL_multiset_locator_variable
    - -
               | COBOL_REF_variable
    -
    - referenced by: - - COBOL_type_specification - - COBOL_character_type: - - - - - - - - CHARACTER - - - SET - - - IS - - - character_set_specification - - - PIC - - - PICTURE - - IS - - - X - - ( - - - length - - ) - - - - - -
             ::= ( 'CHARACTER' 'SET' 'IS'? character_set_specification )? ( PIC | PICTURE ) 'IS'? ( X ( '(' length ')' )? )*
    -
    - referenced by: - - COBOL_type_specification - - COBOL_national_character_type: - - - - - - - - CHARACTER - - - SET - - - IS - - - character_set_specification - - - PIC - - - PICTURE - - IS - - - N - - ( - - - length - - ) - - - - - -
             ::= ( 'CHARACTER' 'SET' 'IS'? character_set_specification )? ( PIC | PICTURE ) 'IS'? ( N ( '(' length ')' )? )*
    -
    - referenced by: - - COBOL_type_specification - - COBOL_CLOB_variable: - - - - - - - - USAGE* - - - IS - - - SQL - - - TYPE* - - - IS - - - CLOB - - - ( - - - large_object_length - - ) - - - CHARACTER - - - SET - - - IS - - - character_set_specification - - - - -
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' 'CLOB' '(' large_object_length ')' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )?
    -
    - referenced by: - - COBOL_derived_type_specification - - COBOL_NCLOB_variable: - - - - - - - - USAGE* - - - IS - - - SQL - - - TYPE* - - - IS - - - NCLOB - - - ( - - - large_object_length - - ) - - - CHARACTER - - - SET - - - IS - - - character_set_specification - - - - -
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' 'NCLOB' '(' large_object_length ')' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )?
    -
    - referenced by: - - COBOL_derived_type_specification - - COBOL_BLOB_variable: - - - - - - - - USAGE* - - - IS - - - SQL - - - TYPE* - - - IS - - - BLOB - - - ( - - - large_object_length - - ) - - - - - -
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' 'BLOB' '(' large_object_length ')'
    -
    - referenced by: - - COBOL_derived_type_specification - - COBOL_user_defined_type_variable: - - - - - - - - USAGE* - - - IS - - - SQL - - - TYPE* - - - IS - - - path_resolved_user_defined_type_name - - AS - - - predefined_type - - - - -
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' predefined_type
    -
    - referenced by: - - COBOL_derived_type_specification - - COBOL_CLOB_locator_variable: - - - - - - - - USAGE* - - - IS - - - SQL - - - TYPE* - - - IS - - - CLOB - - - AS - - - LOCATOR* - - - - - -
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' 'CLOB' 'AS' 'LOCATOR*'
    -
    - referenced by: - - COBOL_derived_type_specification - - COBOL_BLOB_locator_variable: - - - - - - - - USAGE* - - - IS - - - SQL - - - TYPE* - - - IS - - - BLOB - - - AS - - - LOCATOR* - - - - - -
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' 'BLOB' 'AS' 'LOCATOR*'
    -
    - referenced by: - - COBOL_derived_type_specification - - COBOL_array_locator_variable: - - - - - - - - USAGE* - - - IS - - - SQL - - - TYPE* - - - IS - - - array_type - - AS - - - LOCATOR* - - - - - -
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' array_type 'AS' 'LOCATOR*'
    -
    - referenced by: - - COBOL_derived_type_specification - - COBOL_multiset_locator_variable: - - - - - - - - USAGE* - - - IS - - - SQL - - - TYPE* - - - IS - - - multiset_type - - AS - - - LOCATOR* - - - - - -
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' multiset_type 'AS' 'LOCATOR*'
    -
    - referenced by: - - COBOL_derived_type_specification - - COBOL_user_defined_type_locator_variable: - - - - - - - - USAGE* - - - IS - - - SQL - - - TYPE* - - - IS - - - path_resolved_user_defined_type_name - - AS - - - LOCATOR* - - - - - -
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' 'LOCATOR*'
    -
    - referenced by: - - COBOL_derived_type_specification - - COBOL_REF_variable: - - - - - - - - USAGE* - - - IS - - - SQL - - - TYPE* - - - IS - - - reference_type - - - - -
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' reference_type
    -
    - referenced by: - - COBOL_derived_type_specification - - COBOL_numeric_type: - - - - - - - - PIC - - - PICTURE - - IS - - - S - - - COBOL_nines_specification - - USAGE* - - - IS - - - DISPLAY - - - SIGN - - LEADING - - - SEPARATE - - - - -
             ::= ( PIC | PICTURE ) 'IS'? S COBOL_nines_specification ( 'USAGE*' 'IS'? )? DISPLAY SIGN 'LEADING' SEPARATE
    -
    - referenced by: - - COBOL_type_specification - - COBOL_nines_specification: - - - - - - - - COBOL_nines - - - V - - - COBOL_nines - - - V - - - COBOL_nines - - - - -
             ::= COBOL_nines ( V COBOL_nines? )?
    -
               | V COBOL_nines
    -
    - referenced by: - - COBOL_numeric_type - - COBOL_integer_type: - - - - - - - - COBOL_binary_integer - - - - -
             ::= COBOL_binary_integer
    -
    - referenced by: - - COBOL_type_specification - - COBOL_binary_integer: - - - - - - - - PIC - - - PICTURE - - IS - - - S - - - COBOL_nines - - USAGE* - - - IS - - - BINARY - - - - - -
             ::= ( PIC | PICTURE ) 'IS'? S COBOL_nines ( 'USAGE*' 'IS'? )? 'BINARY'
    -
    - referenced by: - - COBOL_integer_type - - COBOL_nines: - - - - - - - - ( - - - length - - ) - - - - - -
             ::= ( '(' length ')' )*
    -
    - referenced by: - - COBOL_binary_integer - COBOL_nines_specification - - embedded_SQL_Fortran_program: - - - - - - - - - - -
             ::=
    -
    - referenced by: - - embedded_SQL_host_program - - Fortran_variable_definition: - - - - - - - - Fortran_type_specification - - - Fortran_host_identifier - - , - - - - - - - - referenced by: - - host_variable_definition - - Fortran_host_identifier: - - - - - - - - - - -
             ::=
    -
    - referenced by: - - Fortran_variable_definition - host_identifier - - Fortran_type_specification: - - - - - - - - CHARACTER - - - KIND - - = - - - n - - * - - - length - - CHARACTER - - - SET - - - IS - - - character_set_specification - - INTEGER - - - REAL - - - DOUBLE - - - PRECISION - - - LOGICAL - - - Fortran_derived_type_specification - - - - -
             ::= 'CHARACTER' ( KIND '=' n )? '*' length? ( 'CHARACTER' 'SET' 'IS'? character_set_specification )?
    -
               | 'INTEGER'
    -
               | 'REAL'
    -
               | 'DOUBLE' 'PRECISION'
    -
               | LOGICAL
    -
               | Fortran_derived_type_specification
    -
    - referenced by: - - Fortran_variable_definition - - Fortran_derived_type_specification: - - - - - - - - Fortran_CLOB_variable - - - Fortran_BLOB_variable - - - Fortran_user_defined_type_variable - - - Fortran_CLOB_locator_variable - - - Fortran_BLOB_locator_variable - - - Fortran_user_defined_type_locator_variable - - - Fortran_array_locator_variable - - - Fortran_multiset_locator_variable - - - Fortran_REF_variable - - - - -
             ::= Fortran_CLOB_variable
    -
               | Fortran_BLOB_variable
    -
               | Fortran_user_defined_type_variable
    -
               | Fortran_CLOB_locator_variable
    -
               | Fortran_BLOB_locator_variable
    - -
               | Fortran_array_locator_variable
    -
               | Fortran_multiset_locator_variable
    -
               | Fortran_REF_variable
    -
    - referenced by: - - Fortran_type_specification - - Fortran_CLOB_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - CLOB - - - ( - - - large_object_length - - ) - - - CHARACTER - - - SET - - - IS - - - character_set_specification - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' '(' large_object_length ')' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )?
    -
    - referenced by: - - Fortran_derived_type_specification - - Fortran_BLOB_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - BLOB - - - ( - - - large_object_length - - ) - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' '(' large_object_length ')'
    -
    - referenced by: - - Fortran_derived_type_specification - - Fortran_user_defined_type_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - path_resolved_user_defined_type_name - - AS - - - predefined_type - - - - -
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' predefined_type
    -
    - referenced by: - - Fortran_derived_type_specification - - Fortran_CLOB_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - CLOB - - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' 'AS' 'LOCATOR*'
    -
    - referenced by: - - Fortran_derived_type_specification - - Fortran_BLOB_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - BLOB - - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' 'AS' 'LOCATOR*'
    -
    - referenced by: - - Fortran_derived_type_specification - - Fortran_user_defined_type_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - path_resolved_user_defined_type_name - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' 'LOCATOR*'
    -
    - referenced by: - - Fortran_derived_type_specification - - Fortran_array_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - array_type - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' array_type 'AS' 'LOCATOR*'
    -
    - referenced by: - - Fortran_derived_type_specification - - Fortran_multiset_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - multiset_type - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' multiset_type 'AS' 'LOCATOR*'
    -
    - referenced by: - - Fortran_derived_type_specification - - Fortran_REF_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - reference_type - - - - -
             ::= 'SQL' 'TYPE*' 'IS' reference_type
    -
    - referenced by: - - Fortran_derived_type_specification - - embedded_SQL_MUMPS_program: - - - - - - - - - - -
             ::=
    -
    - referenced by: - - embedded_SQL_host_program - - MUMPS_variable_definition: - - - - - - - - MUMPS_numeric_variable - - - MUMPS_character_variable - - - MUMPS_derived_type_specification - - ; - - - - - - - - referenced by: - - host_variable_definition - - MUMPS_character_variable: - - - - - - - - VARCHAR - - - MUMPS_host_identifier - - - MUMPS_length_specification - - , - - - - - - - - referenced by: - - MUMPS_variable_definition - - MUMPS_host_identifier: - - - - - - - - - - -
             ::=
    -
    - referenced by: - - MUMPS_character_variable - MUMPS_numeric_variable - host_identifier - - MUMPS_length_specification: - - - - - - - - ( - - - length - - ) - - - - - -
             ::= '(' length ')'
    -
    - referenced by: - - MUMPS_character_variable - - MUMPS_numeric_variable: - - - - - - - - MUMPS_type_specification - - - MUMPS_host_identifier - - , - - - - - - - - referenced by: - - MUMPS_variable_definition - - MUMPS_type_specification: - - - - - - - - INT - - - DEC - - - ( - - - precision - - , - - - scale - - ) - - - REAL - - - - - -
             ::= 'INT'
    -
               | 'DEC' ( '(' precision ( ',' scale )? ')' )?
    -
               | 'REAL'
    -
    - referenced by: - - MUMPS_numeric_variable - - MUMPS_derived_type_specification: - - - - - - - - MUMPS_CLOB_variable - - - MUMPS_BLOB_variable - - - MUMPS_user_defined_type_variable - - - MUMPS_CLOB_locator_variable - - - MUMPS_BLOB_locator_variable - - - MUMPS_user_defined_type_locator_variable - - - MUMPS_array_locator_variable - - - MUMPS_multiset_locator_variable - - - MUMPS_REF_variable - - - - -
             ::= MUMPS_CLOB_variable
    -
               | MUMPS_BLOB_variable
    -
               | MUMPS_user_defined_type_variable
    -
               | MUMPS_CLOB_locator_variable
    -
               | MUMPS_BLOB_locator_variable
    - -
               | MUMPS_array_locator_variable
    -
               | MUMPS_multiset_locator_variable
    -
               | MUMPS_REF_variable
    -
    - referenced by: - - MUMPS_variable_definition - - MUMPS_CLOB_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - CLOB - - - ( - - - large_object_length - - ) - - - CHARACTER - - - SET - - - IS - - - character_set_specification - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' '(' large_object_length ')' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )?
    -
    - referenced by: - - MUMPS_derived_type_specification - - MUMPS_BLOB_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - BLOB - - - ( - - - large_object_length - - ) - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' '(' large_object_length ')'
    -
    - referenced by: - - MUMPS_derived_type_specification - - MUMPS_user_defined_type_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - path_resolved_user_defined_type_name - - AS - - - predefined_type - - - - -
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' predefined_type
    -
    - referenced by: - - MUMPS_derived_type_specification - - MUMPS_CLOB_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - CLOB - - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' 'AS' 'LOCATOR*'
    -
    - referenced by: - - MUMPS_derived_type_specification - - MUMPS_BLOB_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - BLOB - - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' 'AS' 'LOCATOR*'
    -
    - referenced by: - - MUMPS_derived_type_specification - - MUMPS_user_defined_type_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - path_resolved_user_defined_type_name - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' 'LOCATOR*'
    -
    - referenced by: - - MUMPS_derived_type_specification - - MUMPS_array_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - array_type - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' array_type 'AS' 'LOCATOR*'
    -
    - referenced by: - - MUMPS_derived_type_specification - - MUMPS_multiset_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - multiset_type - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' multiset_type 'AS' 'LOCATOR*'
    -
    - referenced by: - - MUMPS_derived_type_specification - - MUMPS_REF_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - reference_type - - - - -
             ::= 'SQL' 'TYPE*' 'IS' reference_type
    -
    - referenced by: - - MUMPS_derived_type_specification - - embedded_SQL_Pascal_program: - - - - - - - - - - -
             ::=
    -
    - referenced by: - - embedded_SQL_host_program - - Pascal_variable_definition: - - - - - - - - Pascal_host_identifier - - , - - - : - - - Pascal_type_specification - - ; - - - - - - - - referenced by: - - host_variable_definition - - Pascal_host_identifier: - - - - - - - - - - -
             ::=
    -
    - referenced by: - - Pascal_variable_definition - host_identifier - - Pascal_type_specification: - - - - - - - - PACKED - - ARRAY - - - [ - - - .. - - - length - - ] - - - OF - - - CHAR - - - CHARACTER - - - SET - - - IS - - - character_set_specification - - INTEGER - - - REAL - - - BOOLEAN - - - Pascal_derived_type_specification - - - - -
             ::= ( PACKED 'ARRAY' '[' '..' length ']' 'OF' )? 'CHAR' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )?
    -
               | 'INTEGER'
    -
               | 'REAL'
    -
               | 'BOOLEAN'
    -
               | Pascal_derived_type_specification
    -
    - referenced by: - - Pascal_variable_definition - - Pascal_derived_type_specification: - - - - - - - - Pascal_CLOB_variable - - - Pascal_BLOB_variable - - - Pascal_user_defined_type_variable - - - Pascal_CLOB_locator_variable - - - Pascal_BLOB_locator_variable - - - Pascal_user_defined_type_locator_variable - - - Pascal_array_locator_variable - - - Pascal_multiset_locator_variable - - - Pascal_REF_variable - - - - -
             ::= Pascal_CLOB_variable
    -
               | Pascal_BLOB_variable
    -
               | Pascal_user_defined_type_variable
    -
               | Pascal_CLOB_locator_variable
    -
               | Pascal_BLOB_locator_variable
    - -
               | Pascal_array_locator_variable
    -
               | Pascal_multiset_locator_variable
    -
               | Pascal_REF_variable
    -
    - referenced by: - - Pascal_type_specification - - Pascal_CLOB_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - CLOB - - - ( - - - large_object_length - - ) - - - CHARACTER - - - SET - - - IS - - - character_set_specification - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' '(' large_object_length ')' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )?
    -
    - referenced by: - - Pascal_derived_type_specification - - Pascal_BLOB_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - BLOB - - - ( - - - large_object_length - - ) - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' '(' large_object_length ')'
    -
    - referenced by: - - Pascal_derived_type_specification - - Pascal_CLOB_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - CLOB - - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' 'AS' 'LOCATOR*'
    -
    - referenced by: - - Pascal_derived_type_specification - - Pascal_user_defined_type_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - path_resolved_user_defined_type_name - - AS - - - predefined_type - - - - -
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' predefined_type
    -
    - referenced by: - - Pascal_derived_type_specification - - Pascal_BLOB_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - BLOB - - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' 'AS' 'LOCATOR*'
    -
    - referenced by: - - Pascal_derived_type_specification - - Pascal_user_defined_type_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - path_resolved_user_defined_type_name - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' 'LOCATOR*'
    -
    - referenced by: - - Pascal_derived_type_specification - - Pascal_array_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - array_type - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' array_type 'AS' 'LOCATOR*'
    -
    - referenced by: - - Pascal_derived_type_specification - - Pascal_multiset_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - multiset_type - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' multiset_type 'AS' 'LOCATOR*'
    -
    - referenced by: - - Pascal_derived_type_specification - - Pascal_REF_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - reference_type - - - - -
             ::= 'SQL' 'TYPE*' 'IS' reference_type
    -
    - referenced by: - - Pascal_derived_type_specification - - embedded_SQL_PL_I_program: - - - - - - - - - - -
             ::=
    -
    - referenced by: - - embedded_SQL_host_program - - PL_I_variable_definition: - - - - - - - - DCL - - DECLARE - - - PL_I_host_identifier - - ( - - - PL_I_host_identifier - - , - - - ) - - - PL_I_type_specification - - - character_representation - - ; - - - - - - - - referenced by: - - host_variable_definition - - PL_I_host_identifier: - - - - - - - - - - -
             ::=
    -
    - referenced by: - - PL_I_variable_definition - host_identifier - - PL_I_type_specification: - - - - - - - - CHAR - - - CHARACTER - - - VARYING - - - ( - - - length - - ) - - - CHARACTER - - - SET - - - IS - - - character_set_specification - - - PL_I_type_fixed_decimal - - ( - - - precision - - , - - - scale - - - PL_I_type_float_binary - - ( - - - precision - - ) - - - PL_I_type_fixed_binary - - ( - - - precision - - ) - - - PL_I_derived_type_specification - - - - -
             ::= ( 'CHAR' | 'CHARACTER' ) 'VARYING'? '(' length ')' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )?
    -
               | ( PL_I_type_fixed_decimal '(' precision ',' scale? | PL_I_type_float_binary '(' precision ) ')'
    -
               | PL_I_type_fixed_binary ( '(' precision ')' )?
    -
               | PL_I_derived_type_specification
    -
    - referenced by: - - PL_I_variable_definition - - PL_I_derived_type_specification: - - - - - - - - PL_I_CLOB_variable - - - PL_I_BLOB_variable - - - PL_I_user_defined_type_variable - - - PL_I_CLOB_locator_variable - - - PL_I_BLOB_locator_variable - - - PL_I_user_defined_type_locator_variable - - - PL_I_array_locator_variable - - - PL_I_multiset_locator_variable - - - PL_I_REF_variable - - - - -
             ::= PL_I_CLOB_variable
    -
               | PL_I_BLOB_variable
    -
               | PL_I_user_defined_type_variable
    -
               | PL_I_CLOB_locator_variable
    -
               | PL_I_BLOB_locator_variable
    - -
               | PL_I_array_locator_variable
    -
               | PL_I_multiset_locator_variable
    -
               | PL_I_REF_variable
    -
    - referenced by: - - PL_I_type_specification - - PL_I_CLOB_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - CLOB - - - ( - - - large_object_length - - ) - - - CHARACTER - - - SET - - - IS - - - character_set_specification - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' '(' large_object_length ')' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )?
    -
    - referenced by: - - PL_I_derived_type_specification - - PL_I_BLOB_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - BLOB - - - ( - - - large_object_length - - ) - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' '(' large_object_length ')'
    -
    - referenced by: - - PL_I_derived_type_specification - - PL_I_user_defined_type_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - path_resolved_user_defined_type_name - - AS - - - predefined_type - - - - -
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' predefined_type
    -
    - referenced by: - - PL_I_derived_type_specification - - PL_I_CLOB_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - CLOB - - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' 'AS' 'LOCATOR*'
    -
    - referenced by: - - PL_I_derived_type_specification - - PL_I_BLOB_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - BLOB - - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' 'AS' 'LOCATOR*'
    -
    - referenced by: - - PL_I_derived_type_specification - - PL_I_user_defined_type_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - path_resolved_user_defined_type_name - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' 'LOCATOR*'
    -
    - referenced by: - - PL_I_derived_type_specification - - PL_I_array_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - array_type - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' array_type 'AS' 'LOCATOR*'
    -
    - referenced by: - - PL_I_derived_type_specification - - PL_I_multiset_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - multiset_type - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' multiset_type 'AS' 'LOCATOR*'
    -
    - referenced by: - - PL_I_derived_type_specification - - PL_I_REF_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - reference_type - - - - -
             ::= 'SQL' 'TYPE*' 'IS' reference_type
    -
    - referenced by: - - PL_I_derived_type_specification - - PL_I_type_fixed_decimal: - - - - - - - - DEC - - - DECIMAL - - - FIXED - - - FIXED - - DEC - - - DECIMAL - - - - - -
             ::= ( 'DEC' | 'DECIMAL' ) FIXED
    -
               | FIXED ( 'DEC' | 'DECIMAL' )
    -
    - referenced by: - - PL_I_type_specification - - PL_I_type_fixed_binary: - - - - - - - - BIN - - BINARY - - - FIXED - - - FIXED - - - BIN - - BINARY - - - - - -
             ::= ( BIN | 'BINARY' ) FIXED
    -
               | FIXED ( BIN | 'BINARY' )
    -
    - referenced by: - - PL_I_type_specification - - PL_I_type_float_binary: - - - - - - - - BIN - - BINARY - - - FLOAT - - - FLOAT - - - BIN - - BINARY - - - - - -
             ::= ( BIN | 'BINARY' ) 'FLOAT'
    -
               | 'FLOAT' ( BIN | 'BINARY' )
    -
    - referenced by: - - PL_I_type_specification - - direct_implementation_defined_statement: - - - - - - - - - - -
             ::=
    -
    - referenced by: - - directly_executable_statement - - direct_select_statement__multiple_rows: - - - - - - - - cursor_specification - - - - -
             ::= cursor_specification
    -
    - referenced by: - - direct_SQL_data_statement - - get_diagnostics_statement: - - - - - - - - GET - - - DIAGNOSTICS* - - - SQL_diagnostics_information - - - - -
             ::= 'GET' 'DIAGNOSTICS*' SQL_diagnostics_information
    -
    - referenced by: - - SQL_diagnostics_statement - - SQL_diagnostics_information: - - - - - - - - statement_information - - - condition_information - - - - -
             ::= statement_information
    -
               | condition_information
    -
    - referenced by: - - get_diagnostics_statement - - statement_information: - - - - - - - - statement_information_item - - , - - - - - - - - referenced by: - - SQL_diagnostics_information - - statement_information_item: - - - - - - - - simple_target_specification - - = - - - statement_information_item_name - - - - - - - referenced by: - - statement_information - - statement_information_item_name: - - - - - - - - NUMBER* - - - MORE* - - - COMMAND_FUNCTION* - - - COMMAND_FUNCTION_CODE* - - - DYNAMIC_FUNCTION* - - - DYNAMIC_FUNCTION_CODE* - - - ROW_COUNT* - - - TRANSACTIONS_COMMITTED* - - - TRANSACTIONS_ROLLED_BACK* - - - TRANSACTION_ACTIVE* - - - - - -
             ::= 'NUMBER*'
    -
               | 'MORE*'
    -
               | 'COMMAND_FUNCTION*'
    -
               | 'COMMAND_FUNCTION_CODE*'
    -
               | 'DYNAMIC_FUNCTION*'
    -
               | 'DYNAMIC_FUNCTION_CODE*'
    -
               | 'ROW_COUNT*'
    -
               | 'TRANSACTIONS_COMMITTED*'
    -
               | 'TRANSACTIONS_ROLLED_BACK*'
    -
               | 'TRANSACTION_ACTIVE*'
    -
    - referenced by: - - statement_information_item - - condition_information: - - - - - - - - EXCEPTION* - - - CONDITION* - - - condition_number - - - condition_information_item - - , - - - - - -
             ::= ( 'EXCEPTION*' | 'CONDITION*' ) condition_number condition_information_item ( ',' condition_information_item )*
    -
    - referenced by: - - SQL_diagnostics_information - - condition_information_item: - - - - - - - - simple_target_specification - - = - - - condition_information_item_name - - - - - - - referenced by: - - condition_information - - condition_information_item_name: - - - - - - - - CATALOG_NAME* - - - CLASS_ORIGIN* - - - COLUMN_NAME* - - - CONDITION_NUMBER* - - - CONNECTION_NAME* - - - CONSTRAINT_CATALOG* - - - CONSTRAINT_NAME* - - - CONSTRAINT_SCHEMA* - - - CURSOR_NAME* - - - MESSAGE_LENGTH* - - - MESSAGE_OCTET_LENGTH* - - - MESSAGE_TEXT* - - - PARAMETER_MODE* - - - PARAMETER_NAME* - - - PARAMETER_ORDINAL_POSITION* - - - RETURNED_SQLSTATE* - - - ROUTINE_CATALOG* - - - ROUTINE_NAME* - - - ROUTINE_SCHEMA* - - - SCHEMA_NAME* - - - SERVER_NAME* - - - SPECIFIC_NAME* - - - SUBCLASS_ORIGIN* - - - TABLE_NAME* - - - TRIGGER_CATALOG* - - - TRIGGER_NAME* - - - TRIGGER_SCHEMA* - - - - - -
             ::= 'CATALOG_NAME*'
    -
               | 'CLASS_ORIGIN*'
    -
               | 'COLUMN_NAME*'
    -
               | 'CONDITION_NUMBER*'
    -
               | 'CONNECTION_NAME*'
    -
               | 'CONSTRAINT_CATALOG*'
    -
               | 'CONSTRAINT_NAME*'
    -
               | 'CONSTRAINT_SCHEMA*'
    -
               | 'CURSOR_NAME*'
    -
               | 'MESSAGE_LENGTH*'
    -
               | 'MESSAGE_OCTET_LENGTH*'
    -
               | 'MESSAGE_TEXT*'
    -
               | 'PARAMETER_MODE*'
    -
               | 'PARAMETER_NAME*'
    -
               | 'PARAMETER_ORDINAL_POSITION*'
    -
               | 'RETURNED_SQLSTATE*'
    -
               | 'ROUTINE_CATALOG*'
    -
               | 'ROUTINE_NAME*'
    -
               | 'ROUTINE_SCHEMA*'
    -
               | 'SCHEMA_NAME*'
    -
               | 'SERVER_NAME*'
    -
               | 'SPECIFIC_NAME*'
    -
               | 'SUBCLASS_ORIGIN*'
    -
               | 'TABLE_NAME*'
    -
               | 'TRIGGER_CATALOG*'
    -
               | 'TRIGGER_NAME*'
    -
               | 'TRIGGER_SCHEMA*'
    -
    - referenced by: - - condition_information_item - - condition_number: - - - - - - - - simple_value_specification - - - - -
             ::= simple_value_specification
    -
    - referenced by: - - condition_information - - ISOLATION: - - - - - - - - ISOLATION - - - ISOLATION* - - - - - -
             ::= 'ISOLATION'
    -
               | 'ISOLATION*'
    -
    - referenced by: - - isolation_level - non_reserved_word - reserved_word - - - - - -   - - ... generated by RR - Railroad Diagram Generator - - - - - - - - R - R - - - - - - \ No newline at end of file diff --git a/sql-2003-2.ebnf.readme b/sql-2003-2.ebnf.readme index 3548673..bf3fada 100644 --- a/sql-2003-2.ebnf.readme +++ b/sql-2003-2.ebnf.readme @@ -5,7 +5,7 @@ Many thanx Domingo! It is the latter file as pure ebnf, i.e. with the original markup stripped. -The corresponding XHTML + SVG file is sql-2003-2-railway-diagrams.xhtml. +The corresponding XHTML + SVG file is sql-2003-2-railroad-diagrams.xhtml. The grammar can be rendered as railroad diagrams on the website https://www.bottlecaps.de/rr/ui. Just copy it into the Edit Grammar tab, and click View Diagram. Then wait a moment :-). @@ -13,6 +13,6 @@ Just copy it into the Edit Grammar tab, and click View Diagram. Then wait a mome Domingo notes: 1. Non reserved words appear with * as suffix, ex: SUBSTRING -> SUBSTRING*. -2. You can navigate through the railway's grammar by clicking the rectangular boxes. +2. You can navigate through the railroad's grammar by clicking the rectangular boxes. Finally, you can download the rendered railroad as either XHTML + SVG or HTML + PNG. diff --git a/sql-2016-railway-diagrams.xhtml b/sql-2016-railway-diagrams.xhtml deleted file mode 100644 index 77d0689..0000000 --- a/sql-2016-railway-diagrams.xhtml +++ /dev/null @@ -1,91823 +0,0 @@ - - - - - - - - - - - direct_SQL_statement: - - - - - - - - directly_executable_statement - - ; - - - - - -
             ::= directly_executable_statement ';'
    -
    - no referencesdirectly_executable_statement: - - - - - - - - direct_SQL_data_statement - - - SQL_schema_statement - - - SQL_transaction_statement - - - SQL_connection_statement - - - SQL_session_statement - - !! See the Syntax Rules. - - - - - -
             ::= direct_SQL_data_statement
    -
               | SQL_schema_statement
    -
               | SQL_transaction_statement
    -
               | SQL_connection_statement
    -
               | SQL_session_statement
    -
               | '!! See the Syntax Rules.'
    -
    - referenced by: - - direct_SQL_statement - - direct_SQL_data_statement: - - - - - - - - delete_statement__searched - - - direct_select_statement__multiple_rows - - - insert_statement - - - update_statement__searched - - - truncate_table_statement - - - merge_statement - - - temporary_table_declaration - - - - -
             ::= delete_statement__searched
    - -
               | insert_statement
    -
               | update_statement__searched
    -
               | truncate_table_statement
    -
               | merge_statement
    -
               | temporary_table_declaration
    -
    - referenced by: - - directly_executable_statement - - SQL_terminal_character: - - - - - - - - SQL_language_character - - - - -
             ::= SQL_language_character
    -
    - no referencesSQL_language_character: - - - - - - - - simple_Latin_letter - - - digit - - - SQL_special_character - - - - -
             ::= simple_Latin_letter
    -
               | digit
    -
               | SQL_special_character
    -
    - referenced by: - - SQL_terminal_character - - simple_Latin_letter: - - - - - - - - simple_Latin_upper_case_letter - - - simple_Latin_lower_case_letter - - - - -
             ::= simple_Latin_upper_case_letter
    -
               | simple_Latin_lower_case_letter
    -
    - referenced by: - - SQL_language_character - SQL_language_identifier_part - SQL_language_identifier_start - - simple_Latin_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 - - - W - - - X - - - Y - - - Z - - - - - -
             ::= 'A'
    -
               | 'B'
    -
               | 'C'
    -
               | 'D'
    -
               | 'E'
    -
               | 'F'
    -
               | 'G'
    -
               | 'H'
    -
               | 'I'
    -
               | 'J'
    -
               | 'K'
    -
               | 'L'
    -
               | 'M'
    -
               | 'N'
    -
               | 'O'
    -
               | 'P'
    -
               | 'Q'
    -
               | 'R'
    -
               | 'S'
    -
               | 'T'
    -
               | 'U'
    -
               | 'V'
    -
               | 'W'
    -
               | 'X'
    -
               | 'Y'
    -
               | 'Z'
    -
    - referenced by: - - SQLSTATE_char - simple_Latin_letter - - simple_Latin_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 - - - y - - - z - - - - - -
             ::= 'a'
    -
               | 'b'
    -
               | 'c'
    -
               | 'd'
    -
               | 'e'
    -
               | 'f'
    -
               | 'g'
    -
               | 'h'
    -
               | 'i'
    -
               | 'j'
    -
               | 'k'
    -
               | 'l'
    -
               | 'm'
    -
               | 'n'
    -
               | 'o'
    -
               | 'p'
    -
               | 'q'
    -
               | 'r'
    -
               | 's'
    -
               | 't'
    -
               | 'u'
    -
               | 'v'
    -
               | 'w'
    -
               | 'x'
    -
               | 'y'
    -
               | 'z'
    -
    - referenced by: - - simple_Latin_letter - - digit: - - - - - - - - 0 - - - 1 - - - 2 - - - 3 - - - 4 - - - 5 - - - 6 - - - 7 - - - 8 - - - 9 - - - - -
    digit    ::= '0'
    -
               | '1'
    -
               | '2'
    -
               | '3'
    -
               | '4'
    -
               | '5'
    -
               | '6'
    -
               | '7'
    -
               | '8'
    -
               | '9'
    -
    - referenced by: - - SQLSTATE_char - SQL_language_character - SQL_language_identifier_part - hexit - large_object_length_token - unsigned_integer - - SQL_special_character: - - - - - - - - !! See the Syntax Rules. - - - " - - - % - - - & - - - ' - - - ( - - - ) - - - * - - - + - - - , - - - - - - - . - - - / - - - : - - - ; - - - < - - - = - - - > - - - ? - - - [ - - - ] - - - ^ - - - _ - - - | - - - { - - - } - - - $ - - - - - -
             ::= '!! See the Syntax Rules.'
    -
               | '"'
    -
               | '%'
    -
               | '&'
    -
               | "'"
    -
               | '('
    -
               | ')'
    -
               | '*'
    -
               | '+'
    -
               | ','
    -
               | '-'
    -
               | '.'
    -
               | '/'
    -
               | ':'
    -
               | ';'
    -
               | '<'
    -
               | '='
    -
               | '>'
    -
               | '?'
    -
               | '['
    -
               | ']'
    -
               | '^'
    -
               | '_'
    -
               | '|'
    -
               | '{'
    -
               | '}'
    -
               | '$'
    -
    - referenced by: - - SQL_language_character - delimiter_token - - left_bracket_or_trigraph: - - - - - - - - [ - - - ??( - - - - - -
             ::= '['
    -
               | '??('
    -
    - referenced by: - - array_element_reference - array_type - array_value_constructor_by_enumeration - empty_specification - multiset_value_constructor_by_enumeration - target_array_element_specification - update_target - - right_bracket_or_trigraph: - - - - - - - - ] - - - ??) - - - - - -
             ::= ']'
    -
               | '??)'
    -
    - referenced by: - - array_element_reference - array_type - array_value_constructor_by_enumeration - empty_specification - multiset_value_constructor_by_enumeration - target_array_element_specification - update_target - - token: - - - - - - - - nondelimiter_token - - - delimiter_token - - - - -
               | delimiter_token
    -
    - no referencesnondelimiter_token: - - - - - - - - regular_identifier - - - key_word - - - unsigned_numeric_literal - - - national_character_string_literal - - - binary_string_literal - - - large_object_length_token - - - Unicode_delimited_identifier - - - Unicode_character_string_literal - - - SQL_language_identifier - - - - -
             ::= regular_identifier
    -
               | key_word
    -
               | unsigned_numeric_literal
    -
               | national_character_string_literal
    -
               | binary_string_literal
    -
               | large_object_length_token
    -
               | Unicode_delimited_identifier
    -
               | Unicode_character_string_literal
    -
               | SQL_language_identifier
    -
    - referenced by: - - token - - regular_identifier: - - - - - - - - identifier_body - - - - -
             ::= identifier_body
    -
    - referenced by: - - actual_identifier - nondelimiter_token - - identifier_body: - - - - - - - - identifier_start - - - identifier_part - - - - -
             ::= identifier_start identifier_part*
    -
    - referenced by: - - regular_identifier - - identifier_part: - - - - - - - - identifier_start - - - identifier_extend - - - - -
             ::= identifier_start
    -
               | identifier_extend
    -
    - referenced by: - - identifier_body - - large_object_length_token: - - - - - - - - digit - - - multiplier - - - - -
             ::= digit+ multiplier
    -
    - referenced by: - - large_object_length - nondelimiter_token - - multiplier: - - - - - - - - K - - - M - - - G - - - T - - - P - - - - - -
             ::= 'K'
    -
               | 'M'
    -
               | 'G'
    -
               | 'T'
    -
               | 'P'
    -
    - referenced by: - - large_object_length - large_object_length_token - - delimited_identifier: - - - - - - - - " - - - delimited_identifier_body - - " - - - - - -
             ::= '"' delimited_identifier_body '"'
    -
    - referenced by: - - actual_identifier - delimiter_token - - delimited_identifier_body: - - - - - - - - delimited_identifier_part - - - - -
             ::= delimited_identifier_part+
    -
    - referenced by: - - delimited_identifier - - delimited_identifier_part: - - - - - - - - !! See the Syntax Rules. - - - "" - - - - - -
             ::= '!! See the Syntax Rules.'
    -
               | '""'
    -
    - referenced by: - - Unicode_identifier_part - delimited_identifier_body - - Unicode_delimited_identifier: - - - - - - - - U - - & - - - " - - - Unicode_delimiter_body - - " - - - Unicode_escape_specifier - - - - -
             ::= U '&' '"' Unicode_delimiter_body '"' Unicode_escape_specifier
    -
    - referenced by: - - actual_identifier - nondelimiter_token - - Unicode_escape_specifier: - - - - - - - - UESCAPE - - - ' - - - !! See the Syntax Rules. - - - ' - - - - - -
             ::= ( 'UESCAPE' "'" '!! See the Syntax Rules.' "'" )?
    -
    - referenced by: - - Unicode_character_string_literal - Unicode_delimited_identifier - - Unicode_delimiter_body: - - - - - - - - Unicode_identifier_part - - - - -
             ::= Unicode_identifier_part+
    -
    - referenced by: - - Unicode_delimited_identifier - - Unicode_identifier_part: - - - - - - - - delimited_identifier_part - - - Unicode_escape_value - - - - -
             ::= delimited_identifier_part
    -
               | Unicode_escape_value
    -
    - referenced by: - - Unicode_delimiter_body - - Unicode_escape_value: - - - - - - - - Unicode_4_digit_escape_value - - - Unicode_6_digit_escape_value - - - Unicode_character_escape_value - - - - -
             ::= Unicode_4_digit_escape_value
    -
               | Unicode_6_digit_escape_value
    -
               | Unicode_character_escape_value
    -
    - referenced by: - - Unicode_identifier_part - Unicode_representation - - Unicode_4_digit_escape_value: - - - - - - - - !! See the Syntax Rules. - - - hexit - - - hexit - - - hexit - - - hexit - - - - -
             ::= '!! See the Syntax Rules.' hexit hexit hexit hexit
    -
    - referenced by: - - Unicode_escape_value - - Unicode_6_digit_escape_value: - - - - - - - - !! See the Syntax Rules. - - - + - - - hexit - - - hexit - - - hexit - - - hexit - - - hexit - - - hexit - - - - -
             ::= '!! See the Syntax Rules.' '+' hexit hexit hexit hexit hexit hexit
    -
    - referenced by: - - Unicode_escape_value - - Unicode_character_escape_value: - - - - - - - - !! See the Syntax Rules. - - - !! See the Syntax Rules. - - - - - -
             ::= '!! See the Syntax Rules.' '!! See the Syntax Rules.'
    -
    - referenced by: - - Unicode_escape_value - - delimiter_token: - - - - - - - - character_string_literal - - - date_string - - - time_string - - - timestamp_string - - - interval_string - - - delimited_identifier - - - SQL_special_character - - <> - - - >= - - - <= - - - || - - - -> - - - ??( - - - ??) - - - :: - - - .. - - - => - - - {- - - - -} - - - - - -
             ::= character_string_literal
    -
               | date_string
    -
               | time_string
    -
               | timestamp_string
    -
               | interval_string
    -
               | delimited_identifier
    -
               | SQL_special_character
    -
               | '<>'
    -
               | '>='
    -
               | '<='
    -
               | '||'
    -
               | '->'
    -
               | '??('
    -
               | '??)'
    -
               | '::'
    -
               | '..'
    -
               | '=>'
    -
               | '{-'
    -
               | '-}'
    -
    - referenced by: - - token - - separator: - - - - - - - - comment - - - white_space - - - - -
             ::= ( comment | white_space )+
    -
    - referenced by: - - Unicode_character_string_literal - binary_string_literal - bracketed_comment_contents - character_string_literal - national_character_string_literal - - comment: - - - - - - - - simple_comment - - - bracketed_comment - - - - -
               | bracketed_comment
    -
    - referenced by: - - separator - - simple_comment: - - - - - - - - simple_comment_introducer - - - comment_character - - - newline - - - - - - - referenced by: - - comment - - simple_comment_introducer: - - - - - - - - - - - - - - - - - - -
             ::= '-' '-'
    -
    - referenced by: - - simple_comment - - bracketed_comment: - - - - - - - - bracketed_comment_introducer - - - bracketed_comment_contents - - - bracketed_comment_terminator - - - - - - - referenced by: - - comment - - bracketed_comment_introducer: - - - - - - - - - - -
             ::=
    -
    - referenced by: - - bracketed_comment - - bracketed_comment_contents: - - - - - - - - comment_character - - - separator - - !! See the Syntax Rules. - - - - - -
             ::= ( comment_character | separator )+ '!! See the Syntax Rules.'
    -
    - referenced by: - - bracketed_comment - - comment_character: - - - - - - - - nonquote_character - - ' - - - - - -
             ::= nonquote_character
    -
               | "'"
    -
    - referenced by: - - bracketed_comment_contents - simple_comment - - key_word: - - - - - - - - reserved_word - - - non_reserved_word - - - - -
               | non_reserved_word
    -
    - referenced by: - - nondelimiter_token - - non_reserved_word: - - - - - - - - A* - - - ABSOLUTE* - - - ACTION* - - - ADA* - - - ADD* - - - ADMIN* - - - AFTER* - - - ALWAYS* - - - ASC* - - - ASSERTION* - - - ASSIGNMENT* - - - ATTRIBUTE* - - - ATTRIBUTES* - - - BEFORE* - - - BERNOULLI* - - - BREADTH* - - - C* - - - CASCADE* - - - CATALOG* - - - CATALOG_NAME* - - - CHAIN* - - - CHAINING* - - - CHARACTER_SET_CATALOG* - - - CHARACTER_SET_NAME* - - - CHARACTER_SET_SCHEMA* - - - CHARACTERISTICS* - - - CHARACTERS* - - - CLASS_ORIGIN* - - - COBOL* - - - COLLATION* - - - COLLATION_CATALOG* - - - COLLATION_NAME* - - - COLLATION_SCHEMA* - - - COLUMNS* - - - COLUMN_NAME* - - - COMMAND_FUNCTION* - - - COMMAND_FUNCTION_CODE* - - - COMMITTED* - - - CONDITIONAL* - - - CONDITION_NUMBER* - - - CONNECTION* - - - CONNECTION_NAME* - - - CONSTRAINT_CATALOG* - - - CONSTRAINT_NAME* - - - CONSTRAINT_SCHEMA* - - - CONSTRAINTS* - - - CONSTRUCTOR* - - - CONTINUE* - - - CURSOR_NAME* - - - DATA* - - - DATETIME_INTERVAL_CODE* - - - DATETIME_INTERVAL_PRECISION* - - - DEFAULTS* - - - DEFERRABLE* - - - DEFERRED* - - - DEFINED* - - - DEFINER* - - - DEGREE* - - - DEPTH* - - - DERIVED* - - - DESC* - - - DESCRIBE_CATALOG* - - - DESCRIBE_NAME* - - - DESCRIBE_PROCEDURE_SPECIFIC_CATALOG* - - - DESCRIBE_PROCEDURE_SPECIFIC_NAME* - - - DESCRIBE_PROCEDURE_SPECIFIC_SCHEMA* - - - DESCRIBE_SCHEMA* - - - DESCRIPTOR* - - - DIAGNOSTICS* - - - DISPATCH* - - - DOMAIN* - - - DYNAMIC_FUNCTION* - - - DYNAMIC_FUNCTION_CODE* - - - ENCODING* - - - ENFORCED* - - - ERROR* - - - EXCLUDE* - - - EXCLUDING* - - - EXPRESSION* - - - FINAL* - - - FINISH* - - - FINISH_CATALOG* - - - FINISH_NAME* - - - FINISH_PROCEDURE_SPECIFIC_CATALOG* - - - FINISH_PROCEDURE_SPECIFIC_NAME* - - - FINISH_PROCEDURE_SPECIFIC_SCHEMA* - - - FINISH_SCHEMA* - - - FIRST* - - - FLAG* - - - FOLLOWING* - - - FORMAT* - - - FORTRAN* - - - FOUND* - - - FULFILL* - - - FULFILL_CATALOG* - - - FULFILL_NAME* - - - FULFILL_PROCEDURE_SPECIFIC_CATALOG* - - - FULFILL_PROCEDURE_SPECIFIC_NAME* - - - FULFILL_PROCEDURE_SPECIFIC_SCHEMA* - - - FULFILL_SCHEMA* - - - G* - - - GENERAL* - - - GENERATED* - - - GO* - - - GOTO* - - - GRANTED* - - - HAS_PASS_THROUGH_COLUMNS* - - - HAS_PASS_THRU_COLS* - - - HIERARCHY* - - - IGNORE* - - - IMMEDIATE* - - - IMMEDIATELY* - - - IMPLEMENTATION* - - - INCLUDING* - - - INCREMENT* - - - INITIALLY* - - - INPUT* - - - INSTANCE* - - - INSTANTIABLE* - - - INSTEAD* - - - INVOKER* - - - ISOLATION* - - - IS_PRUNABLE* - - - JSON* - - - K* - - - KEEP* - - - KEY* - - - KEYS* - - - KEY_MEMBER* - - - KEY_TYPE* - - - LAST* - - - LENGTH* - - - LEVEL* - - - LOCATOR* - - - M* - - - MAP* - - - MATCHED* - - - MAXVALUE* - - - MESSAGE_LENGTH* - - - MESSAGE_OCTET_LENGTH* - - - MESSAGE_TEXT* - - - MINVALUE* - - - MORE* - - - MUMPS* - - - NAME* - - - NAMES* - - - NESTED* - - - NESTING* - - - NEXT* - - - NFC* - - - NFD* - - - NFKC* - - - NFKD* - - - NORMALIZED* - - - NULLABLE* - - - NULLS* - - - NUMBER* - - - OBJECT* - - - OCTETS* - - - OPTION* - - - OPTIONS* - - - ORDERING* - - - ORDINALITY* - - - OTHERS* - - - OUTPUT* - - - OVERFLOW* - - - OVERRIDING* - - - P* - - - PAD* - - - PARAMETER_MODE* - - - PARAMETER_NAME* - - - PARAMETER_ORDINAL_POSITION* - - - PARAMETER_SPECIFIC_CATALOG* - - - PARAMETER_SPECIFIC_NAME* - - - PARAMETER_SPECIFIC_SCHEMA* - - - PARTIAL* - - - PASCAL* - - - PASS* - - - PASSING* - - - PAST* - - - PATH* - - - PLACING* - - - PLAN* - - - PLI* - - - PRECEDING* - - - PRESERVE* - - - PRIOR* - - - PRIVATE* - - - PRIVATE_PARAMETERS* - - - PRIVATE_PARAMS_S* - - - PRIVILEGES* - - - PRUNE* - - - PUBLIC* - - - QUOTES* - - - READ* - - - RELATIVE* - - - REPEATABLE* - - - RESPECT* - - - RESTART* - - - RESTRICT* - - - RETURNED_CARDINALITY* - - - RETURNED_LENGTH* - - - RETURNED_OCTET_LENGTH* - - - RETURNED_SQLSTATE* - - - RETURNING* - - - RETURNS_ONLY_PASS_THROUGH* - - - RET_ONLY_PASS_THRU* - - - ROLE* - - - ROUTINE* - - - ROUTINE_CATALOG* - - - ROUTINE_NAME* - - - ROUTINE_SCHEMA* - - - ROW_COUNT* - - - SCALAR* - - - SCALE* - - - SCHEMA* - - - SCHEMA_NAME* - - - SCOPE_CATALOG* - - - SCOPE_NAME* - - - SCOPE_SCHEMA* - - - SECTION* - - - SECURITY* - - - SELF* - - - SEQUENCE* - - - SERIALIZABLE* - - - SERVER_NAME* - - - SESSION* - - - SETS* - - - SIMPLE* - - - SIZE* - - - SOURCE* - - - SPACE* - - - SPECIFIC_NAME* - - - START_CATALOG* - - - START_NAME* - - - START_PROCEDURE_SPECIFIC_CATALOG* - - - START_PROCEDURE_SPECIFIC_NAME* - - - START_PROCEDURE_SPECIFIC_SCHEMA* - - - START_SCHEMA* - - - STATE* - - - STATEMENT* - - - STRING* - - - STRUCTURE* - - - STYLE* - - - SUBCLASS_ORIGIN* - - - T* - - - TABLE_NAME* - - - TABLE_SEMANTICS* - - - TEMPORARY* - - - THROUGH* - - - TIES* - - - TOP_LEVEL_COUNT* - - - TRANSACTION* - - - TRANSACTION_ACTIVE* - - - TRANSACTIONS_COMMITTED* - - - TRANSACTIONS_ROLLED_BACK* - - - TRANSFORM* - - - TRANSFORMS* - - - TRIGGER_CATALOG* - - - TRIGGER_NAME* - - - TRIGGER_SCHEMA* - - - TYPE* - - - UNBOUNDED* - - - UNCOMMITTED* - - - UNCONDITIONAL* - - - UNDER* - - - UNNAMED* - - - USAGE* - - - USER_DEFINED_TYPE_CATALOG* - - - USER_DEFINED_TYPE_CODE* - - - USER_DEFINED_TYPE_NAME* - - - USER_DEFINED_TYPE_SCHEMA* - - - UTF16* - - - UTF32* - - - UTF8* - - - VIEW* - - - WORK* - - - WRAPPER* - - - WRITE* - - - ZONE* - - - - - -
             ::= 'A*'
    -
               | 'ABSOLUTE*'
    -
               | 'ACTION*'
    -
               | 'ADA*'
    -
               | 'ADD*'
    -
               | 'ADMIN*'
    -
               | 'AFTER*'
    -
               | 'ALWAYS*'
    -
               | 'ASC*'
    -
               | 'ASSERTION*'
    -
               | 'ASSIGNMENT*'
    -
               | 'ATTRIBUTE*'
    -
               | 'ATTRIBUTES*'
    -
               | 'BEFORE*'
    -
               | 'BERNOULLI*'
    -
               | 'BREADTH*'
    -
               | 'C*'
    -
               | 'CASCADE*'
    -
               | 'CATALOG*'
    -
               | 'CATALOG_NAME*'
    -
               | 'CHAIN*'
    -
               | 'CHAINING*'
    -
               | 'CHARACTER_SET_CATALOG*'
    -
               | 'CHARACTER_SET_NAME*'
    -
               | 'CHARACTER_SET_SCHEMA*'
    -
               | 'CHARACTERISTICS*'
    -
               | 'CHARACTERS*'
    -
               | 'CLASS_ORIGIN*'
    -
               | 'COBOL*'
    -
               | 'COLLATION*'
    -
               | 'COLLATION_CATALOG*'
    -
               | 'COLLATION_NAME*'
    -
               | 'COLLATION_SCHEMA*'
    -
               | 'COLUMNS*'
    -
               | 'COLUMN_NAME*'
    -
               | 'COMMAND_FUNCTION*'
    -
               | 'COMMAND_FUNCTION_CODE*'
    -
               | 'COMMITTED*'
    -
               | 'CONDITIONAL*'
    -
               | 'CONDITION_NUMBER*'
    -
               | 'CONNECTION*'
    -
               | 'CONNECTION_NAME*'
    -
               | 'CONSTRAINT_CATALOG*'
    -
               | 'CONSTRAINT_NAME*'
    -
               | 'CONSTRAINT_SCHEMA*'
    -
               | 'CONSTRAINTS*'
    -
               | 'CONSTRUCTOR*'
    -
               | 'CONTINUE*'
    -
               | 'CURSOR_NAME*'
    -
               | 'DATA*'
    -
               | 'DATETIME_INTERVAL_CODE*'
    -
               | 'DATETIME_INTERVAL_PRECISION*'
    -
               | 'DEFAULTS*'
    -
               | 'DEFERRABLE*'
    -
               | 'DEFERRED*'
    -
               | 'DEFINED*'
    -
               | 'DEFINER*'
    -
               | 'DEGREE*'
    -
               | 'DEPTH*'
    -
               | 'DERIVED*'
    -
               | 'DESC*'
    -
               | 'DESCRIBE_CATALOG*'
    -
               | 'DESCRIBE_NAME*'
    -
               | 'DESCRIBE_PROCEDURE_SPECIFIC_CATALOG*'
    -
               | 'DESCRIBE_PROCEDURE_SPECIFIC_NAME*'
    -
               | 'DESCRIBE_PROCEDURE_SPECIFIC_SCHEMA*'
    -
               | 'DESCRIBE_SCHEMA*'
    -
               | 'DESCRIPTOR*'
    -
               | 'DIAGNOSTICS*'
    -
               | 'DISPATCH*'
    -
               | 'DOMAIN*'
    -
               | 'DYNAMIC_FUNCTION*'
    -
               | 'DYNAMIC_FUNCTION_CODE*'
    -
               | 'ENCODING*'
    -
               | 'ENFORCED*'
    -
               | 'ERROR*'
    -
               | 'EXCLUDE*'
    -
               | 'EXCLUDING*'
    -
               | 'EXPRESSION*'
    -
               | 'FINAL*'
    -
               | 'FINISH*'
    -
               | 'FINISH_CATALOG*'
    -
               | 'FINISH_NAME*'
    -
               | 'FINISH_PROCEDURE_SPECIFIC_CATALOG*'
    -
               | 'FINISH_PROCEDURE_SPECIFIC_NAME*'
    -
               | 'FINISH_PROCEDURE_SPECIFIC_SCHEMA*'
    -
               | 'FINISH_SCHEMA*'
    -
               | 'FIRST*'
    -
               | 'FLAG*'
    -
               | 'FOLLOWING*'
    -
               | 'FORMAT*'
    -
               | 'FORTRAN*'
    -
               | 'FOUND*'
    -
               | 'FULFILL*'
    -
               | 'FULFILL_CATALOG*'
    -
               | 'FULFILL_NAME*'
    -
               | 'FULFILL_PROCEDURE_SPECIFIC_CATALOG*'
    -
               | 'FULFILL_PROCEDURE_SPECIFIC_NAME*'
    -
               | 'FULFILL_PROCEDURE_SPECIFIC_SCHEMA*'
    -
               | 'FULFILL_SCHEMA*'
    -
               | 'G*'
    -
               | 'GENERAL*'
    -
               | 'GENERATED*'
    -
               | 'GO*'
    -
               | 'GOTO*'
    -
               | 'GRANTED*'
    -
               | 'HAS_PASS_THROUGH_COLUMNS*'
    -
               | 'HAS_PASS_THRU_COLS*'
    -
               | 'HIERARCHY*'
    -
               | 'IGNORE*'
    -
               | 'IMMEDIATE*'
    -
               | 'IMMEDIATELY*'
    -
               | 'IMPLEMENTATION*'
    -
               | 'INCLUDING*'
    -
               | 'INCREMENT*'
    -
               | 'INITIALLY*'
    -
               | 'INPUT*'
    -
               | 'INSTANCE*'
    -
               | 'INSTANTIABLE*'
    -
               | 'INSTEAD*'
    -
               | 'INVOKER*'
    -
               | 'ISOLATION*'
    -
               | 'IS_PRUNABLE*'
    -
               | 'JSON*'
    -
               | 'K*'
    -
               | 'KEEP*'
    -
               | 'KEY*'
    -
               | 'KEYS*'
    -
               | 'KEY_MEMBER*'
    -
               | 'KEY_TYPE*'
    -
               | 'LAST*'
    -
               | 'LENGTH*'
    -
               | 'LEVEL*'
    -
               | 'LOCATOR*'
    -
               | 'M*'
    -
               | 'MAP*'
    -
               | 'MATCHED*'
    -
               | 'MAXVALUE*'
    -
               | 'MESSAGE_LENGTH*'
    -
               | 'MESSAGE_OCTET_LENGTH*'
    -
               | 'MESSAGE_TEXT*'
    -
               | 'MINVALUE*'
    -
               | 'MORE*'
    -
               | 'MUMPS*'
    -
               | 'NAME*'
    -
               | 'NAMES*'
    -
               | 'NESTED*'
    -
               | 'NESTING*'
    -
               | 'NEXT*'
    -
               | 'NFC*'
    -
               | 'NFD*'
    -
               | 'NFKC*'
    -
               | 'NFKD*'
    -
               | 'NORMALIZED*'
    -
               | 'NULLABLE*'
    -
               | 'NULLS*'
    -
               | 'NUMBER*'
    -
               | 'OBJECT*'
    -
               | 'OCTETS*'
    -
               | 'OPTION*'
    -
               | 'OPTIONS*'
    -
               | 'ORDERING*'
    -
               | 'ORDINALITY*'
    -
               | 'OTHERS*'
    -
               | 'OUTPUT*'
    -
               | 'OVERFLOW*'
    -
               | 'OVERRIDING*'
    -
               | 'P*'
    -
               | 'PAD*'
    -
               | 'PARAMETER_MODE*'
    -
               | 'PARAMETER_NAME*'
    -
               | 'PARAMETER_ORDINAL_POSITION*'
    -
               | 'PARAMETER_SPECIFIC_CATALOG*'
    -
               | 'PARAMETER_SPECIFIC_NAME*'
    -
               | 'PARAMETER_SPECIFIC_SCHEMA*'
    -
               | 'PARTIAL*'
    -
               | 'PASCAL*'
    -
               | 'PASS*'
    -
               | 'PASSING*'
    -
               | 'PAST*'
    -
               | 'PATH*'
    -
               | 'PLACING*'
    -
               | 'PLAN*'
    -
               | 'PLI*'
    -
               | 'PRECEDING*'
    -
               | 'PRESERVE*'
    -
               | 'PRIOR*'
    -
               | 'PRIVATE*'
    -
               | 'PRIVATE_PARAMETERS*'
    -
               | 'PRIVATE_PARAMS_S*'
    -
               | 'PRIVILEGES*'
    -
               | 'PRUNE*'
    -
               | 'PUBLIC*'
    -
               | 'QUOTES*'
    -
               | 'READ*'
    -
               | 'RELATIVE*'
    -
               | 'REPEATABLE*'
    -
               | 'RESPECT*'
    -
               | 'RESTART*'
    -
               | 'RESTRICT*'
    -
               | 'RETURNED_CARDINALITY*'
    -
               | 'RETURNED_LENGTH*'
    -
               | 'RETURNED_OCTET_LENGTH*'
    -
               | 'RETURNED_SQLSTATE*'
    -
               | 'RETURNING*'
    -
               | 'RETURNS_ONLY_PASS_THROUGH*'
    -
               | 'RET_ONLY_PASS_THRU*'
    -
               | 'ROLE*'
    -
               | 'ROUTINE*'
    -
               | 'ROUTINE_CATALOG*'
    -
               | 'ROUTINE_NAME*'
    -
               | 'ROUTINE_SCHEMA*'
    -
               | 'ROW_COUNT*'
    -
               | 'SCALAR*'
    -
               | 'SCALE*'
    -
               | 'SCHEMA*'
    -
               | 'SCHEMA_NAME*'
    -
               | 'SCOPE_CATALOG*'
    -
               | 'SCOPE_NAME*'
    -
               | 'SCOPE_SCHEMA*'
    -
               | 'SECTION*'
    -
               | 'SECURITY*'
    -
               | 'SELF*'
    -
               | 'SEQUENCE*'
    -
               | 'SERIALIZABLE*'
    -
               | 'SERVER_NAME*'
    -
               | 'SESSION*'
    -
               | 'SETS*'
    -
               | 'SIMPLE*'
    -
               | 'SIZE*'
    -
               | 'SOURCE*'
    -
               | 'SPACE*'
    -
               | 'SPECIFIC_NAME*'
    -
               | 'START_CATALOG*'
    -
               | 'START_NAME*'
    -
               | 'START_PROCEDURE_SPECIFIC_CATALOG*'
    -
               | 'START_PROCEDURE_SPECIFIC_NAME*'
    -
               | 'START_PROCEDURE_SPECIFIC_SCHEMA*'
    -
               | 'START_SCHEMA*'
    -
               | 'STATE*'
    -
               | 'STATEMENT*'
    -
               | 'STRING*'
    -
               | 'STRUCTURE*'
    -
               | 'STYLE*'
    -
               | 'SUBCLASS_ORIGIN*'
    -
               | 'T*'
    -
               | 'TABLE_NAME*'
    -
               | 'TABLE_SEMANTICS*'
    -
               | 'TEMPORARY*'
    -
               | 'THROUGH*'
    -
               | 'TIES*'
    -
               | 'TOP_LEVEL_COUNT*'
    -
               | 'TRANSACTION*'
    -
               | 'TRANSACTION_ACTIVE*'
    -
               | 'TRANSACTIONS_COMMITTED*'
    -
               | 'TRANSACTIONS_ROLLED_BACK*'
    -
               | 'TRANSFORM*'
    -
               | 'TRANSFORMS*'
    -
               | 'TRIGGER_CATALOG*'
    -
               | 'TRIGGER_NAME*'
    -
               | 'TRIGGER_SCHEMA*'
    -
               | 'TYPE*'
    -
               | 'UNBOUNDED*'
    -
               | 'UNCOMMITTED*'
    -
               | 'UNCONDITIONAL*'
    -
               | 'UNDER*'
    -
               | 'UNNAMED*'
    -
               | 'USAGE*'
    -
               | 'USER_DEFINED_TYPE_CATALOG*'
    -
               | 'USER_DEFINED_TYPE_CODE*'
    -
               | 'USER_DEFINED_TYPE_NAME*'
    -
               | 'USER_DEFINED_TYPE_SCHEMA*'
    -
               | 'UTF16*'
    -
               | 'UTF32*'
    -
               | 'UTF8*'
    -
               | 'VIEW*'
    -
               | 'WORK*'
    -
               | 'WRAPPER*'
    -
               | 'WRITE*'
    -
               | 'ZONE*'
    -
    - referenced by: - - key_word - - reserved_word: - - - - - - - - ABS - - - ACOS - - - ALL - - - ALLOCATE - - - ALTER - - - AND - - - ANY - - - ARE - - - ARRAY - - - ARRAY_AGG - - - ARRAY_MAX_CARDINALITY - - - AS - - - ASENSITIVE - - - ASIN - - - ASYMMETRIC - - - AT - - - ATAN - - - ATOMIC - - - AUTHORIZATION - - - AVG - - - BEGIN - - - BEGIN_FRAME - - - BEGIN_PARTITION - - - BETWEEN - - - BIGINT - - - BINARY - - - BLOB - - - BOOLEAN - - - BOTH - - - BY - - - CALL - - - CALLED - - - CARDINALITY - - - CASCADED - - - CASE - - - CAST - - - CEIL - - - CEILING - - - CHAR - - - CHAR_LENGTH - - - CHARACTER - - - CHARACTER_LENGTH - - - CHECK - - - CLASSIFIER - - - CLOB - - - CLOSE - - - COALESCE - - - COLLATE - - - COLLECT - - - COLUMN - - - COMMIT - - - CONDITION - - - CONNECT - - - CONSTRAINT - - - CONTAINS - - - CONVERT - - - COPY - - - CORR - - - CORRESPONDING - - - COS - - - COSH - - - COUNT - - - COVAR_POP - - - COVAR_SAMP - - - CREATE - - - CROSS - - - CUBE - - - CUME_DIST - - - CURRENT - - - CURRENT_CATALOG - - - CURRENT_DATE - - - CURRENT_DEFAULT_TRANSFORM_GROUP - - - CURRENT_PATH - - - CURRENT_ROLE - - CURRENT_ROW - - - CURRENT_SCHEMA - - - CURRENT_TIME - - - CURRENT_TIMESTAMP - - - CURRENT_PATH - - - CURRENT_ROLE - - CURRENT_TRANSFORM_GROUP_FOR_TYPE - - - CURRENT_USER - - - CURSOR - - - CYCLE - - - DATE - - - DAY - - - DEALLOCATE - - - DEC - - - DECIMAL - - - DECFLOAT - - - DECLARE - - - DEFAULT - - - DEFINE - - - DELETE - - - DENSE_RANK - - - DEREF - - - DESCRIBE - - - DETERMINISTIC - - - DISCONNECT - - - DISTINCT - - - DOUBLE - - - DROP - - - DYNAMIC - - - EACH - - - ELEMENT - - - ELSE - - - EMPTY - - - END - - - END_FRAME - - - END_PARTITION - - - END-EXEC - - - EQUALS - - - ESCAPE - - - EVERY - - - EXCEPT - - - EXEC - - - EXECUTE - - - EXISTS - - - EXP - - - EXTERNAL - - - EXTRACT - - - FALSE - - - FETCH - - - FILTER - - - FIRST_VALUE - - - FLOAT - - - FLOOR - - - FOR - - - FOREIGN - - - FRAME_ROW - - - FREE - - - FROM - - - FULL - - - FUNCTION - - - FUSION - - - GET - - - GLOBAL - - - GRANT - - - GROUP - - - GROUPING - - - GROUPS - - - HAVING - - - HOLD - - - HOUR - - - IDENTITY - - - IN - - - INDICATOR - - - INITIAL - - - INNER - - - INOUT - - - INSENSITIVE - - - INSERT - - - INT - - - INTEGER - - - INTERSECT - - - INTERSECTION - - - INTERVAL - - - INTO - - - IS - - - JOIN - - - JSON_ARRAY - - - JSON_ARRAYAGG - - - JSON_EXISTS - - - JSON_OBJECT - - - JSON_OBJECTAGG - - - JSON_QUERY - - - JSON_TABLE - - - JSON_TABLE_PRIMITIVE - - - JSON_VALUE - - - LAG - - - LANGUAGE - - - LARGE - - - LAST_VALUE - - - LATERAL - - - LEAD - - - LEADING - - - LEFT - - - LIKE - - - LIKE_REGEX - - - LISTAGG - - - LN - - - LOCAL - - - LOCALTIME - - - LOCALTIMESTAMP - - - LOG - - - LOG10 - - - LOWER - - - MATCH - - - MATCH_NUMBER - - - MATCH_RECOGNIZE - - - MATCHES - - - MAX - - - MEMBER - - - MERGE - - - METHOD - - - MIN - - - MINUTE - - - MOD - - - MODIFIES - - - MODULE - - - MONTH - - - MULTISET - - - NATIONAL - - - NATURAL - - - NCHAR - - - NCLOB - - - NEW - - - NO - - - NONE - - - NORMALIZE - - - NOT - - - NTH_VALUE - - - NTILE - - - NULL - - - NULLIF - - - NUMERIC - - - OCTET_LENGTH - - - OCCURRENCES_REGEX - - - OF - - - OFFSET - - - OLD - - - OMIT - - - ON - - - ONE - - - ONLY - - - OPEN - - - OR - - - ORDER - - - OUT - - - OUTER - - - OVER - - - OVERLAPS - - - OVERLAY - - - PARAMETER - - - PARTITION - - - PATTERN - - - PER - - - PERCENT - - - PERCENT_RANK - - - PERCENTILE_CONT - - - PERCENTILE_DISC - - - PERIOD - - - PORTION - - - POSITION - - - POSITION_REGEX - - - POWER - - - PRECEDES - - - PRECISION - - - PREPARE - - - PRIMARY - - - PROCEDURE - - - PTF - - - RANGE - - - RANK - - - READS - - - REAL - - - RECURSIVE - - - REF - - - REFERENCES - - - REFERENCING - - - REGR_AVGX - - - REGR_AVGY - - - REGR_COUNT - - - REGR_INTERCEPT - - - REGR_R2 - - - REGR_SLOPE - - - REGR_SXX - - - REGR_SXY - - - REGR_SYY - - - RELEASE - - - RESULT - - - RETURN - - - RETURNS - - - REVOKE - - - RIGHT - - - ROLLBACK - - - ROLLUP - - - ROW - - - ROW_NUMBER - - - ROWS - - - RUNNING - - - SAVEPOINT - - - SCOPE - - - SCROLL - - - SEARCH - - - SECOND - - - SEEK - - - SELECT - - - SENSITIVE - - - SESSION_USER - - - SET - - - SHOW - - - SIMILAR - - - SIN - - - SINH - - - SKIP - - - SMALLINT - - - SOME - - - SPECIFIC - - - SPECIFICTYPE - - - SQL - - - SQLEXCEPTION - - - SQLSTATE - - - SQLWARNING - - - SQRT - - - START - - - STATIC - - - STDDEV_POP - - - STDDEV_SAMP - - - SUBMULTISET - - - SUBSET - - - SUBSTRING - - - SUBSTRING_REGEX - - - SUCCEEDS - - - SUM - - - SYMMETRIC - - - SYSTEM - - - SYSTEM_TIME - - - SYSTEM_USER - - - TABLE - - - TABLESAMPLE - - - TAN - - - TANH - - - THEN - - - TIME - - - TIMESTAMP - - - TIMEZONE_HOUR - - - TIMEZONE_MINUTE - - - TO - - - TRAILING - - - TRANSLATE - - - TRANSLATE_REGEX - - - TRANSLATION - - - TREAT - - - TRIGGER - - - TRIM - - - TRIM_ARRAY - - - TRUE - - - TRUNCATE - - - UESCAPE - - - UNION - - - UNIQUE - - - UNKNOWN - - - UNNEST - - - UPDATE - - - UPPER - - - USER - - - USING - - - VALUE - - - VALUES - - - VALUE_OF - - - VAR_POP - - - VAR_SAMP - - - VARBINARY - - - VARCHAR - - - VARYING - - - VERSIONING - - - WHEN - - - WHENEVER - - - WHERE - - - WIDTH_BUCKET - - - WINDOW - - - WITH - - - WITHIN - - - WITHOUT - - - YEAR - - - - - -
             ::= 'ABS'
    -
               | 'ACOS'
    -
               | 'ALL'
    -
               | 'ALLOCATE'
    -
               | 'ALTER'
    -
               | 'AND'
    -
               | 'ANY'
    -
               | 'ARE'
    -
               | 'ARRAY'
    -
               | 'ARRAY_AGG'
    -
               | 'ARRAY_MAX_CARDINALITY'
    -
               | 'AS'
    -
               | 'ASENSITIVE'
    -
               | 'ASIN'
    -
               | 'ASYMMETRIC'
    -
               | 'AT'
    -
               | 'ATAN'
    -
               | 'ATOMIC'
    -
               | 'AUTHORIZATION'
    -
               | 'AVG'
    -
               | 'BEGIN'
    -
               | 'BEGIN_FRAME'
    -
               | 'BEGIN_PARTITION'
    -
               | 'BETWEEN'
    -
               | 'BIGINT'
    -
               | 'BINARY'
    -
               | 'BLOB'
    -
               | 'BOOLEAN'
    -
               | 'BOTH'
    -
               | 'BY'
    -
               | 'CALL'
    -
               | 'CALLED'
    -
               | 'CARDINALITY'
    -
               | 'CASCADED'
    -
               | 'CASE'
    -
               | 'CAST'
    -
               | 'CEIL'
    -
               | 'CEILING'
    -
               | 'CHAR'
    -
               | 'CHAR_LENGTH'
    -
               | 'CHARACTER'
    -
               | 'CHARACTER_LENGTH'
    -
               | 'CHECK'
    -
               | 'CLASSIFIER'
    -
               | 'CLOB'
    -
               | 'CLOSE'
    -
               | 'COALESCE'
    -
               | 'COLLATE'
    -
               | 'COLLECT'
    -
               | 'COLUMN'
    -
               | 'COMMIT'
    -
               | 'CONDITION'
    -
               | 'CONNECT'
    -
               | 'CONSTRAINT'
    -
               | 'CONTAINS'
    -
               | 'CONVERT'
    -
               | 'COPY'
    -
               | 'CORR'
    -
               | 'CORRESPONDING'
    -
               | 'COS'
    -
               | 'COSH'
    -
               | 'COUNT'
    -
               | 'COVAR_POP'
    -
               | 'COVAR_SAMP'
    -
               | 'CREATE'
    -
               | 'CROSS'
    -
               | 'CUBE'
    -
               | 'CUME_DIST'
    -
               | 'CURRENT'
    -
               | 'CURRENT_CATALOG'
    -
               | 'CURRENT_DATE'
    -
               | 'CURRENT_DEFAULT_TRANSFORM_GROUP'
    -
               | CURRENT_PATH
    -
               | CURRENT_ROLE
    -
               | 'CURRENT_ROW'
    -
               | 'CURRENT_SCHEMA'
    -
               | 'CURRENT_TIME'
    -
               | 'CURRENT_TIMESTAMP'
    -
               | CURRENT_PATH
    -
               | CURRENT_ROLE
    -
               | 'CURRENT_TRANSFORM_GROUP_FOR_TYPE'
    -
               | 'CURRENT_USER'
    -
               | 'CURSOR'
    -
               | 'CYCLE'
    -
               | 'DATE'
    -
               | 'DAY'
    -
               | 'DEALLOCATE'
    -
               | 'DEC'
    -
               | 'DECIMAL'
    -
               | 'DECFLOAT'
    -
               | 'DECLARE'
    -
               | 'DEFAULT'
    -
               | 'DEFINE'
    -
               | 'DELETE'
    -
               | 'DENSE_RANK'
    -
               | 'DEREF'
    -
               | 'DESCRIBE'
    -
               | 'DETERMINISTIC'
    -
               | 'DISCONNECT'
    -
               | 'DISTINCT'
    -
               | 'DOUBLE'
    -
               | 'DROP'
    -
               | 'DYNAMIC'
    -
               | 'EACH'
    -
               | 'ELEMENT'
    -
               | 'ELSE'
    -
               | 'EMPTY'
    -
               | 'END'
    -
               | 'END_FRAME'
    -
               | 'END_PARTITION'
    -
               | 'END-EXEC'
    -
               | 'EQUALS'
    -
               | 'ESCAPE'
    -
               | 'EVERY'
    -
               | 'EXCEPT'
    -
               | 'EXEC'
    -
               | 'EXECUTE'
    -
               | 'EXISTS'
    -
               | 'EXP'
    -
               | 'EXTERNAL'
    -
               | 'EXTRACT'
    -
               | 'FALSE'
    -
               | 'FETCH'
    -
               | 'FILTER'
    -
               | 'FIRST_VALUE'
    -
               | 'FLOAT'
    -
               | 'FLOOR'
    -
               | 'FOR'
    -
               | 'FOREIGN'
    -
               | 'FRAME_ROW'
    -
               | 'FREE'
    -
               | 'FROM'
    -
               | 'FULL'
    -
               | 'FUNCTION'
    -
               | 'FUSION'
    -
               | 'GET'
    -
               | 'GLOBAL'
    -
               | 'GRANT'
    -
               | 'GROUP'
    -
               | 'GROUPING'
    -
               | 'GROUPS'
    -
               | 'HAVING'
    -
               | 'HOLD'
    -
               | 'HOUR'
    -
               | 'IDENTITY'
    -
               | 'IN'
    -
               | 'INDICATOR'
    -
               | 'INITIAL'
    -
               | 'INNER'
    -
               | 'INOUT'
    -
               | 'INSENSITIVE'
    -
               | 'INSERT'
    -
               | 'INT'
    -
               | 'INTEGER'
    -
               | 'INTERSECT'
    -
               | 'INTERSECTION'
    -
               | 'INTERVAL'
    -
               | 'INTO'
    -
               | 'IS'
    -
               | 'JOIN'
    -
               | 'JSON_ARRAY'
    -
               | 'JSON_ARRAYAGG'
    -
               | 'JSON_EXISTS'
    -
               | 'JSON_OBJECT'
    -
               | 'JSON_OBJECTAGG'
    -
               | 'JSON_QUERY'
    -
               | 'JSON_TABLE'
    -
               | 'JSON_TABLE_PRIMITIVE'
    -
               | 'JSON_VALUE'
    -
               | 'LAG'
    -
               | 'LANGUAGE'
    -
               | 'LARGE'
    -
               | 'LAST_VALUE'
    -
               | 'LATERAL'
    -
               | 'LEAD'
    -
               | 'LEADING'
    -
               | 'LEFT'
    -
               | 'LIKE'
    -
               | 'LIKE_REGEX'
    -
               | 'LISTAGG'
    -
               | 'LN'
    -
               | 'LOCAL'
    -
               | 'LOCALTIME'
    -
               | 'LOCALTIMESTAMP'
    -
               | 'LOG'
    -
               | 'LOG10'
    -
               | 'LOWER'
    -
               | 'MATCH'
    -
               | 'MATCH_NUMBER'
    -
               | 'MATCH_RECOGNIZE'
    -
               | 'MATCHES'
    -
               | 'MAX'
    -
               | 'MEMBER'
    -
               | 'MERGE'
    -
               | 'METHOD'
    -
               | 'MIN'
    -
               | 'MINUTE'
    -
               | 'MOD'
    -
               | 'MODIFIES'
    -
               | 'MODULE'
    -
               | 'MONTH'
    -
               | 'MULTISET'
    -
               | 'NATIONAL'
    -
               | 'NATURAL'
    -
               | 'NCHAR'
    -
               | 'NCLOB'
    -
               | 'NEW'
    -
               | 'NO'
    -
               | 'NONE'
    -
               | 'NORMALIZE'
    -
               | 'NOT'
    -
               | 'NTH_VALUE'
    -
               | 'NTILE'
    -
               | 'NULL'
    -
               | 'NULLIF'
    -
               | 'NUMERIC'
    -
               | 'OCTET_LENGTH'
    -
               | 'OCCURRENCES_REGEX'
    -
               | 'OF'
    -
               | 'OFFSET'
    -
               | 'OLD'
    -
               | 'OMIT'
    -
               | 'ON'
    -
               | 'ONE'
    -
               | 'ONLY'
    -
               | 'OPEN'
    -
               | 'OR'
    -
               | 'ORDER'
    -
               | 'OUT'
    -
               | 'OUTER'
    -
               | 'OVER'
    -
               | 'OVERLAPS'
    -
               | 'OVERLAY'
    -
               | 'PARAMETER'
    -
               | 'PARTITION'
    -
               | 'PATTERN'
    -
               | 'PER'
    -
               | 'PERCENT'
    -
               | 'PERCENT_RANK'
    -
               | 'PERCENTILE_CONT'
    -
               | 'PERCENTILE_DISC'
    -
               | 'PERIOD'
    -
               | 'PORTION'
    -
               | 'POSITION'
    -
               | 'POSITION_REGEX'
    -
               | 'POWER'
    -
               | 'PRECEDES'
    -
               | 'PRECISION'
    -
               | 'PREPARE'
    -
               | 'PRIMARY'
    -
               | 'PROCEDURE'
    -
               | 'PTF'
    -
               | 'RANGE'
    -
               | 'RANK'
    -
               | 'READS'
    -
               | 'REAL'
    -
               | 'RECURSIVE'
    -
               | 'REF'
    -
               | 'REFERENCES'
    -
               | 'REFERENCING'
    -
               | 'REGR_AVGX'
    -
               | 'REGR_AVGY'
    -
               | 'REGR_COUNT'
    -
               | 'REGR_INTERCEPT'
    -
               | 'REGR_R2'
    -
               | 'REGR_SLOPE'
    -
               | 'REGR_SXX'
    -
               | 'REGR_SXY'
    -
               | 'REGR_SYY'
    -
               | 'RELEASE'
    -
               | 'RESULT'
    -
               | 'RETURN'
    -
               | 'RETURNS'
    -
               | 'REVOKE'
    -
               | 'RIGHT'
    -
               | 'ROLLBACK'
    -
               | 'ROLLUP'
    -
               | 'ROW'
    -
               | 'ROW_NUMBER'
    -
               | 'ROWS'
    -
               | 'RUNNING'
    -
               | 'SAVEPOINT'
    -
               | 'SCOPE'
    -
               | 'SCROLL'
    -
               | 'SEARCH'
    -
               | 'SECOND'
    -
               | 'SEEK'
    -
               | 'SELECT'
    -
               | 'SENSITIVE'
    -
               | 'SESSION_USER'
    -
               | 'SET'
    -
               | 'SHOW'
    -
               | 'SIMILAR'
    -
               | 'SIN'
    -
               | 'SINH'
    -
               | 'SKIP'
    -
               | 'SMALLINT'
    -
               | 'SOME'
    -
               | 'SPECIFIC'
    -
               | 'SPECIFICTYPE'
    -
               | 'SQL'
    -
               | 'SQLEXCEPTION'
    -
               | 'SQLSTATE'
    -
               | 'SQLWARNING'
    -
               | 'SQRT'
    -
               | 'START'
    -
               | 'STATIC'
    -
               | 'STDDEV_POP'
    -
               | 'STDDEV_SAMP'
    -
               | 'SUBMULTISET'
    -
               | 'SUBSET'
    -
               | 'SUBSTRING'
    -
               | 'SUBSTRING_REGEX'
    -
               | 'SUCCEEDS'
    -
               | 'SUM'
    -
               | 'SYMMETRIC'
    -
               | 'SYSTEM'
    -
               | 'SYSTEM_TIME'
    -
               | 'SYSTEM_USER'
    -
               | 'TABLE'
    -
               | 'TABLESAMPLE'
    -
               | 'TAN'
    -
               | 'TANH'
    -
               | 'THEN'
    -
               | 'TIME'
    -
               | 'TIMESTAMP'
    -
               | 'TIMEZONE_HOUR'
    -
               | 'TIMEZONE_MINUTE'
    -
               | 'TO'
    -
               | 'TRAILING'
    -
               | 'TRANSLATE'
    -
               | 'TRANSLATE_REGEX'
    -
               | 'TRANSLATION'
    -
               | 'TREAT'
    -
               | 'TRIGGER'
    -
               | 'TRIM'
    -
               | 'TRIM_ARRAY'
    -
               | 'TRUE'
    -
               | 'TRUNCATE'
    -
               | 'UESCAPE'
    -
               | 'UNION'
    -
               | 'UNIQUE'
    -
               | 'UNKNOWN'
    -
               | 'UNNEST'
    -
               | 'UPDATE'
    -
               | 'UPPER'
    -
               | 'USER'
    -
               | 'USING'
    -
               | 'VALUE'
    -
               | 'VALUES'
    -
               | 'VALUE_OF'
    -
               | 'VAR_POP'
    -
               | 'VAR_SAMP'
    -
               | 'VARBINARY'
    -
               | 'VARCHAR'
    -
               | 'VARYING'
    -
               | 'VERSIONING'
    -
               | 'WHEN'
    -
               | 'WHENEVER'
    -
               | 'WHERE'
    -
               | 'WIDTH_BUCKET'
    -
               | 'WINDOW'
    -
               | 'WITH'
    -
               | 'WITHIN'
    -
               | 'WITHOUT'
    -
               | 'YEAR'
    -
    - referenced by: - - key_word - - literal: - - - - - - - - signed_numeric_literal - - - general_literal - - - - -
               | general_literal
    -
    - referenced by: - - default_option - simple_value_specification - value_specification - - unsigned_literal: - - - - - - - - unsigned_numeric_literal - - - general_literal - - - - -
             ::= unsigned_numeric_literal
    -
               | general_literal
    -
    - referenced by: - - unsigned_value_specification - - general_literal: - - - - - - - - character_string_literal - - - national_character_string_literal - - - Unicode_character_string_literal - - - binary_string_literal - - - datetime_literal - - - interval_literal - - - boolean_literal - - - - -
             ::= character_string_literal
    -
               | national_character_string_literal
    -
               | Unicode_character_string_literal
    -
               | binary_string_literal
    -
               | datetime_literal
    -
               | interval_literal
    -
               | boolean_literal
    -
    - referenced by: - - literal - unsigned_literal - - character_string_literal: - - - - - - - - _ - - - character_set_specification - - ' - - - character_representation - - ' - - - separator - - - - -
             ::= ( '_' character_set_specification )? "'" character_representation* "'" ( separator "'" character_representation* "'" )*
    -
    - referenced by: - - JSON_path_specification - cast_template - delimiter_token - external_routine_name - general_literal - listagg_separator - listagg_truncation_filler - - character_representation: - - - - - - - - nonquote_character - - - quote_symbol - - - - -
             ::= nonquote_character
    -
               | quote_symbol
    -
    - referenced by: - - Ada_initial_value - COBOL_variable_definition - C_initial_value - PL_I_variable_definition - Unicode_representation - character_string_literal - national_character_string_literal - - quote_symbol: - - - - - - - - ' - - - ' - - - - - -
             ::= "'" "'"
    -
    - referenced by: - - character_representation - - national_character_string_literal: - - - - - - - - N - - - ' - - - character_representation - - ' - - - separator - - - - -
             ::= 'N' "'" character_representation* "'" ( separator "'" character_representation* "'" )*
    -
    - referenced by: - - general_literal - nondelimiter_token - - Unicode_character_string_literal: - - - - - - - - _ - - - character_set_specification - - U - - - & - - - ' - - - Unicode_representation - - ' - - - separator - - - Unicode_escape_specifier - - - - - - - referenced by: - - general_literal - nondelimiter_token - - Unicode_representation: - - - - - - - - character_representation - - - Unicode_escape_value - - - - -
             ::= character_representation
    -
               | Unicode_escape_value
    -
    - referenced by: - - Unicode_character_string_literal - - binary_string_literal: - - - - - - - - X - - - ' - - - !! See the Syntax Rules. - - - hexit - - !! See the Syntax Rules. - - - hexit - - ' - - - separator - - - - -
             ::= 'X' "'" '!! See the Syntax Rules.'* ( hexit '!! See the Syntax Rules.'* hexit '!! See the Syntax Rules.'* )* "'" ( separator "'" '!! See the Syntax Rules.'* ( hexit '!! See the Syntax Rules.'* hexit '!! See the Syntax Rules.'* )* "'" )*
    -
    - referenced by: - - general_literal - nondelimiter_token - - hexit: - - - - - - - - digit - - A - - - B - - - C - - - D - - - E - - - F - - - a - - - b - - - c - - - d - - - e - - - f - - - - -
    hexit    ::= digit
    -
               | 'A'
    -
               | 'B'
    -
               | 'C'
    -
               | 'D'
    -
               | 'E'
    -
               | 'F'
    -
               | 'a'
    -
               | 'b'
    -
               | 'c'
    -
               | 'd'
    -
               | 'e'
    -
               | 'f'
    -
    - referenced by: - - Unicode_4_digit_escape_value - Unicode_6_digit_escape_value - binary_string_literal - - signed_numeric_literal: - - - - - - - - sign - - - unsigned_numeric_literal - - - - -
             ::= sign? unsigned_numeric_literal
    -
    - referenced by: - - literal - sequence_generator_increment - sequence_generator_max_value - sequence_generator_min_value - sequence_generator_restart_value - sequence_generator_start_value - - unsigned_numeric_literal: - - - - - - - - exact_numeric_literal - - - approximate_numeric_literal - - - - -
             ::= exact_numeric_literal
    -
               | approximate_numeric_literal
    -
    - referenced by: - - nondelimiter_token - signed_numeric_literal - unsigned_literal - - exact_numeric_literal: - - - - - - - - unsigned_integer - - . - - - unsigned_integer - - . - - - unsigned_integer - - - - -
             ::= unsigned_integer ( '.' unsigned_integer? )?
    -
               | '.' unsigned_integer
    -
    - referenced by: - - mantissa - offset - unsigned_numeric_literal - - sign: - - - - - - - - + - - - - - - - - -
    sign     ::= '+'
    -
               | '-'
    -
    - referenced by: - - factor - interval_factor - interval_literal - signed_integer - signed_numeric_literal - time_zone_interval - unquoted_interval_string - - approximate_numeric_literal: - - - - - - - - mantissa - - E - - - exponent - - - - -
             ::= mantissa 'E' exponent
    -
    - referenced by: - - unsigned_numeric_literal - - mantissa: - - - - - - - - exact_numeric_literal - - - - - - referenced by: - - approximate_numeric_literal - - exponent: - - - - - - - - signed_integer - - - - - - referenced by: - - approximate_numeric_literal - - signed_integer: - - - - - - - - sign - - - unsigned_integer - - - - -
             ::= sign? unsigned_integer
    -
    - referenced by: - - exponent - - unsigned_integer: - - - - - - - - digit - - - - -
             ::= digit+
    -
    - referenced by: - - datetime_value - exact_numeric_literal - goto_target - high_value - interval_fractional_seconds_precision - interval_leading_field_precision - large_object_length - length - low_value - maximum_cardinality - maximum_returned_result_sets - precision - row_pattern_quantifier - scale - seconds_fraction - seconds_integer_value - signed_integer - time_fractional_seconds_precision - - datetime_literal: - - - - - - - - date_literal - - - time_literal - - - timestamp_literal - - - - -
             ::= date_literal
    -
               | time_literal
    -
               | timestamp_literal
    -
    - referenced by: - - general_literal - - date_literal: - - - - - - - - DATE - - - date_string - - - - -
             ::= 'DATE' date_string
    -
    - referenced by: - - datetime_literal - - time_literal: - - - - - - - - TIME - - - time_string - - - - -
             ::= 'TIME' time_string
    -
    - referenced by: - - datetime_literal - - timestamp_literal: - - - - - - - - TIMESTAMP - - - timestamp_string - - - - -
             ::= 'TIMESTAMP' timestamp_string
    -
    - referenced by: - - datetime_literal - - date_string: - - - - - - - - ' - - - unquoted_date_string - - ' - - - - - -
             ::= "'" unquoted_date_string "'"
    -
    - referenced by: - - date_literal - delimiter_token - - time_string: - - - - - - - - ' - - - unquoted_time_string - - ' - - - - - -
             ::= "'" unquoted_time_string "'"
    -
    - referenced by: - - delimiter_token - time_literal - - timestamp_string: - - - - - - - - ' - - - unquoted_timestamp_string - - ' - - - - - -
             ::= "'" unquoted_timestamp_string "'"
    -
    - referenced by: - - delimiter_token - timestamp_literal - - time_zone_interval: - - - - - - - - sign - - - hours_value - - : - - - minutes_value - - - - -
             ::= sign hours_value ':' minutes_value
    -
    - referenced by: - - unquoted_time_string - - date_value: - - - - - - - - years_value - - - - - - months_value - - - - - - days_value - - - - -
             ::= years_value '-' months_value '-' days_value
    -
    - referenced by: - - unquoted_date_string - - time_value: - - - - - - - - hours_value - - : - - - minutes_value - - : - - - seconds_value - - - - -
             ::= hours_value ':' minutes_value ':' seconds_value
    -
    - referenced by: - - unquoted_time_string - - interval_literal: - - - - - - - - INTERVAL - - - sign - - - interval_string - - - interval_qualifier - - - - -
             ::= 'INTERVAL' sign? interval_string interval_qualifier
    -
    - referenced by: - - general_literal - - interval_string: - - - - - - - - ' - - - unquoted_interval_string - - ' - - - - - -
             ::= "'" unquoted_interval_string "'"
    -
    - referenced by: - - delimiter_token - interval_literal - - unquoted_date_string: - - - - - - - - date_value - - - - -
             ::= date_value
    -
    - referenced by: - - date_string - unquoted_timestamp_string - - unquoted_time_string: - - - - - - - - time_value - - - time_zone_interval - - - - -
             ::= time_value time_zone_interval?
    -
    - referenced by: - - time_string - unquoted_timestamp_string - - unquoted_timestamp_string: - - - - - - - - unquoted_date_string - - !! See the Syntax Rules. - - - unquoted_time_string - - - - -
             ::= unquoted_date_string '!! See the Syntax Rules.' unquoted_time_string
    -
    - referenced by: - - timestamp_string - - unquoted_interval_string: - - - - - - - - sign - - - year_month_literal - - - day_time_literal - - - - -
             ::= sign? ( year_month_literal | day_time_literal )
    -
    - referenced by: - - interval_string - - year_month_literal: - - - - - - - - years_value - - - - - - months_value - - - months_value - - - - -
             ::= years_value ( '-' months_value )?
    -
               | months_value
    -
    - referenced by: - - unquoted_interval_string - - day_time_literal: - - - - - - - - day_time_interval - - - time_interval - - - - -
             ::= day_time_interval
    -
               | time_interval
    -
    - referenced by: - - unquoted_interval_string - - day_time_interval: - - - - - - - - days_value - - !! See the Syntax Rules. - - - hours_value - - : - - - minutes_value - - : - - - seconds_value - - - - -
             ::= days_value ( '!! See the Syntax Rules.' hours_value ( ':' minutes_value ( ':' seconds_value )? )? )?
    -
    - referenced by: - - day_time_literal - - time_interval: - - - - - - - - hours_value - - : - - - minutes_value - - : - - - seconds_value - - - minutes_value - - : - - - seconds_value - - - seconds_value - - - - -
             ::= hours_value ( ':' minutes_value ( ':' seconds_value )? )?
    -
               | minutes_value ( ':' seconds_value )?
    -
               | seconds_value
    -
    - referenced by: - - day_time_literal - - years_value: - - - - - - - - datetime_value - - - - -
             ::= datetime_value
    -
    - referenced by: - - date_value - year_month_literal - - months_value: - - - - - - - - datetime_value - - - - -
             ::= datetime_value
    -
    - referenced by: - - date_value - year_month_literal - - days_value: - - - - - - - - datetime_value - - - - -
             ::= datetime_value
    -
    - referenced by: - - date_value - day_time_interval - - hours_value: - - - - - - - - datetime_value - - - - -
             ::= datetime_value
    -
    - referenced by: - - day_time_interval - time_interval - time_value - time_zone_interval - - minutes_value: - - - - - - - - datetime_value - - - - -
             ::= datetime_value
    -
    - referenced by: - - day_time_interval - time_interval - time_value - time_zone_interval - - seconds_value: - - - - - - - - seconds_integer_value - - . - - - seconds_fraction - - - - -
             ::= seconds_integer_value ( '.' seconds_fraction? )?
    -
    - referenced by: - - day_time_interval - time_interval - time_value - - seconds_integer_value: - - - - - - - - unsigned_integer - - - - -
             ::= unsigned_integer
    -
    - referenced by: - - seconds_value - - seconds_fraction: - - - - - - - - unsigned_integer - - - - -
             ::= unsigned_integer
    -
    - referenced by: - - seconds_value - - datetime_value: - - - - - - - - unsigned_integer - - - - -
             ::= unsigned_integer
    -
    - referenced by: - - days_value - hours_value - minutes_value - months_value - years_value - - boolean_literal: - - - - - - - - TRUE - - - FALSE - - - UNKNOWN - - - - - -
             ::= 'TRUE'
    -
               | 'FALSE'
    -
               | 'UNKNOWN'
    -
    - referenced by: - - general_literal - - identifier: - - - - - - - - actual_identifier - - - - -
             ::= actual_identifier
    -
    - referenced by: - - JSON_argument - JSON_table_path_name - SQL_client_module_name - SQL_parameter_name - application_time_period_name - asterisked_identifier - attribute_name - cast_to_distinct_identifier - cast_to_ref_identifier - cast_to_source_identifier - cast_to_type_identifier - catalog_name - column_name - correlation_name - external_routine_name - field_name - group_name - host_parameter_name - identifier_chain - measure_name - method_name - non_extended_descriptor_name - procedure_name - qualified_identifier - query_name - regular_character_set_identifier - role_name - savepoint_name - statement_name - transition_table_name - unqualified_schema_name - user_identifier - window_name - - actual_identifier: - - - - - - - - regular_identifier - - - delimited_identifier - - - Unicode_delimited_identifier - - - - -
             ::= regular_identifier
    -
               | delimited_identifier
    -
               | Unicode_delimited_identifier
    -
    - referenced by: - - identifier - - SQL_language_identifier: - - - - - - - - SQL_language_identifier_start - - - SQL_language_identifier_part - - - - - - - referenced by: - - character_set_name - nondelimiter_token - - SQL_language_identifier_start: - - - - - - - - simple_Latin_letter - - - - -
             ::= simple_Latin_letter
    -
    - referenced by: - - SQL_language_identifier - - SQL_language_identifier_part: - - - - - - - - simple_Latin_letter - - - digit - - _ - - - - - -
             ::= simple_Latin_letter
    -
               | digit
    -
               | '_'
    -
    - referenced by: - - SQL_language_identifier - - authorization_identifier: - - - - - - - - role_name - - - user_identifier - - - - -
             ::= role_name
    -
               | user_identifier
    -
    - referenced by: - - grantee - module_authorization_identifier - schema_authorization_identifier - - table_name: - - - - - - - - local_or_schema_qualified_name - - - - -
             ::= local_or_schema_qualified_name
    -
    - referenced by: - - alter_table_statement - drop_table_statement - drop_view_statement - insertion_target - like_clause - object_name - range_variable - referenced_table_and_columns - scope_clause - subview_clause - supertable_name - table_definition - table_or_query_name - target_table - temporary_table_declaration - trigger_definition - view_definition - - domain_name: - - - - - - - - schema_qualified_name - - - - -
             ::= schema_qualified_name
    -
    - referenced by: - - alter_domain_statement - cast_target - data_type_or_domain_name - domain_definition - drop_domain_statement - object_name - - schema_name: - - - - - - - - catalog_name - - . - - - unqualified_schema_name - - - - -
             ::= ( catalog_name '.' )? unqualified_schema_name
    -
    - referenced by: - - character_set_name - drop_schema_statement - embedded_authorization_clause - local_or_schema_qualifier - module_authorization_clause - routine_name - schema_name_clause - schema_name_list - schema_qualified_name - specific_method_name - user_defined_type_name - - unqualified_schema_name: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - schema_name - - catalog_name: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - schema_name - - schema_qualified_name: - - - - - - - - schema_name - - . - - - qualified_identifier - - - - -
             ::= ( schema_name '.' )? qualified_identifier
    -
    - referenced by: - - collation_name - constraint_name - domain_name - schema_qualified_routine_name - sequence_generator_name - specific_name - transcoding_name - transliteration_name - trigger_name - - local_or_schema_qualified_name: - - - - - - - - local_or_schema_qualifier - - . - - - qualified_identifier - - - - -
             ::= ( local_or_schema_qualifier '.' )? qualified_identifier
    -
    - referenced by: - - table_name - - local_or_schema_qualifier: - - - - - - - - schema_name - - MODULE - - - - - -
             ::= schema_name
    -
               | 'MODULE'
    -
    - referenced by: - - local_or_schema_qualified_name - - qualified_identifier: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - attribute_or_method_reference - column_reference - local_or_schema_qualified_name - local_qualified_name - routine_name - schema_qualified_name - specific_method_name - user_defined_type_name - - column_name: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - JSON_table_formatted_column_definition - JSON_table_ordinality_column_definition - JSON_table_primitive_chaining_column - JSON_table_regular_column_definition - alter_column_definition - as_clause - column_definition - column_name_list - column_options - column_reference - cycle_column - cycle_mark_column - descriptor_column_specification - drop_column_definition - object_column - path_column - period_begin_column_name - period_end_column_name - self_referencing_column_name - sequence_column - table_function_column_list_element - view_column_option - - correlation_name: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - correlation_or_recognition - delete_statement__positioned - delete_statement__searched - join_correlation_name - merge_correlation_name - new_transition_variable_name - old_transition_variable_name - range_variable - row_pattern_input_name - row_pattern_output_name - row_pattern_variable_name - table_argument_correlation_name - table_primary - update_statement__positioned - update_statement__searched - - query_name: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - range_variable - table_or_query_name - with_list_element - - SQL_client_module_name: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - module_name_clause - - procedure_name: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - externally_invoked_procedure - - schema_qualified_routine_name: - - - - - - - - schema_qualified_name - - - - -
             ::= schema_qualified_name
    -
    - referenced by: - - SQL_invoked_procedure - function_specification - member_name_alternatives - - method_name: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - direct_invocation - generalized_invocation - member_name_alternatives - method_reference - method_specification_designator - mutated_set_clause - partial_method_specification - specific_method_specification_designator - static_method_invocation - - specific_name: - - - - - - - - schema_qualified_name - - - - -
             ::= schema_qualified_name
    -
    - referenced by: - - routine_characteristic - specific_routine_designator - state_category - - cursor_name: - - - - - - - - local_qualified_name - - - - -
             ::= local_qualified_name
    -
    - referenced by: - - allocate_received_cursor_statement - close_statement - conventional_dynamic_cursor_name - declare_cursor - delete_statement__positioned - described_object - dynamic_declare_cursor - fetch_statement - open_statement - preparable_dynamic_cursor_name - update_statement__positioned - - local_qualified_name: - - - - - - - - MODULE - - - . - - - qualified_identifier - - - - -
             ::= ( 'MODULE' '.' )? qualified_identifier
    -
    - referenced by: - - cursor_name - - host_parameter_name: - - - - - - - - : - - - identifier - - - - -
             ::= ':' identifier
    -
    - referenced by: - - host_parameter_declaration - host_parameter_specification - indicator_parameter - locator_reference - simple_target_specification - simple_value_specification - - SQL_parameter_name: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - SQL_parameter_declaration - named_argument_specification - - constraint_name: - - - - - - - - schema_qualified_name - - - - -
             ::= schema_qualified_name
    -
    - referenced by: - - SQL_condition - alter_table_constraint_definition - assertion_definition - constraint_name_definition - constraint_name_list - drop_assertion_statement - drop_domain_constraint_definition - drop_table_constraint_definition - - external_routine_name: - - - - - - - - identifier - - - character_string_literal - - - - -
             ::= identifier
    -
               | character_string_literal
    -
    - referenced by: - - alter_routine_characteristic - external_body_reference - - trigger_name: - - - - - - - - schema_qualified_name - - - - -
             ::= schema_qualified_name
    -
    - referenced by: - - drop_trigger_statement - trigger_definition - - collation_name: - - - - - - - - schema_qualified_name - - - - -
             ::= schema_qualified_name
    -
    - referenced by: - - collate_clause - collation_definition - drop_collation_statement - existing_collation_name - module_collation_specification - object_name - - character_set_name: - - - - - - - - schema_name - - . - - - SQL_language_identifier - - - - -
             ::= ( schema_name '.' )? SQL_language_identifier
    -
    - referenced by: - - character_set_definition - drop_character_set_statement - implementation_defined_character_set_name - object_name - standard_character_set_name - user_defined_character_set_name - - transliteration_name: - - - - - - - - schema_qualified_name - - - - -
             ::= schema_qualified_name
    -
    - referenced by: - - character_transliteration - drop_transliteration_statement - existing_transliteration_name - object_name - transliteration_definition - - transcoding_name: - - - - - - - - schema_qualified_name - - - - -
             ::= schema_qualified_name
    -
    - referenced by: - - transcoding - - schema_resolved_user_defined_type_name: - - - - - - - - user_defined_type_name - - - - -
             ::= user_defined_type_name
    -
    - referenced by: - - alter_transform_statement - alter_type_statement - drop_data_type_statement - drop_transform_statement - drop_user_defined_ordering_statement - method_specification_designator - object_name - specific_routine_designator - transform_definition - user_defined_ordering_definition - user_defined_type_body - - user_defined_type_name: - - - - - - - - schema_name - - . - - - qualified_identifier - - - - -
             ::= ( schema_name '.' )? qualified_identifier
    -
    - referenced by: - - path_resolved_user_defined_type_name - schema_resolved_user_defined_type_name - - attribute_name: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - attribute_definition - dereference_operation - drop_attribute_definition - list_of_attributes - - field_name: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - field_definition - field_reference - - savepoint_name: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - savepoint_specifier - - sequence_generator_name: - - - - - - - - schema_qualified_name - - - - -
             ::= schema_qualified_name
    -
    - referenced by: - - alter_sequence_generator_statement - drop_sequence_generator_statement - next_value_expression - object_name - sequence_generator_definition - - role_name: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - authorization_identifier - drop_role_statement - role_definition - role_granted - role_revoked - - user_identifier: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - authorization_identifier - - connection_name: - - - - - - - - simple_value_specification - - - - -
             ::= simple_value_specification
    -
    - referenced by: - - connection_object - connection_target - - SQL_server_name: - - - - - - - - simple_value_specification - - - - -
             ::= simple_value_specification
    -
    - referenced by: - - connection_target - - connection_user_name: - - - - - - - - simple_value_specification - - - - -
             ::= simple_value_specification
    -
    - referenced by: - - connection_target - - SQL_statement_name: - - - - - - - - statement_name - - - extended_statement_name - - - - -
             ::= statement_name
    -
               | extended_statement_name
    -
    - referenced by: - - deallocate_prepared_statement - describe_input_statement - described_object - execute_statement - prepare_statement - - statement_name: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - SQL_statement_name - dynamic_declare_cursor - - extended_statement_name: - - - - - - - - scope_option - - - simple_value_specification - - - - - - - referenced by: - - SQL_statement_name - allocate_extended_dynamic_cursor_statement - - dynamic_cursor_name: - - - - - - - - conventional_dynamic_cursor_name - - - PTF_cursor_name - - - - -
             ::= conventional_dynamic_cursor_name
    -
               | PTF_cursor_name
    -
    - referenced by: - - dynamic_fetch_statement - - conventional_dynamic_cursor_name: - - - - - - - - cursor_name - - - extended_cursor_name - - - - -
             ::= cursor_name
    -
               | extended_cursor_name
    -
    - referenced by: - - dynamic_close_statement - dynamic_cursor_name - dynamic_delete_statement__positioned - dynamic_open_statement - dynamic_update_statement__positioned - - extended_cursor_name: - - - - - - - - scope_option - - - simple_value_specification - - - - - - - referenced by: - - allocate_extended_dynamic_cursor_statement - conventional_dynamic_cursor_name - - PTF_cursor_name: - - - - - - - - PTF - - - simple_value_specification - - - - -
             ::= 'PTF' simple_value_specification
    -
    - referenced by: - - dynamic_cursor_name - - descriptor_name: - - - - - - - - conventional_descriptor_name - - - PTF_descriptor_name - - - - -
             ::= conventional_descriptor_name
    -
               | PTF_descriptor_name
    -
    - referenced by: - - get_descriptor_statement - into_descriptor - set_descriptor_statement - source_descriptor_name - using_descriptor - - conventional_descriptor_name: - - - - - - - - non_extended_descriptor_name - - - extended_descriptor_name - - - - -
             ::= non_extended_descriptor_name
    -
               | extended_descriptor_name
    -
    - referenced by: - - allocate_descriptor_statement - deallocate_descriptor_statement - descriptor_name - - non_extended_descriptor_name: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - conventional_descriptor_name - - extended_descriptor_name: - - - - - - - - scope_option - - - simple_value_specification - - - - - - - referenced by: - - conventional_descriptor_name - - scope_option: - - - - - - - - GLOBAL - - - LOCAL - - - - - -
             ::= 'GLOBAL'
    -
               | 'LOCAL'
    -
    - referenced by: - - extended_cursor_name - extended_descriptor_name - extended_statement_name - preparable_dynamic_cursor_name - - PTF_descriptor_name: - - - - - - - - PTF - - - simple_value_specification - - - - -
             ::= 'PTF' simple_value_specification
    -
    - referenced by: - - descriptor_name - pipe_row_statement - target_descriptor_name - - window_name: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - existing_window_name - new_window_name - window_name_or_specification - - row_pattern_variable_name: - - - - - - - - correlation_name - - - - -
             ::= correlation_name
    -
    - referenced by: - - classifier_function - row_pattern_count_function - row_pattern_definition_variable_name - row_pattern_primary_variable_name - row_pattern_skip_to_variable_name - row_pattern_subset_item_variable_name - row_pattern_subset_rhs_variable_name - - measure_name: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - row_pattern_measure_definition - window_row_pattern_measure - - data_type: - - - - - - - - predefined_type - - - row_type - - - path_resolved_user_defined_type_name - - - reference_type - - - collection_type - - - - -
             ::= predefined_type
    -
               | row_type
    -
               | path_resolved_user_defined_type_name
    -
               | reference_type
    -
               | collection_type
    -
    - referenced by: - - JSON_output_clause - JSON_returning_clause - JSON_table_formatted_column_definition - JSON_table_regular_column_definition - alter_column_data_type_clause - array_type - attribute_definition - cast_target - data_type_list - data_type_or_domain_name - descriptor_column_specification - field_definition - generalized_invocation - host_parameter_data_type - multiset_type - parameter_type - result_cast_from_type - returns_data_type - sequence_generator_data_type_option - source_data_type - table_function_column_list_element - target_data_type - - predefined_type: - - - - - - - - character_string_type - - CHARACTER - - - SET - - - character_set_specification - - - national_character_string_type - - - collate_clause - - - binary_string_type - - - numeric_type - - BOOLEAN - - - datetime_type - - - interval_type - - - - - -
               | binary_string_type
    -
               | numeric_type
    -
               | 'BOOLEAN'
    -
               | datetime_type
    -
               | interval_type
    -
    - referenced by: - - Ada_user_defined_type_variable - COBOL_user_defined_type_variable - C_user_defined_type_variable - Fortran_user_defined_type_variable - MUMPS_user_defined_type_variable - PL_I_user_defined_type_variable - Pascal_user_defined_type_variable - data_type - domain_definition - representation - user_defined_representation - - character_string_type: - - - - - - - - CHARACTER - - - CHAR - - - VARYING - - - ( - - - character_length - - ) - - - VARCHAR - - - ( - - - character_length - - ) - - - character_large_object_type - - - - -
             ::= ( 'CHARACTER' | 'CHAR' ) ( 'VARYING'? '(' character_length ')' )?
    -
               | 'VARCHAR' '(' character_length ')'
    -
               | character_large_object_type
    -
    - referenced by: - - predefined_type - - character_large_object_type: - - - - - - - - CHARACTER - - - CHAR - - - LARGE - - - OBJECT* - - - CLOB - - - ( - - - character_large_object_length - - ) - - - - - -
             ::= ( ( 'CHARACTER' | 'CHAR' ) 'LARGE' 'OBJECT*' | 'CLOB' ) ( '(' character_large_object_length ')' )?
    -
    - referenced by: - - character_string_type - - national_character_string_type: - - - - - - - - NATIONAL - - - CHARACTER - - - CHAR - - - NCHAR - - - VARYING - - - ( - - - character_length - - ) - - - national_character_large_object_type - - - - -
             ::= ( 'NATIONAL' ( 'CHARACTER' | 'CHAR' ) | 'NCHAR' ) ( 'VARYING'? '(' character_length ')' )?
    -
               | national_character_large_object_type
    -
    - referenced by: - - predefined_type - - national_character_large_object_type: - - - - - - - - NATIONAL - - - CHARACTER - - - NCHAR - - - LARGE - - - OBJECT* - - - NCLOB - - - ( - - - character_large_object_length - - ) - - - - - -
             ::= ( ( 'NATIONAL' 'CHARACTER' | 'NCHAR' ) 'LARGE' 'OBJECT*' | 'NCLOB' ) - ( '(' character_large_object_length ')' )?
    -
    - referenced by: - - national_character_string_type - - binary_string_type: - - - - - - - - BINARY - - - VARYING - - - ( - - - length - - ) - - - VARBINARY - - - ( - - - length - - ) - - - binary_large_object_string_type - - - - -
             ::= 'BINARY' ( 'VARYING'? '(' length ')' )?
    -
               | 'VARBINARY' '(' length ')'
    -
               | binary_large_object_string_type
    -
    - referenced by: - - predefined_type - - binary_large_object_string_type: - - - - - - - - BINARY - - - LARGE - - - OBJECT* - - - BLOB - - - ( - - - large_object_length - - ) - - - - - -
             ::= ( 'BINARY' 'LARGE' 'OBJECT*' | 'BLOB' ) ( '(' large_object_length ')' )?
    -
    - referenced by: - - binary_string_type - - numeric_type: - - - - - - - - exact_numeric_type - - - approximate_numeric_type - - - decimal_floating_point_type - - - - -
             ::= exact_numeric_type
    -
               | approximate_numeric_type
    -
               | decimal_floating_point_type
    -
    - referenced by: - - predefined_type - - exact_numeric_type: - - - - - - - - NUMERIC - - - DECIMAL - - - DEC - - - ( - - - precision - - , - - - scale - - ) - - - SMALLINT - - - INTEGER - - - INT - - - BIGINT - - - - - -
             ::= ( 'NUMERIC' | 'DECIMAL' | 'DEC' ) ( '(' precision ( ',' scale )? ')' )?
    -
               | 'SMALLINT'
    -
               | 'INTEGER'
    -
               | 'INT'
    -
               | 'BIGINT'
    -
    - referenced by: - - numeric_type - - approximate_numeric_type: - - - - - - - - FLOAT - - - ( - - - precision - - ) - - - REAL - - - DOUBLE - - - PRECISION - - - - - -
             ::= 'FLOAT' ( '(' precision ')' )?
    -
               | 'REAL'
    -
               | 'DOUBLE' 'PRECISION'
    -
    - referenced by: - - numeric_type - - decimal_floating_point_type: - - - - - - - - DECFLOAT - - - ( - - - precision - - ) - - - - - -
             ::= 'DECFLOAT' ( '(' precision ')' )?
    -
    - referenced by: - - numeric_type - - length: - - - - - - - - unsigned_integer - - - - - - referenced by: - - Ada_BINARY_variable - Ada_VARBINARY_variable - COBOL_BINARY_variable - COBOL_nines - C_BINARY_variable - C_VARBINARY_variable - Fortran_BINARY_variable - Fortran_VARBINARY_variable - PL_I_BINARY_variable - PL_I_VARBINARY_variable - Pascal_BINARY_variable - binary_string_type - character_length - - character_length: - - - - - - - - length - - - char_length_units - - - - -
             ::= length char_length_units?
    -
    - referenced by: - - Ada_qualified_type_specification - Ada_unqualified_type_specification - COBOL_character_type - COBOL_national_character_type - C_array_specification - Fortran_type_specification - MUMPS_length_specification - PL_I_type_specification - Pascal_type_specification - character_string_type - national_character_string_type - normalize_function_result_length - - large_object_length: - - - - - - - - unsigned_integer - - - multiplier - - - large_object_length_token - - - - -
             ::= unsigned_integer multiplier?
    -
               | large_object_length_token
    -
    - referenced by: - - Ada_BLOB_variable - COBOL_BLOB_variable - C_BLOB_variable - Fortran_BLOB_variable - PL_I_BLOB_variable - Pascal_BLOB_variable - binary_large_object_string_type - character_large_object_length - - character_large_object_length: - - - - - - - - large_object_length - - - char_length_units - - - - -
             ::= large_object_length char_length_units?
    -
    - referenced by: - - Ada_CLOB_variable - COBOL_CLOB_variable - COBOL_NCLOB_variable - C_CLOB_variable - C_NCLOB_variable - Fortran_CLOB_variable - PL_I_CLOB_variable - Pascal_CLOB_variable - character_large_object_type - national_character_large_object_type - normalize_function_result_length - - char_length_units: - - - - - - - - CHARACTERS* - - - OCTETS* - - - - - -
             ::= 'CHARACTERS*'
    -
               | 'OCTETS*'
    -
    - referenced by: - - char_length_expression - character_large_object_length - character_length - character_overlay_function - character_position_expression - character_substring_function - regex_occurrences_function - regex_position_expression - regex_substring_function - regex_transliteration - - precision: - - - - - - - - unsigned_integer - - - - -
             ::= unsigned_integer
    -
    - referenced by: - - MUMPS_type_specification - PL_I_type_specification - approximate_numeric_type - decimal_floating_point_type - exact_numeric_type - - scale: - - - - - - - - unsigned_integer - - - - - - referenced by: - - MUMPS_type_specification - PL_I_type_specification - exact_numeric_type - - datetime_type: - - - - - - - - DATE - - - TIME - - - ( - - - time_precision - - ) - - - TIMESTAMP - - - ( - - - timestamp_precision - - ) - - - with_or_without_time_zone - - - - -
             ::= 'DATE'
    -
               | ( 'TIME' ( '(' time_precision ')' )? | 'TIMESTAMP' ( '(' timestamp_precision ')' )? ) with_or_without_time_zone?
    -
    - referenced by: - - predefined_type - - with_or_without_time_zone: - - - - - - - - WITH - - - WITHOUT - - - TIME - - - ZONE* - - - - - -
             ::= ( 'WITH' | 'WITHOUT' ) 'TIME' 'ZONE*'
    -
    - referenced by: - - datetime_type - - time_precision: - - - - - - - - time_fractional_seconds_precision - - - - -
             ::= time_fractional_seconds_precision
    -
    - referenced by: - - current_local_time_value_function - current_time_value_function - datetime_type - - timestamp_precision: - - - - - - - - time_fractional_seconds_precision - - - - -
             ::= time_fractional_seconds_precision
    -
    - referenced by: - - current_local_timestamp_value_function - current_timestamp_value_function - datetime_type - - time_fractional_seconds_precision: - - - - - - - - unsigned_integer - - - - -
             ::= unsigned_integer
    -
    - referenced by: - - time_precision - timestamp_precision - - interval_type: - - - - - - - - INTERVAL - - - interval_qualifier - - - - -
             ::= 'INTERVAL' interval_qualifier
    -
    - referenced by: - - predefined_type - - row_type: - - - - - - - - ROW - - - row_type_body - - - - - - referenced by: - - data_type - - row_type_body: - - - - - - - - ( - - - field_definition - - , - - - ) - - - - - -
             ::= '(' field_definition ( ',' field_definition )* ')'
    -
    - referenced by: - - row_type - - reference_type: - - - - - - - - REF - - - ( - - - referenced_type - - ) - - - scope_clause - - - - -
             ::= 'REF' '(' referenced_type ')' scope_clause?
    -
    - referenced by: - - Ada_REF_variable - COBOL_REF_variable - C_REF_variable - Fortran_REF_variable - MUMPS_REF_variable - PL_I_REF_variable - Pascal_REF_variable - data_type - target_subtype - - scope_clause: - - - - - - - - SCOPE - - - table_name - - - - -
             ::= 'SCOPE' table_name
    -
    - referenced by: - - add_column_scope_clause - column_option_list - reference_type - view_column_option - - referenced_type: - - - - - - - - path_resolved_user_defined_type_name - - - - - - - referenced by: - - reference_type - - path_resolved_user_defined_type_name: - - - - - - - - user_defined_type_name - - - - -
             ::= user_defined_type_name
    -
    - referenced by: - - Ada_user_defined_type_locator_variable - Ada_user_defined_type_variable - COBOL_user_defined_type_locator_variable - COBOL_user_defined_type_variable - C_user_defined_type_locator_variable - C_user_defined_type_variable - Fortran_user_defined_type_locator_variable - Fortran_user_defined_type_variable - MUMPS_user_defined_type_locator_variable - MUMPS_user_defined_type_variable - PL_I_user_defined_type_locator_variable - PL_I_user_defined_type_variable - Pascal_user_defined_type_locator_variable - Pascal_user_defined_type_variable - data_type - exclusive_user_defined_type_specification - general_value_specification - generalized_expression - group_specification - inclusive_user_defined_type_specification - new_specification - referenceable_view_specification - referenced_type - static_method_invocation - supertype_name - target_subtype - transform_group_characteristic - typed_table_clause - - collection_type: - - - - - - - - array_type - - - multiset_type - - - - -
             ::= array_type
    -
               | multiset_type
    -
    - referenced by: - - data_type - representation - - array_type: - - - - - - - - data_type - - ARRAY - - - left_bracket_or_trigraph - - - maximum_cardinality - - - right_bracket_or_trigraph - - - - - - - referenced by: - - Ada_array_locator_variable - COBOL_array_locator_variable - C_array_locator_variable - Fortran_array_locator_variable - MUMPS_array_locator_variable - PL_I_array_locator_variable - Pascal_array_locator_variable - collection_type - - maximum_cardinality: - - - - - - - - unsigned_integer - - - - -
             ::= unsigned_integer
    -
    - referenced by: - - array_type - - multiset_type: - - - - - - - - data_type - - MULTISET - - - - - -
             ::= data_type 'MULTISET'
    -
    - referenced by: - - Ada_multiset_locator_variable - COBOL_multiset_locator_variable - C_multiset_locator_variable - Fortran_multiset_locator_variable - MUMPS_multiset_locator_variable - PL_I_multiset_locator_variable - Pascal_multiset_locator_variable - collection_type - - field_definition: - - - - - - - - field_name - - - data_type - - - - -
             ::= field_name data_type
    -
    - referenced by: - - row_type_body - - value_expression_primary: - - - - - - - - parenthesized_value_expression - - - nonparenthesized_value_expression_primary - - - - -
             ::= parenthesized_value_expression
    -
    -
    - referenced by: - - all_fields_reference - array_primary - attribute_or_method_reference - binary_primary - character_primary - datetime_primary - direct_invocation - field_reference - generalized_invocation - interval_primary - method_reference - multiset_primary - numeric_primary - reference_value_expression - user_defined_type_value_expression - - parenthesized_value_expression: - - - - - - - - ( - - - value_expression - - ) - - - - - -
             ::= '(' value_expression ')'
    -
    - referenced by: - - value_expression_primary - - nonparenthesized_value_expression_primary: - - - - - - - - unsigned_value_specification - - - column_reference - - - set_function_specification - - - window_function - - - nested_window_function - - - scalar_subquery - - - case_expression - - - cast_specification - - - field_reference - - - subtype_treatment - - - method_invocation - - - static_method_invocation - - - new_specification - - - attribute_or_method_reference - - - reference_resolution - - - collection_value_constructor - - - array_element_reference - - - multiset_element_reference - - - next_value_expression - - - routine_invocation - - - row_pattern_navigation_operation - - - JSON_value_function - - - - -
             ::= unsigned_value_specification
    -
               | column_reference
    -
               | set_function_specification
    -
               | window_function
    -
               | nested_window_function
    -
               | scalar_subquery
    -
               | case_expression
    -
               | cast_specification
    -
               | field_reference
    -
               | subtype_treatment
    -
               | method_invocation
    -
               | static_method_invocation
    -
               | new_specification
    -
               | attribute_or_method_reference
    -
               | reference_resolution
    -
               | collection_value_constructor
    -
               | array_element_reference
    -
               | multiset_element_reference
    -
               | next_value_expression
    -
               | routine_invocation
    -
               | row_pattern_navigation_operation
    -
               | JSON_value_function
    -
    - referenced by: - - boolean_predicand - row_value_special_case - value_expression_primary - - collection_value_constructor: - - - - - - - - array_value_constructor - - - multiset_value_constructor - - - - -
             ::= array_value_constructor
    -
               | multiset_value_constructor
    -
    - referenced by: - - nonparenthesized_value_expression_primary - - value_specification: - - - - - - - - literal - - - general_value_specification - - - - -
             ::= literal
    -
               | general_value_specification
    -
    - referenced by: - - SQL_path_characteristic - catalog_name_characteristic - character_set_name_characteristic - collation_specification - role_specification - schema_name_characteristic - set_session_user_identifier_statement - transform_group_characteristic - - unsigned_value_specification: - - - - - - - - unsigned_literal - - - general_value_specification - - - - -
             ::= unsigned_literal
    -
               | general_value_specification
    -
    - referenced by: - - nonparenthesized_value_expression_primary - window_frame_following - window_frame_preceding - - general_value_specification: - - - - - - - - host_parameter_specification - - - SQL_parameter_reference - - ? - - - embedded_variable_specification - - - current_collation_specification - - CURRENT_CATALOG - - - CURRENT_DEFAULT_TRANSFORM_GROUP - - - CURRENT_PATH - - - CURRENT_ROLE - - CURRENT_SCHEMA - - - CURRENT_TRANSFORM_GROUP_FOR_TYPE - - - path_resolved_user_defined_type_name - - CURRENT_USER - - - SESSION_USER - - - SYSTEM_USER - - - USER - - - VALUE - - - - - -
             ::= host_parameter_specification
    -
               | SQL_parameter_reference
    -
               | '?'
    -
               | embedded_variable_specification
    -
               | current_collation_specification
    -
               | 'CURRENT_CATALOG'
    -
               | 'CURRENT_DEFAULT_TRANSFORM_GROUP'
    -
               | CURRENT_PATH
    -
               | CURRENT_ROLE
    -
               | 'CURRENT_SCHEMA'
    -
               | 'CURRENT_TRANSFORM_GROUP_FOR_TYPE' path_resolved_user_defined_type_name
    -
               | 'CURRENT_USER'
    -
               | 'SESSION_USER'
    -
               | 'SYSTEM_USER'
    -
               | 'USER'
    -
               | 'VALUE'
    -
    - referenced by: - - unsigned_value_specification - using_argument - value_specification - - simple_value_specification: - - - - - - - - literal - - - host_parameter_name - - - SQL_parameter_reference - - - embedded_variable_name - - - - -
             ::= literal
    -
               | host_parameter_name
    -
               | SQL_parameter_reference
    -
               | embedded_variable_name
    -
    - referenced by: - - PTF_cursor_name - PTF_descriptor_name - SQL_server_name - SQL_statement_variable - attributes_variable - condition_number - connection_name - connection_user_name - extended_cursor_name - extended_descriptor_name - extended_statement_name - fetch_first_percentage - fetch_first_row_count - fetch_orientation - item_number - item_number_1 - item_number_2 - logical_offset - nth_row - number_of_conditions - number_of_tiles - occurrences - offset_row_count - physical_offset - row_marker_offset - simple_value_specification_1 - simple_value_specification_2 - target_array_element_specification - update_target - - target_specification: - - - - - - - - host_parameter_specification - - - SQL_parameter_reference - - - column_reference - - - target_array_element_specification - - ? - - - embedded_variable_specification - - - - -
             ::= host_parameter_specification
    -
               | SQL_parameter_reference
    -
               | column_reference
    -
               | target_array_element_specification
    -
               | '?'
    -
               | embedded_variable_specification
    -
    - referenced by: - - SQL_argument - fetch_target_list - into_argument - named_argument_SQL_argument - select_target_list - - simple_target_specification: - - - - - - - - host_parameter_name - - - SQL_parameter_reference - - - column_reference - - - embedded_variable_name - - - - -
             ::= host_parameter_name
    -
               | SQL_parameter_reference
    -
               | column_reference
    -
               | embedded_variable_name
    -
    - referenced by: - - all_info_target - condition_information_item - simple_target_specification_1 - simple_target_specification_2 - statement_information_item - - host_parameter_specification: - - - - - - - - host_parameter_name - - - indicator_parameter - - - - - - - referenced by: - - general_value_specification - target_specification - - embedded_variable_specification: - - - - - - - - embedded_variable_name - - - indicator_variable - - - - - - - referenced by: - - general_value_specification - target_specification - - indicator_variable: - - - - - - - - INDICATOR - - - embedded_variable_name - - - - -
             ::= 'INDICATOR'? embedded_variable_name
    -
    - referenced by: - - embedded_variable_specification - - indicator_parameter: - - - - - - - - INDICATOR - - - host_parameter_name - - - - -
             ::= 'INDICATOR'? host_parameter_name
    -
    - referenced by: - - host_parameter_specification - - target_array_element_specification: - - - - - - - - target_array_reference - - - left_bracket_or_trigraph - - - simple_value_specification - - - right_bracket_or_trigraph - - - - - - - referenced by: - - target_specification - - target_array_reference: - - - - - - - - SQL_parameter_reference - - - column_reference - - - - -
             ::= SQL_parameter_reference
    -
               | column_reference
    -
    - referenced by: - - target_array_element_specification - - current_collation_specification: - - - - - - - - COLLATION* - - - FOR - - - ( - - - string_value_expression - - ) - - - - - -
             ::= 'COLLATION*' 'FOR' '(' string_value_expression ')'
    -
    - referenced by: - - general_value_specification - - contextually_typed_value_specification: - - - - - - - - implicitly_typed_value_specification - - DEFAULT - - - - - - -
               | 'DEFAULT'
    -
    - referenced by: - - SQL_argument - contextually_typed_row_value_constructor - contextually_typed_row_value_constructor_element - merge_insert_value_element - named_argument_SQL_argument - parameter_default - update_source - - implicitly_typed_value_specification: - - - - - - - - NULL - - - empty_specification - - - - -
             ::= 'NULL'
    -
               | empty_specification
    -
    - referenced by: - - cast_operand - contextually_typed_value_specification - default_option - - empty_specification: - - - - - - - - ARRAY - - - MULTISET - - - left_bracket_or_trigraph - - - right_bracket_or_trigraph - - - - -
             ::= ( 'ARRAY' | 'MULTISET' ) left_bracket_or_trigraph right_bracket_or_trigraph
    -
    - referenced by: - - implicitly_typed_value_specification - - identifier_chain: - - - - - - - - identifier - - . - - - - - -
             ::= identifier ( '.' identifier )*
    -
    - referenced by: - - basic_identifier_chain - - basic_identifier_chain: - - - - - - - - identifier_chain - - - - -
             ::= identifier_chain
    -
    - referenced by: - - SQL_parameter_reference - column_reference - period_reference - - column_reference: - - - - - - - - basic_identifier_chain - - MODULE - - - . - - - qualified_identifier - - . - - - column_name - - - - -
             ::= basic_identifier_chain
    -
               | 'MODULE' '.' qualified_identifier '.' column_name
    -
    - referenced by: - - grouping_column_reference - grouping_operation - nonparenthesized_value_expression_primary - partitioned_join_column_reference - row_pattern_partition_column - simple_target_specification - table_argument_ordering_column - table_argument_partitioning_list - target_array_reference - target_specification - window_partition_column_reference - - SQL_parameter_reference: - - - - - - - - basic_identifier_chain - - - - -
             ::= basic_identifier_chain
    -
    - referenced by: - - general_value_specification - simple_target_specification - simple_value_specification - target_array_reference - target_specification - - set_function_specification: - - - - - - - - running_or_final - - - aggregate_function - - - grouping_operation - - - - -
             ::= running_or_final? aggregate_function
    -
               | grouping_operation
    -
    - referenced by: - - nonparenthesized_value_expression_primary - - running_or_final: - - - - - - - - RUNNING - - - FINAL* - - - - - -
             ::= 'RUNNING'
    -
               | 'FINAL*'
    -
    - referenced by: - - row_pattern_navigation__compound - row_pattern_navigation__logical - set_function_specification - - grouping_operation: - - - - - - - - GROUPING - - - ( - - - column_reference - - , - - - ) - - - - - -
             ::= 'GROUPING' '(' column_reference ( ',' column_reference )* ')'
    -
    - referenced by: - - set_function_specification - - window_function: - - - - - - - - window_function_type - - OVER - - - window_name_or_specification - - - - - - - referenced by: - - nonparenthesized_value_expression_primary - - window_function_type: - - - - - - - - rank_function_type - - ROW_NUMBER - - - ( - - - ) - - - aggregate_function - - - ntile_function - - - lead_or_lag_function - - - first_or_last_value_function - - - nth_value_function - - - window_row_pattern_measure - - - - -
             ::= ( rank_function_type | 'ROW_NUMBER' ) '(' ')'
    -
               | aggregate_function
    -
               | ntile_function
    -
               | lead_or_lag_function
    -
               | first_or_last_value_function
    -
               | nth_value_function
    -
               | window_row_pattern_measure
    -
    - referenced by: - - window_function - - rank_function_type: - - - - - - - - RANK - - - DENSE_RANK - - - PERCENT_RANK - - - CUME_DIST - - - - - -
             ::= 'RANK'
    -
               | 'DENSE_RANK'
    -
               | 'PERCENT_RANK'
    -
               | 'CUME_DIST'
    -
    - referenced by: - - hypothetical_set_function - window_function_type - - ntile_function: - - - - - - - - NTILE - - - ( - - - number_of_tiles - - ) - - - - - -
             ::= 'NTILE' '(' number_of_tiles ')'
    -
    - referenced by: - - window_function_type - - number_of_tiles: - - - - - - - - simple_value_specification - - ? - - - - - -
             ::= simple_value_specification
    -
               | '?'
    -
    - referenced by: - - ntile_function - - lead_or_lag_function: - - - - - - - - lead_or_lag - - ( - - - lead_or_lag_extent - - , - - - offset - - , - - - default_expression - - ) - - - null_treatment - - - - -
             ::= lead_or_lag '(' lead_or_lag_extent ( ',' offset ( ',' default_expression )? )? ')' null_treatment?
    -
    - referenced by: - - window_function_type - - lead_or_lag: - - - - - - - - LEAD - - - LAG - - - - - -
             ::= 'LEAD'
    -
               | 'LAG'
    -
    - referenced by: - - lead_or_lag_function - - lead_or_lag_extent: - - - - - - - - value_expression - - - - -
             ::= value_expression
    -
    - referenced by: - - lead_or_lag_function - - offset: - - - - - - - - exact_numeric_literal - - - - - - referenced by: - - lead_or_lag_function - - default_expression: - - - - - - - - value_expression - - - - -
             ::= value_expression
    -
    - referenced by: - - lead_or_lag_function - - null_treatment: - - - - - - - - RESPECT* - - - IGNORE* - - - NULLS* - - - - - -
             ::= ( 'RESPECT*' | 'IGNORE*' ) 'NULLS*'
    -
    - referenced by: - - first_or_last_value_function - lead_or_lag_function - nth_value_function - - first_or_last_value_function: - - - - - - - - first_or_last_value - - ( - - - value_expression - - ) - - - null_treatment - - - - -
             ::= first_or_last_value '(' value_expression ')' null_treatment?
    -
    - referenced by: - - window_function_type - - first_or_last_value: - - - - - - - - FIRST_VALUE - - - LAST_VALUE - - - - - -
             ::= 'FIRST_VALUE'
    -
               | 'LAST_VALUE'
    -
    - referenced by: - - first_or_last_value_function - - nth_value_function: - - - - - - - - NTH_VALUE - - - ( - - - value_expression - - , - - - nth_row - - ) - - - from_first_or_last - - - null_treatment - - - - -
             ::= 'NTH_VALUE' '(' value_expression ',' nth_row ')' from_first_or_last? null_treatment?
    -
    - referenced by: - - window_function_type - - nth_row: - - - - - - - - simple_value_specification - - ? - - - - - -
               | '?'
    -
    - referenced by: - - nth_value_function - - from_first_or_last: - - - - - - - - FROM - - - FIRST* - - - LAST* - - - - - -
             ::= 'FROM' ( 'FIRST*' | 'LAST*' )
    -
    - referenced by: - - nth_value_function - - window_name_or_specification: - - - - - - - - window_name - - - in_line_window_specification - - - - -
             ::= window_name
    -
               | in_line_window_specification
    -
    - referenced by: - - window_function - - in_line_window_specification: - - - - - - - - window_specification - - - - -
             ::= window_specification
    -
    - referenced by: - - window_name_or_specification - - window_row_pattern_measure: - - - - - - - - measure_name - - - - -
             ::= measure_name
    -
    - referenced by: - - window_function_type - - nested_window_function: - - - - - - - - nested_row_number_function - - - value_of_expression_at_row - - - - -
             ::= nested_row_number_function
    -
               | value_of_expression_at_row
    -
    - referenced by: - - nonparenthesized_value_expression_primary - - nested_row_number_function: - - - - - - - - ROW_NUMBER - - - ( - - - row_marker - - ) - - - - - -
             ::= 'ROW_NUMBER' '(' row_marker ')'
    -
    - referenced by: - - nested_window_function - - value_of_expression_at_row: - - - - - - - - VALUE_OF - - - ( - - - value_expression - - AT - - - row_marker_expression - - , - - - value_of_default_value - - ) - - - - - -
             ::= 'VALUE_OF' '(' value_expression 'AT' row_marker_expression ',' value_of_default_value ')'
    -
    - referenced by: - - nested_window_function - - row_marker: - - - - - - - - BEGIN_PARTITION - - - BEGIN_FRAME - - - CURRENT_ROW - - - FRAME_ROW - - - END_FRAME - - - END_PARTITION - - - - - -
             ::= 'BEGIN_PARTITION'
    -
               | 'BEGIN_FRAME'
    -
               | 'CURRENT_ROW'
    -
               | 'FRAME_ROW'
    -
               | 'END_FRAME'
    -
               | 'END_PARTITION'
    -
    - referenced by: - - nested_row_number_function - row_marker_expression - - row_marker_expression: - - - - - - - - row_marker - - - row_marker_delta - - - - -
             ::= row_marker row_marker_delta?
    -
    - referenced by: - - value_of_expression_at_row - - row_marker_delta: - - - - - - - - + - - - - - - - row_marker_offset - - - - -
             ::= ( '+' | '-' ) row_marker_offset
    -
    - referenced by: - - row_marker_expression - - row_marker_offset: - - - - - - - - simple_value_specification - - ? - - - - - -
             ::= simple_value_specification
    -
               | '?'
    -
    - referenced by: - - row_marker_delta - - value_of_default_value: - - - - - - - - value_expression - - - - -
             ::= value_expression
    -
    - referenced by: - - value_of_expression_at_row - - case_expression: - - - - - - - - case_abbreviation - - - case_specification - - - - -
             ::= case_abbreviation
    -
               | case_specification
    -
    - referenced by: - - nonparenthesized_value_expression_primary - - case_abbreviation: - - - - - - - - NULLIF - - - ( - - - value_expression - - , - - - COALESCE - - - ( - - - value_expression - - , - - - value_expression - - ) - - - - - -
             ::= ( 'NULLIF' '(' value_expression ',' | 'COALESCE' '(' ( value_expression ',' )* ) value_expression ')'
    -
    - referenced by: - - case_expression - - case_specification: - - - - - - - - simple_case - - - searched_case - - - - -
             ::= simple_case
    -
               | searched_case
    -
    - referenced by: - - case_expression - - simple_case: - - - - - - - - CASE - - - case_operand - - - simple_when_clause - - - else_clause - - END - - - - - -
             ::= 'CASE' case_operand simple_when_clause+ else_clause? 'END'
    -
    - referenced by: - - case_specification - - searched_case: - - - - - - - - CASE - - - searched_when_clause - - - else_clause - - END - - - - - -
             ::= 'CASE' searched_when_clause+ else_clause? 'END'
    -
    - referenced by: - - case_specification - - simple_when_clause: - - - - - - - - WHEN - - - when_operand_list - - THEN - - - result - - - - -
             ::= 'WHEN' when_operand_list 'THEN' result
    -
    - referenced by: - - simple_case - - searched_when_clause: - - - - - - - - WHEN - - - search_condition - - THEN - - - result - - - - -
             ::= 'WHEN' search_condition 'THEN' result
    -
    - referenced by: - - searched_case - - else_clause: - - - - - - - - ELSE - - - result - - - - -
             ::= 'ELSE' result
    -
    - referenced by: - - searched_case - simple_case - - case_operand: - - - - - - - - row_value_predicand - - - overlaps_predicate_part_1 - - - - -
             ::= row_value_predicand
    -
               | overlaps_predicate_part_1
    -
    - referenced by: - - simple_case - - when_operand_list: - - - - - - - - when_operand - - , - - - - - -
             ::= when_operand ( ',' when_operand )*
    -
    - referenced by: - - simple_when_clause - - when_operand: - - - - - - - - row_value_predicand - - - comparison_predicate_part_2 - - - between_predicate_part_2 - - - in_predicate_part_2 - - - character_like_predicate_part_2 - - - octet_like_predicate_part_2 - - - similar_predicate_part_2 - - - regex_like_predicate_part_2 - - - null_predicate_part_2 - - - quantified_comparison_predicate_part_2 - - - normalized_predicate_part_2 - - - match_predicate_part_2 - - - overlaps_predicate_part_2 - - - distinct_predicate_part_2 - - - member_predicate_part_2 - - - submultiset_predicate_part_2 - - - set_predicate_part_2 - - - type_predicate_part_2 - - - - -
             ::= row_value_predicand
    -
               | comparison_predicate_part_2
    -
               | between_predicate_part_2
    -
               | in_predicate_part_2
    -
               | character_like_predicate_part_2
    -
               | octet_like_predicate_part_2
    -
               | similar_predicate_part_2
    -
               | regex_like_predicate_part_2
    -
               | null_predicate_part_2
    - -
               | normalized_predicate_part_2
    -
               | match_predicate_part_2
    -
               | overlaps_predicate_part_2
    -
               | distinct_predicate_part_2
    -
               | member_predicate_part_2
    -
               | submultiset_predicate_part_2
    -
               | set_predicate_part_2
    -
               | type_predicate_part_2
    -
    - referenced by: - - when_operand_list - - result: - - - - - - - - result_expression - - NULL - - - - - -
               | 'NULL'
    -
    - referenced by: - - else_clause - searched_when_clause - simple_when_clause - - result_expression: - - - - - - - - value_expression - - - - -
             ::= value_expression
    -
    - referenced by: - - result - - cast_specification: - - - - - - - - CAST - - - ( - - - cast_operand - - AS - - - cast_target - - FORMAT* - - - cast_template - - ) - - - - - -
             ::= 'CAST' '(' cast_operand 'AS' cast_target ( 'FORMAT*' cast_template )? ')'
    -
    - referenced by: - - nonparenthesized_value_expression_primary - - cast_operand: - - - - - - - - value_expression - - - implicitly_typed_value_specification - - - - -
             ::= value_expression
    -
               | implicitly_typed_value_specification
    -
    - referenced by: - - cast_specification - - cast_target: - - - - - - - - domain_name - - - data_type - - - - -
             ::= domain_name
    -
               | data_type
    -
    - referenced by: - - cast_specification - - cast_template: - - - - - - - - character_string_literal - - - - -
             ::= character_string_literal
    -
    - referenced by: - - cast_specification - - next_value_expression: - - - - - - - - NEXT* - - - VALUE - - - FOR - - - sequence_generator_name - - - - -
             ::= 'NEXT*' 'VALUE' 'FOR' sequence_generator_name
    -
    - referenced by: - - nonparenthesized_value_expression_primary - - field_reference: - - - - - - - - value_expression_primary - - . - - - field_name - - - - -
             ::= value_expression_primary '.' field_name
    -
    - referenced by: - - nonparenthesized_value_expression_primary - - subtype_treatment: - - - - - - - - TREAT - - - ( - - - subtype_operand - - AS - - - target_subtype - - ) - - - - - -
             ::= 'TREAT' '(' subtype_operand 'AS' target_subtype ')'
    -
    - referenced by: - - nonparenthesized_value_expression_primary - - subtype_operand: - - - - - - - - value_expression - - - - -
             ::= value_expression
    -
    - referenced by: - - subtype_treatment - - target_subtype: - - - - - - - - path_resolved_user_defined_type_name - - - reference_type - - - - - -
               | reference_type
    -
    - referenced by: - - subtype_treatment - - method_invocation: - - - - - - - - direct_invocation - - - generalized_invocation - - - - -
             ::= direct_invocation
    -
               | generalized_invocation
    -
    - referenced by: - - new_invocation - nonparenthesized_value_expression_primary - - direct_invocation: - - - - - - - - value_expression_primary - - . - - - method_name - - - SQL_argument_list - - - - - - - referenced by: - - method_invocation - - generalized_invocation: - - - - - - - - ( - - - value_expression_primary - - AS - - - data_type - - ) - - - . - - - method_name - - - SQL_argument_list - - - - -
             ::= '(' value_expression_primary 'AS' data_type ')' '.' method_name SQL_argument_list?
    -
    - referenced by: - - method_invocation - - method_selection: - - - - - - - - routine_invocation - - - - -
             ::= routine_invocation
    -
    - no referencesconstructor_method_selection: - - - - - - - - routine_invocation - - - - -
             ::= routine_invocation
    -
    - no referencesstatic_method_invocation: - - - - - - - - path_resolved_user_defined_type_name - - :: - - - method_name - - - SQL_argument_list - - - - - - - referenced by: - - nonparenthesized_value_expression_primary - - static_method_selection: - - - - - - - - routine_invocation - - - - -
             ::= routine_invocation
    -
    - no referencesnew_specification: - - - - - - - - NEW - - - path_resolved_user_defined_type_name - - - SQL_argument_list - - - - - - - referenced by: - - nonparenthesized_value_expression_primary - - new_invocation: - - - - - - - - method_invocation - - - routine_invocation - - - - -
             ::= method_invocation
    -
               | routine_invocation
    -
    - no referencesattribute_or_method_reference: - - - - - - - - value_expression_primary - - -> - - - qualified_identifier - - - SQL_argument_list - - - - - - - referenced by: - - nonparenthesized_value_expression_primary - - dereference_operation: - - - - - - - - reference_value_expression - - -> - - - attribute_name - - - - -
             ::= reference_value_expression '->' attribute_name
    -
    - no referencesmethod_reference: - - - - - - - - value_expression_primary - - -> - - - method_name - - - SQL_argument_list - - - - - - - no referencesreference_resolution: - - - - - - - - DEREF - - - ( - - - reference_value_expression - - ) - - - - - -
             ::= 'DEREF' '(' reference_value_expression ')'
    -
    - referenced by: - - nonparenthesized_value_expression_primary - - array_element_reference: - - - - - - - - array_value_expression - - - left_bracket_or_trigraph - - - numeric_value_expression - - - right_bracket_or_trigraph - - - - - - - referenced by: - - nonparenthesized_value_expression_primary - - multiset_element_reference: - - - - - - - - ELEMENT - - - ( - - - multiset_value_expression - - ) - - - - - -
             ::= 'ELEMENT' '(' multiset_value_expression ')'
    -
    - referenced by: - - nonparenthesized_value_expression_primary - - row_pattern_navigation_operation: - - - - - - - - row_pattern_navigation__logical - - - row_pattern_navigation__physical - - - row_pattern_navigation__compound - - - - -
             ::= row_pattern_navigation__logical
    -
               | row_pattern_navigation__physical
    -
               | row_pattern_navigation__compound
    -
    - referenced by: - - nonparenthesized_value_expression_primary - - row_pattern_navigation__logical: - - - - - - - - running_or_final - - - first_or_last - - ( - - - value_expression - - , - - - logical_offset - - ) - - - - - -
             ::= running_or_final? first_or_last '(' value_expression ( ',' logical_offset )? ')'
    -
    - referenced by: - - row_pattern_navigation_operation - - row_pattern_navigation__physical: - - - - - - - - prev_or_next - - ( - - - value_expression - - , - - - physical_offset - - ) - - - - - -
             ::= prev_or_next '(' value_expression ( ',' physical_offset )? ')'
    -
    - referenced by: - - row_pattern_navigation_operation - - row_pattern_navigation__compound: - - - - - - - - prev_or_next - - ( - - - running_or_final - - - first_or_last - - ( - - - value_expression - - , - - - logical_offset - - ) - - - , - - - physical_offset - - ) - - - - - -
             ::= prev_or_next '(' running_or_final? first_or_last '(' value_expression ( ',' logical_offset )? ')' ( ',' physical_offset )? ')'
    -
    - referenced by: - - row_pattern_navigation_operation - - first_or_last: - - - - - - - - FIRST* - - - LAST* - - - - - -
             ::= 'FIRST*'
    -
               | 'LAST*'
    -
    - referenced by: - - row_pattern_navigation__compound - row_pattern_navigation__logical - - prev_or_next: - - - - - - - - PREV - - NEXT* - - - - - -
             ::= PREV
    -
               | 'NEXT*'
    -
    - referenced by: - - row_pattern_navigation__compound - row_pattern_navigation__physical - - logical_offset: - - - - - - - - simple_value_specification - - ? - - - - - -
             ::= simple_value_specification
    -
               | '?'
    -
    - referenced by: - - row_pattern_navigation__compound - row_pattern_navigation__logical - - physical_offset: - - - - - - - - simple_value_specification - - ? - - - - - -
             ::= simple_value_specification
    -
               | '?'
    -
    - referenced by: - - row_pattern_navigation__compound - row_pattern_navigation__physical - - JSON_value_function: - - - - - - - - JSON_VALUE - - - ( - - - JSON_API_common_syntax - - - JSON_returning_clause - - - JSON_value_empty_behavior - - ON - - - EMPTY - - - JSON_value_error_behavior - - ON - - - ERROR* - - - ) - - - - - -
             ::= 'JSON_VALUE' '(' JSON_API_common_syntax JSON_returning_clause? ( JSON_value_empty_behavior 'ON' 'EMPTY' )? ( JSON_value_error_behavior 'ON' 'ERROR*' )? ')'
    -
    - referenced by: - - nonparenthesized_value_expression_primary - - JSON_returning_clause: - - - - - - - - RETURNING* - - - data_type - - - - -
             ::= 'RETURNING*' data_type
    -
    - referenced by: - - JSON_value_function - - JSON_value_empty_behavior: - - - - - - - - ERROR* - - - NULL - - - DEFAULT - - - value_expression - - - - -
             ::= 'ERROR*'
    -
               | 'NULL'
    -
               | 'DEFAULT' value_expression
    -
    - referenced by: - - JSON_value_function - - JSON_value_error_behavior: - - - - - - - - ERROR* - - - NULL - - - DEFAULT - - - value_expression - - - - -
             ::= 'ERROR*'
    -
               | 'NULL'
    -
               | 'DEFAULT' value_expression
    -
    - referenced by: - - JSON_value_function - - value_expression: - - - - - - - - common_value_expression - - - boolean_value_expression - - - row_value_expression - - - - -
             ::= common_value_expression
    -
               | boolean_value_expression
    -
               | row_value_expression
    -
    - referenced by: - - JSON_table_column_empty_behavior - JSON_table_column_error_behavior - JSON_value_empty_behavior - JSON_value_error_behavior - JSON_value_expression - SQL_argument - array_aggregate_function - array_element - case_abbreviation - cast_operand - contextually_typed_row_value_constructor_element - cycle_mark_value - default_expression - derived_column - first_or_last_value_function - general_set_function - generalized_expression - generation_expression - hypothetical_set_function_value_expression_list - lead_or_lag_extent - merge_insert_value_element - multiset_element - named_argument_SQL_argument - non_cycle_mark_value - nth_value_function - parameter_default - parenthesized_value_expression - result_expression - return_value - row_pattern_measure_expression - row_pattern_navigation__compound - row_pattern_navigation__logical - row_pattern_navigation__physical - row_value_constructor_element - sort_key - subtype_operand - update_source - value_of_default_value - value_of_expression_at_row - - common_value_expression: - - - - - - - - numeric_value_expression - - - string_value_expression - - - datetime_value_expression - - - interval_value_expression - - - user_defined_type_value_expression - - - reference_value_expression - - - collection_value_expression - - - - -
             ::= numeric_value_expression
    -
               | string_value_expression
    -
               | datetime_value_expression
    -
               | interval_value_expression
    -
               | user_defined_type_value_expression
    -
               | reference_value_expression
    -
               | collection_value_expression
    -
    - referenced by: - - contextually_typed_row_value_constructor - row_value_constructor - row_value_constructor_predicand - value_expression - - user_defined_type_value_expression: - - - - - - - - value_expression_primary - - - - -
             ::= value_expression_primary
    -
    - referenced by: - - common_value_expression - specific_type_method - - reference_value_expression: - - - - - - - - value_expression_primary - - - - -
             ::= value_expression_primary
    -
    - referenced by: - - common_value_expression - dereference_operation - reference_resolution - - collection_value_expression: - - - - - - - - array_value_expression - - - multiset_value_expression - - - - -
             ::= array_value_expression
    -
               | multiset_value_expression
    -
    - referenced by: - - cardinality_expression - collection_derived_table - common_value_expression - table_function_derived_table - - numeric_value_expression: - - - - - - - - term - - + - - - - - - - - - -
             ::= term ( ( '+' | '-' ) term )*
    -
    - referenced by: - - absolute_value_expression - array_element_reference - ceiling_function - common_logarithm - common_value_expression - dependent_variable_expression - exponential_function - floor_function - general_logarithm_argument - general_logarithm_base - independent_variable_expression - inverse_distribution_function_argument - natural_logarithm - numeric_value_expression_base - numeric_value_expression_dividend - numeric_value_expression_divisor - numeric_value_expression_exponent - regex_capture_group - regex_occurrence - repeat_argument - sample_percentage - square_root - start_position - string_length - trigonometric_function - trim_array_function - width_bucket_bound_1 - width_bucket_bound_2 - width_bucket_count - width_bucket_operand - - term: - - - - - - - - factor - - * - - - / - - - - -
    term     ::= factor ( ( '*' | '/' ) factor )*
    -
    - referenced by: - - interval_term - numeric_value_expression - - factor: - - - - - - - - sign - - - numeric_primary - - - - - - referenced by: - - interval_term - term - - numeric_primary: - - - - - - - - value_expression_primary - - - numeric_value_function - - - - -
             ::= value_expression_primary
    -
               | numeric_value_function
    -
    - referenced by: - - factor - - numeric_value_function: - - - - - - - - position_expression - - - regex_occurrences_function - - - regex_position_expression - - - extract_expression - - - length_expression - - - cardinality_expression - - - max_cardinality_expression - - - absolute_value_expression - - - modulus_expression - - - trigonometric_function - - - general_logarithm_function - - - common_logarithm - - - natural_logarithm - - - exponential_function - - - power_function - - - square_root - - - floor_function - - - ceiling_function - - - width_bucket_function - - - match_number_function - - - - -
             ::= position_expression
    -
               | regex_occurrences_function
    -
               | regex_position_expression
    -
               | extract_expression
    -
               | length_expression
    -
               | cardinality_expression
    -
               | max_cardinality_expression
    -
               | absolute_value_expression
    -
               | modulus_expression
    -
               | trigonometric_function
    -
               | general_logarithm_function
    -
               | common_logarithm
    -
               | natural_logarithm
    -
               | exponential_function
    -
               | power_function
    -
               | square_root
    -
               | floor_function
    -
               | ceiling_function
    -
               | width_bucket_function
    -
               | match_number_function
    -
    - referenced by: - - numeric_primary - - position_expression: - - - - - - - - character_position_expression - - - binary_position_expression - - - - -
             ::= character_position_expression
    -
               | binary_position_expression
    -
    - referenced by: - - numeric_value_function - - regex_occurrences_function: - - - - - - - - OCCURRENCES_REGEX - - - ( - - - XQuery_pattern - - FLAG* - - - XQuery_option_flag - - IN - - - regex_subject_string - - FROM - - - start_position - - USING - - - char_length_units - - ) - - - - - -
             ::= 'OCCURRENCES_REGEX' '(' XQuery_pattern ( 'FLAG*' XQuery_option_flag )? 'IN' regex_subject_string ( 'FROM' start_position )? ( 'USING' char_length_units )? ')'
    -
    - referenced by: - - numeric_value_function - - XQuery_pattern: - - - - - - - - character_value_expression - - - - -
             ::= character_value_expression
    -
    - referenced by: - - regex_like_predicate_part_2 - regex_occurrences_function - regex_position_expression - regex_substring_function - regex_transliteration - - XQuery_option_flag: - - - - - - - - character_value_expression - - - - -
             ::= character_value_expression
    -
    - referenced by: - - regex_like_predicate_part_2 - regex_occurrences_function - regex_position_expression - regex_substring_function - regex_transliteration - - regex_subject_string: - - - - - - - - character_value_expression - - - - -
             ::= character_value_expression
    -
    - referenced by: - - regex_occurrences_function - regex_position_expression - regex_substring_function - regex_transliteration - - regex_position_expression: - - - - - - - - POSITION_REGEX - - - ( - - - regex_position_start_or_after - - - XQuery_pattern - - FLAG* - - - XQuery_option_flag - - IN - - - regex_subject_string - - FROM - - - start_position - - USING - - - char_length_units - - - OCCURRENCE - - - regex_occurrence - - GROUP - - - regex_capture_group - - ) - - - - - -
             ::= 'POSITION_REGEX' '(' regex_position_start_or_after? XQuery_pattern ( 'FLAG*' XQuery_option_flag )? 'IN' regex_subject_string ( 'FROM' start_position )? ( 'USING' char_length_units )? ( OCCURRENCE regex_occurrence )? ( 'GROUP' regex_capture_group )? ')'
    -
    - referenced by: - - numeric_value_function - - regex_position_start_or_after: - - - - - - - - START - - - AFTER* - - - - - -
             ::= 'START'
    -
               | 'AFTER*'
    -
    - referenced by: - - regex_position_expression - - regex_occurrence: - - - - - - - - numeric_value_expression - - - - -
             ::= numeric_value_expression
    -
    - referenced by: - - regex_position_expression - regex_substring_function - regex_transliteration_occurrence - - regex_capture_group: - - - - - - - - numeric_value_expression - - - - -
             ::= numeric_value_expression
    -
    - referenced by: - - regex_position_expression - regex_substring_function - - character_position_expression: - - - - - - - - POSITION - - - ( - - - character_value_expression_1 - - IN - - - character_value_expression_2 - - USING - - - char_length_units - - ) - - - - - -
             ::= 'POSITION' '(' character_value_expression_1 'IN' character_value_expression_2 ( 'USING' char_length_units )? ')'
    -
    - referenced by: - - position_expression - - character_value_expression_1: - - - - - - - - character_value_expression - - - - -
             ::= character_value_expression
    -
    - referenced by: - - character_position_expression - - character_value_expression_2: - - - - - - - - character_value_expression - - - - -
             ::= character_value_expression
    -
    - referenced by: - - character_position_expression - - binary_position_expression: - - - - - - - - POSITION - - - ( - - - binary_value_expression - - IN - - - binary_value_expression - - ) - - - - - -
             ::= 'POSITION' '(' binary_value_expression 'IN' binary_value_expression ')'
    -
    - referenced by: - - position_expression - - length_expression: - - - - - - - - char_length_expression - - - octet_length_expression - - - - -
             ::= char_length_expression
    -
               | octet_length_expression
    -
    - referenced by: - - numeric_value_function - - char_length_expression: - - - - - - - - CHAR_LENGTH - - - CHARACTER_LENGTH - - - ( - - - character_value_expression - - USING - - - char_length_units - - ) - - - - - -
             ::= ( 'CHAR_LENGTH' | 'CHARACTER_LENGTH' ) '(' character_value_expression ( 'USING' char_length_units )? ')'
    -
    - referenced by: - - length_expression - - octet_length_expression: - - - - - - - - OCTET_LENGTH - - - ( - - - string_value_expression - - ) - - - - - -
             ::= 'OCTET_LENGTH' '(' string_value_expression ')'
    -
    - referenced by: - - length_expression - - extract_expression: - - - - - - - - EXTRACT - - - ( - - - extract_field - - FROM - - - extract_source - - ) - - - - - -
             ::= 'EXTRACT' '(' extract_field 'FROM' extract_source ')'
    -
    - referenced by: - - numeric_value_function - - extract_field: - - - - - - - - primary_datetime_field - - - time_zone_field - - - - -
             ::= primary_datetime_field
    -
               | time_zone_field
    -
    - referenced by: - - extract_expression - - time_zone_field: - - - - - - - - TIMEZONE_HOUR - - - TIMEZONE_MINUTE - - - - - -
             ::= 'TIMEZONE_HOUR'
    -
               | 'TIMEZONE_MINUTE'
    -
    - referenced by: - - extract_field - - extract_source: - - - - - - - - datetime_value_expression - - - interval_value_expression - - - - -
             ::= datetime_value_expression
    -
               | interval_value_expression
    -
    - referenced by: - - extract_expression - - cardinality_expression: - - - - - - - - CARDINALITY - - - ( - - - collection_value_expression - - ) - - - - - -
             ::= 'CARDINALITY' '(' collection_value_expression ')'
    -
    - referenced by: - - numeric_value_function - - max_cardinality_expression: - - - - - - - - ARRAY_MAX_CARDINALITY - - - ( - - - array_value_expression - - ) - - - - - -
             ::= 'ARRAY_MAX_CARDINALITY' '(' array_value_expression ')'
    -
    - referenced by: - - numeric_value_function - - absolute_value_expression: - - - - - - - - ABS - - - ( - - - numeric_value_expression - - ) - - - - - -
             ::= 'ABS' '(' numeric_value_expression ')'
    -
    - referenced by: - - numeric_value_function - - modulus_expression: - - - - - - - - MOD - - - ( - - - numeric_value_expression_dividend - - , - - - numeric_value_expression_divisor - - ) - - - - - - - - referenced by: - - numeric_value_function - - numeric_value_expression_dividend: - - - - - - - - numeric_value_expression - - - - -
             ::= numeric_value_expression
    -
    - referenced by: - - modulus_expression - - numeric_value_expression_divisor: - - - - - - - - numeric_value_expression - - - - -
             ::= numeric_value_expression
    -
    - referenced by: - - modulus_expression - - trigonometric_function: - - - - - - - - trigonometric_function_name - - ( - - - numeric_value_expression - - ) - - - - - - - - referenced by: - - numeric_value_function - - trigonometric_function_name: - - - - - - - - SIN - - - COS - - - TAN - - - SINH - - - COSH - - - TANH - - - ASIN - - - ACOS - - - ATAN - - - - - -
             ::= 'SIN'
    -
               | 'COS'
    -
               | 'TAN'
    -
               | 'SINH'
    -
               | 'COSH'
    -
               | 'TANH'
    -
               | 'ASIN'
    -
               | 'ACOS'
    -
               | 'ATAN'
    -
    - referenced by: - - trigonometric_function - - general_logarithm_function: - - - - - - - - LOG - - - ( - - - general_logarithm_base - - , - - - general_logarithm_argument - - ) - - - - - -
             ::= 'LOG' '(' general_logarithm_base ',' general_logarithm_argument ')'
    -
    - referenced by: - - numeric_value_function - - general_logarithm_base: - - - - - - - - numeric_value_expression - - - - -
             ::= numeric_value_expression
    -
    - referenced by: - - general_logarithm_function - - general_logarithm_argument: - - - - - - - - numeric_value_expression - - - - -
             ::= numeric_value_expression
    -
    - referenced by: - - general_logarithm_function - - common_logarithm: - - - - - - - - LOG10 - - - ( - - - numeric_value_expression - - ) - - - - - -
             ::= 'LOG10' '(' numeric_value_expression ')'
    -
    - referenced by: - - numeric_value_function - - natural_logarithm: - - - - - - - - LN - - - ( - - - numeric_value_expression - - ) - - - - - -
             ::= 'LN' '(' numeric_value_expression ')'
    -
    - referenced by: - - numeric_value_function - - exponential_function: - - - - - - - - EXP - - - ( - - - numeric_value_expression - - ) - - - - - -
             ::= 'EXP' '(' numeric_value_expression ')'
    -
    - referenced by: - - numeric_value_function - - power_function: - - - - - - - - POWER - - - ( - - - numeric_value_expression_base - - , - - - numeric_value_expression_exponent - - ) - - - - - -
             ::= 'POWER' '(' numeric_value_expression_base ',' numeric_value_expression_exponent ')'
    -
    - referenced by: - - numeric_value_function - - numeric_value_expression_base: - - - - - - - - numeric_value_expression - - - - -
             ::= numeric_value_expression
    -
    - referenced by: - - power_function - - numeric_value_expression_exponent: - - - - - - - - numeric_value_expression - - - - -
             ::= numeric_value_expression
    -
    - referenced by: - - power_function - - square_root: - - - - - - - - SQRT - - - ( - - - numeric_value_expression - - ) - - - - - -
             ::= 'SQRT' '(' numeric_value_expression ')'
    -
    - referenced by: - - numeric_value_function - - floor_function: - - - - - - - - FLOOR - - - ( - - - numeric_value_expression - - ) - - - - - -
             ::= 'FLOOR' '(' numeric_value_expression ')'
    -
    - referenced by: - - numeric_value_function - - ceiling_function: - - - - - - - - CEIL - - - CEILING - - - ( - - - numeric_value_expression - - ) - - - - - -
             ::= ( 'CEIL' | 'CEILING' ) '(' numeric_value_expression ')'
    -
    - referenced by: - - numeric_value_function - - width_bucket_function: - - - - - - - - WIDTH_BUCKET - - - ( - - - width_bucket_operand - - , - - - width_bucket_bound_1 - - , - - - width_bucket_bound_2 - - , - - - width_bucket_count - - ) - - - - - -
             ::= 'WIDTH_BUCKET' '(' width_bucket_operand ',' width_bucket_bound_1 ',' width_bucket_bound_2 ',' width_bucket_count ')'
    -
    - referenced by: - - numeric_value_function - - width_bucket_operand: - - - - - - - - numeric_value_expression - - - - -
             ::= numeric_value_expression
    -
    - referenced by: - - width_bucket_function - - width_bucket_bound_1: - - - - - - - - numeric_value_expression - - - - -
             ::= numeric_value_expression
    -
    - referenced by: - - width_bucket_function - - width_bucket_bound_2: - - - - - - - - numeric_value_expression - - - - -
             ::= numeric_value_expression
    -
    - referenced by: - - width_bucket_function - - width_bucket_count: - - - - - - - - numeric_value_expression - - - - -
             ::= numeric_value_expression
    -
    - referenced by: - - width_bucket_function - - match_number_function: - - - - - - - - MATCH_NUMBER - - - ( - - - ) - - - - - -
             ::= 'MATCH_NUMBER' '(' ')'
    -
    - referenced by: - - numeric_value_function - - string_value_expression: - - - - - - - - character_value_expression - - - binary_value_expression - - - - -
             ::= character_value_expression
    -
               | binary_value_expression
    -
    - referenced by: - - JSON_predicate - common_value_expression - current_collation_specification - octet_length_expression - - character_value_expression: - - - - - - - - concatenation - - - character_factor - - - - -
             ::= concatenation
    -
               | character_factor
    -
    - referenced by: - - JSON_name - XQuery_option_flag - XQuery_pattern - XQuery_replacement_string - char_length_expression - character_overlay_function - character_pattern - character_substring_function - character_transliteration - character_value_expression_1 - character_value_expression_2 - concatenation - escape_character - fold - listagg_set_function - normalize_function - regex_subject_string - regular_expression_substring_function - similar_pattern - string_value_expression - transcoding - trim_character - trim_source - - concatenation: - - - - - - - - character_value_expression - - || - - - character_factor - - - - -
             ::= character_value_expression '||' character_factor
    -
    - referenced by: - - character_value_expression - - character_factor: - - - - - - - - character_primary - - - collate_clause - - - - -
             ::= character_primary collate_clause?
    -
    - referenced by: - - character_value_expression - concatenation - - character_primary: - - - - - - - - value_expression_primary - - - string_value_function - - - - -
             ::= value_expression_primary
    -
               | string_value_function
    -
    - referenced by: - - character_factor - - binary_value_expression: - - - - - - - - binary_concatenation - - - binary_factor - - - - -
             ::= binary_concatenation
    -
               | binary_factor
    -
    - referenced by: - - binary_concatenation - binary_overlay_function - binary_position_expression - binary_substring_function - binary_trim_source - escape_octet - octet_pattern - string_value_expression - trim_octet - - binary_factor: - - - - - - - - binary_primary - - - - -
             ::= binary_primary
    -
    - referenced by: - - binary_concatenation - binary_value_expression - - binary_primary: - - - - - - - - value_expression_primary - - - string_value_function - - - - -
             ::= value_expression_primary
    -
               | string_value_function
    -
    - referenced by: - - binary_factor - - binary_concatenation: - - - - - - - - binary_value_expression - - || - - - binary_factor - - - - -
             ::= binary_value_expression '||' binary_factor
    -
    - referenced by: - - binary_value_expression - - string_value_function: - - - - - - - - character_value_function - - - binary_value_function - - - JSON_value_constructor - - - JSON_query - - - - -
             ::= character_value_function
    -
               | binary_value_function
    -
               | JSON_value_constructor
    -
               | JSON_query
    -
    - referenced by: - - binary_primary - character_primary - - character_value_function: - - - - - - - - character_substring_function - - - regular_expression_substring_function - - - regex_substring_function - - - fold - - - transcoding - - - character_transliteration - - - regex_transliteration - - - trim_function - - - character_overlay_function - - - normalize_function - - - specific_type_method - - - classifier_function - - - - -
             ::= character_substring_function
    - -
               | regex_substring_function
    -
               | fold
    -
               | transcoding
    -
               | character_transliteration
    -
               | regex_transliteration
    -
               | trim_function
    -
               | character_overlay_function
    -
               | normalize_function
    -
               | specific_type_method
    -
               | classifier_function
    -
    - referenced by: - - string_value_function - - character_substring_function: - - - - - - - - SUBSTRING - - - ( - - - character_value_expression - - FROM - - - start_position - - FOR - - - string_length - - USING - - - char_length_units - - ) - - - - - -
             ::= 'SUBSTRING' '(' character_value_expression 'FROM' start_position ( 'FOR' string_length )? ( 'USING' char_length_units )? ')'
    -
    - referenced by: - - character_value_function - - regular_expression_substring_function: - - - - - - - - SUBSTRING - - - ( - - - character_value_expression - - SIMILAR - - - character_value_expression - - ESCAPE - - - escape_character - - ) - - - - - -
             ::= 'SUBSTRING' '(' character_value_expression 'SIMILAR' character_value_expression 'ESCAPE' escape_character ')'
    -
    - referenced by: - - character_value_function - - regex_substring_function: - - - - - - - - SUBSTRING_REGEX - - - ( - - - XQuery_pattern - - FLAG* - - - XQuery_option_flag - - IN - - - regex_subject_string - - FROM - - - start_position - - USING - - - char_length_units - - - OCCURRENCE - - - regex_occurrence - - GROUP - - - regex_capture_group - - ) - - - - - -
             ::= 'SUBSTRING_REGEX' '(' XQuery_pattern ( 'FLAG*' XQuery_option_flag )? 'IN' regex_subject_string ( 'FROM' start_position )? ( 'USING' char_length_units )? ( OCCURRENCE regex_occurrence )? ( 'GROUP' regex_capture_group )? ')'
    -
    - referenced by: - - character_value_function - - fold: - - - - - - - - UPPER - - - LOWER - - - ( - - - character_value_expression - - ) - - - - -
    fold     ::= ( 'UPPER' | 'LOWER' ) '(' character_value_expression ')'
    -
    - referenced by: - - character_value_function - - transcoding: - - - - - - - - CONVERT - - - ( - - - character_value_expression - - USING - - - transcoding_name - - ) - - - - - -
             ::= 'CONVERT' '(' character_value_expression 'USING' transcoding_name ')'
    -
    - referenced by: - - character_value_function - - character_transliteration: - - - - - - - - TRANSLATE - - - ( - - - character_value_expression - - USING - - - transliteration_name - - ) - - - - - -
             ::= 'TRANSLATE' '(' character_value_expression 'USING' transliteration_name ')'
    -
    - referenced by: - - character_value_function - - regex_transliteration: - - - - - - - - TRANSLATE_REGEX - - - ( - - - XQuery_pattern - - FLAG* - - - XQuery_option_flag - - IN - - - regex_subject_string - - WITH - - - XQuery_replacement_string - - FROM - - - start_position - - USING - - - char_length_units - - - OCCURRENCE - - - regex_transliteration_occurrence - - ) - - - - - -
             ::= 'TRANSLATE_REGEX' '(' XQuery_pattern ( 'FLAG*' XQuery_option_flag )? 'IN' regex_subject_string ( 'WITH' XQuery_replacement_string )? ( 'FROM' start_position )? ( 'USING' char_length_units )? ( OCCURRENCE regex_transliteration_occurrence )? ')'
    -
    - referenced by: - - character_value_function - - XQuery_replacement_string: - - - - - - - - character_value_expression - - - - -
             ::= character_value_expression
    -
    - referenced by: - - regex_transliteration - - regex_transliteration_occurrence: - - - - - - - - regex_occurrence - - ALL - - - - - -
             ::= regex_occurrence
    -
               | 'ALL'
    -
    - referenced by: - - regex_transliteration - - trim_function: - - - - - - - - TRIM - - - ( - - - trim_operands - - ) - - - - - -
             ::= 'TRIM' '(' trim_operands ')'
    -
    - referenced by: - - character_value_function - - trim_operands: - - - - - - - - trim_specification - - - trim_character - - FROM - - - trim_source - - - - -
             ::= ( trim_specification? trim_character? 'FROM' )? trim_source
    -
    - referenced by: - - trim_function - - trim_source: - - - - - - - - character_value_expression - - - - -
             ::= character_value_expression
    -
    - referenced by: - - trim_operands - - trim_specification: - - - - - - - - LEADING - - - TRAILING - - - BOTH - - - - - -
             ::= 'LEADING'
    -
               | 'TRAILING'
    -
               | 'BOTH'
    -
    - referenced by: - - binary_trim_operands - trim_operands - - trim_character: - - - - - - - - character_value_expression - - - - -
             ::= character_value_expression
    -
    - referenced by: - - trim_operands - - character_overlay_function: - - - - - - - - OVERLAY - - - ( - - - character_value_expression - - PLACING* - - - character_value_expression - - FROM - - - start_position - - FOR - - - string_length - - USING - - - char_length_units - - ) - - - - - -
             ::= 'OVERLAY' '(' character_value_expression 'PLACING*' character_value_expression 'FROM' start_position ( 'FOR' string_length )? ( 'USING' char_length_units )? ')'
    -
    - referenced by: - - character_value_function - - normalize_function: - - - - - - - - NORMALIZE - - - ( - - - character_value_expression - - , - - - normal_form - - , - - - normalize_function_result_length - - ) - - - - - -
             ::= 'NORMALIZE' '(' character_value_expression ( ',' normal_form ( ',' normalize_function_result_length )? )? ')'
    -
    - referenced by: - - character_value_function - - normal_form: - - - - - - - - NFC* - - - NFD* - - - NFKC* - - - NFKD* - - - - - -
             ::= 'NFC*'
    -
               | 'NFD*'
    -
               | 'NFKC*'
    -
               | 'NFKD*'
    -
    - referenced by: - - normalize_function - normalized_predicate_part_2 - - normalize_function_result_length: - - - - - - - - character_length - - - character_large_object_length - - - - -
             ::= character_length
    -
               | character_large_object_length
    -
    - referenced by: - - normalize_function - - specific_type_method: - - - - - - - - user_defined_type_value_expression - - . - - - SPECIFICTYPE - - - ( - - - ) - - - - - -
             ::= user_defined_type_value_expression '.' 'SPECIFICTYPE' ( '(' ')' )?
    -
    - referenced by: - - character_value_function - - binary_value_function: - - - - - - - - binary_substring_function - - - binary_trim_function - - - binary_overlay_function - - - - -
             ::= binary_substring_function
    -
               | binary_trim_function
    -
               | binary_overlay_function
    -
    - referenced by: - - string_value_function - - binary_substring_function: - - - - - - - - SUBSTRING - - - ( - - - binary_value_expression - - FROM - - - start_position - - FOR - - - string_length - - ) - - - - - -
             ::= 'SUBSTRING' '(' binary_value_expression 'FROM' start_position ( 'FOR' string_length )? ')'
    -
    - referenced by: - - binary_value_function - - binary_trim_function: - - - - - - - - TRIM - - - ( - - - binary_trim_operands - - ) - - - - - -
             ::= 'TRIM' '(' binary_trim_operands ')'
    -
    - referenced by: - - binary_value_function - - binary_trim_operands: - - - - - - - - trim_specification - - - trim_octet - - FROM - - - binary_trim_source - - - - -
             ::= ( trim_specification? trim_octet? 'FROM' )? binary_trim_source
    -
    - referenced by: - - binary_trim_function - - binary_trim_source: - - - - - - - - binary_value_expression - - - - -
             ::= binary_value_expression
    -
    - referenced by: - - binary_trim_operands - - trim_octet: - - - - - - - - binary_value_expression - - - - -
             ::= binary_value_expression
    -
    - referenced by: - - binary_trim_operands - - binary_overlay_function: - - - - - - - - OVERLAY - - - ( - - - binary_value_expression - - PLACING* - - - binary_value_expression - - FROM - - - start_position - - FOR - - - string_length - - ) - - - - - -
             ::= 'OVERLAY' '(' binary_value_expression 'PLACING*' binary_value_expression 'FROM' start_position ( 'FOR' string_length )? ')'
    -
    - referenced by: - - binary_value_function - - start_position: - - - - - - - - numeric_value_expression - - - - -
             ::= numeric_value_expression
    -
    - referenced by: - - binary_overlay_function - binary_substring_function - character_overlay_function - character_substring_function - regex_occurrences_function - regex_position_expression - regex_substring_function - regex_transliteration - - string_length: - - - - - - - - numeric_value_expression - - - - -
             ::= numeric_value_expression
    -
    - referenced by: - - binary_overlay_function - binary_substring_function - character_overlay_function - character_substring_function - - classifier_function: - - - - - - - - CLASSIFIER - - - ( - - - row_pattern_variable_name - - ) - - - - - -
             ::= 'CLASSIFIER' '(' row_pattern_variable_name? ')'
    -
    - referenced by: - - character_value_function - - JSON_value_constructor: - - - - - - - - JSON_object_constructor - - - JSON_array_constructor - - - - -
             ::= JSON_object_constructor
    -
               | JSON_array_constructor
    -
    - referenced by: - - string_value_function - - JSON_object_constructor: - - - - - - - - JSON_OBJECT - - - ( - - - JSON_name_and_value - - , - - - JSON_constructor_null_clause - - - JSON_key_uniqueness_constraint - - - JSON_output_clause - - ) - - - - - - - - referenced by: - - JSON_value_constructor - - JSON_name_and_value: - - - - - - - - KEY* - - - JSON_name - - VALUE - - - JSON_name - - : - - - JSON_value_expression - - - - -
             ::= ( 'KEY*'? JSON_name 'VALUE' | JSON_name ':' ) JSON_value_expression
    -
    - referenced by: - - JSON_object_aggregate_constructor - JSON_object_constructor - - JSON_name: - - - - - - - - character_value_expression - - - - -
             ::= character_value_expression
    -
    - referenced by: - - JSON_name_and_value - - JSON_constructor_null_clause: - - - - - - - - NULL - - - ABSENT - - ON - - - NULL - - - - - -
             ::= ( 'NULL' | ABSENT ) 'ON' 'NULL'
    -
    - referenced by: - - JSON_array_aggregate_constructor - JSON_array_constructor_by_enumeration - JSON_array_constructor_by_query - JSON_object_aggregate_constructor - JSON_object_constructor - - JSON_array_constructor: - - - - - - - - JSON_array_constructor_by_enumeration - - - JSON_array_constructor_by_query - - - - - -
               | JSON_array_constructor_by_query
    -
    - referenced by: - - JSON_value_constructor - - JSON_array_constructor_by_enumeration: - - - - - - - - JSON_ARRAY - - - ( - - - JSON_value_expression - - , - - - JSON_constructor_null_clause - - - JSON_output_clause - - ) - - - - - -
             ::= 'JSON_ARRAY' '(' ( JSON_value_expression ( ',' JSON_value_expression )* JSON_constructor_null_clause? )? JSON_output_clause? ')'
    -
    - referenced by: - - JSON_array_constructor - - JSON_array_constructor_by_query: - - - - - - - - JSON_ARRAY - - - ( - - - query_expression - - - JSON_input_clause - - - JSON_constructor_null_clause - - - JSON_output_clause - - ) - - - - - - - - referenced by: - - JSON_array_constructor - - JSON_query: - - - - - - - - JSON_QUERY - - - ( - - - JSON_API_common_syntax - - - JSON_output_clause - - - JSON_query_wrapper_behavior - - WRAPPER* - - - JSON_query_quotes_behavior - - QUOTES* - - - ON - - - SCALAR* - - - STRING* - - - JSON_query_empty_behavior - - ON - - - EMPTY - - - JSON_query_error_behavior - - ON - - - ERROR* - - - ) - - - - - -
             ::= 'JSON_QUERY' '(' JSON_API_common_syntax JSON_output_clause? ( JSON_query_wrapper_behavior 'WRAPPER*' )? ( JSON_query_quotes_behavior 'QUOTES*' ( 'ON' 'SCALAR*' 'STRING*' )? )? ( JSON_query_empty_behavior 'ON' 'EMPTY' )? ( JSON_query_error_behavior 'ON' 'ERROR*' )? ')'
    -
    - referenced by: - - string_value_function - - JSON_query_wrapper_behavior: - - - - - - - - WITHOUT - - - WITH - - - CONDITIONAL* - - - UNCONDITIONAL* - - - ARRAY - - - - - -
             ::= ( 'WITHOUT' | 'WITH' ( 'CONDITIONAL*' | 'UNCONDITIONAL*' )? ) 'ARRAY'?
    -
    - referenced by: - - JSON_query - - JSON_query_quotes_behavior: - - - - - - - - KEEP* - - - OMIT - - - - - -
             ::= 'KEEP*'
    -
               | 'OMIT'
    -
    - referenced by: - - JSON_query - - JSON_query_empty_behavior: - - - - - - - - ERROR* - - - NULL - - - EMPTY - - - ARRAY - - - OBJECT* - - - - - -
             ::= 'ERROR*'
    -
               | 'NULL'
    -
               | 'EMPTY' ( 'ARRAY' | 'OBJECT*' )
    -
    - referenced by: - - JSON_query - - JSON_query_error_behavior: - - - - - - - - ERROR* - - - NULL - - - EMPTY - - - ARRAY - - - OBJECT* - - - - - -
             ::= 'ERROR*'
    -
               | 'NULL'
    -
               | 'EMPTY' ( 'ARRAY' | 'OBJECT*' )
    -
    - referenced by: - - JSON_query - - datetime_value_expression: - - - - - - - - interval_value_expression - - + - - - datetime_term - - + - - - - - - - interval_term - - - - -
             ::= ( interval_value_expression '+' )? datetime_term ( ( '+' | '-' ) interval_term )*
    -
    - referenced by: - - common_value_expression - extract_source - interval_value_expression - period_end_value - period_or_point_in_time_predicand - period_start_value - point_in_time - - datetime_term: - - - - - - - - datetime_factor - - - - -
             ::= datetime_factor
    -
    - referenced by: - - datetime_value_expression - interval_value_expression - - datetime_factor: - - - - - - - - datetime_primary - - - time_zone - - - - -
             ::= datetime_primary time_zone?
    -
    - referenced by: - - datetime_term - - datetime_primary: - - - - - - - - value_expression_primary - - - datetime_value_function - - - - -
             ::= value_expression_primary
    -
               | datetime_value_function
    -
    - referenced by: - - datetime_factor - - time_zone: - - - - - - - - AT - - - time_zone_specifier - - - - -
             ::= 'AT' time_zone_specifier
    -
    - referenced by: - - datetime_factor - - time_zone_specifier: - - - - - - - - LOCAL - - - TIME - - - ZONE* - - - interval_primary - - - - -
             ::= 'LOCAL'
    -
               | 'TIME' 'ZONE*' interval_primary
    -
    - referenced by: - - time_zone - - datetime_value_function: - - - - - - - - CURRENT_DATE - - - current_time_value_function - - - current_timestamp_value_function - - - current_local_time_value_function - - - current_local_timestamp_value_function - - - - -
             ::= 'CURRENT_DATE'
    -
               | current_time_value_function
    -
               | current_timestamp_value_function
    -
               | current_local_time_value_function
    -
    -
    - referenced by: - - datetime_primary - default_option - - current_time_value_function: - - - - - - - - CURRENT_TIME - - - ( - - - time_precision - - ) - - - - - -
             ::= 'CURRENT_TIME' ( '(' time_precision ')' )?
    -
    - referenced by: - - datetime_value_function - - current_local_time_value_function: - - - - - - - - LOCALTIME - - - ( - - - time_precision - - ) - - - - - -
             ::= 'LOCALTIME' ( '(' time_precision ')' )?
    -
    - referenced by: - - datetime_value_function - - current_timestamp_value_function: - - - - - - - - CURRENT_TIMESTAMP - - - ( - - - timestamp_precision - - ) - - - - - -
             ::= 'CURRENT_TIMESTAMP' ( '(' timestamp_precision ')' )?
    -
    - referenced by: - - datetime_value_function - - current_local_timestamp_value_function: - - - - - - - - LOCALTIMESTAMP - - - ( - - - timestamp_precision - - ) - - - - - -
             ::= 'LOCALTIMESTAMP' ( '(' timestamp_precision ')' )?
    -
    - referenced by: - - datetime_value_function - - interval_value_expression: - - - - - - - - interval_term - - - interval_value_expression_1 - - + - - - - - - - interval_term_1 - - ( - - - datetime_value_expression - - - - - - datetime_term - - ) - - - interval_qualifier - - - - -
             ::= interval_term
    -
               | interval_value_expression_1 ( '+' | '-' ) interval_term_1
    -
               | '(' datetime_value_expression '-' datetime_term ')' interval_qualifier
    -
    - referenced by: - - common_value_expression - datetime_value_expression - extract_source - interval_absolute_value_function - interval_value_expression_1 - set_time_zone_value - - interval_term: - - - - - - - - term - - * - - - interval_factor - - - interval_term_2 - - * - - - / - - - factor - - - - -
             ::= ( term '*' )? interval_factor
    -
               | interval_term_2 ( '*' | '/' ) factor
    -
    - referenced by: - - datetime_value_expression - interval_term_1 - interval_term_2 - interval_value_expression - - interval_factor: - - - - - - - - sign - - - interval_primary - - - - -
             ::= sign? interval_primary
    -
    - referenced by: - - interval_term - - interval_primary: - - - - - - - - value_expression_primary - - - interval_qualifier - - - interval_value_function - - - - - -
               | interval_value_function
    -
    - referenced by: - - interval_factor - time_zone_specifier - - interval_value_expression_1: - - - - - - - - interval_value_expression - - - - -
             ::= interval_value_expression
    -
    - referenced by: - - interval_value_expression - - interval_term_1: - - - - - - - - interval_term - - - - -
             ::= interval_term
    -
    - referenced by: - - interval_value_expression - - interval_term_2: - - - - - - - - interval_term - - - - -
             ::= interval_term
    -
    - referenced by: - - interval_term - - interval_value_function: - - - - - - - - interval_absolute_value_function - - - - -
             ::= interval_absolute_value_function
    -
    - referenced by: - - interval_primary - - interval_absolute_value_function: - - - - - - - - ABS - - - ( - - - interval_value_expression - - ) - - - - - -
             ::= 'ABS' '(' interval_value_expression ')'
    -
    - referenced by: - - interval_value_function - - boolean_value_expression: - - - - - - - - boolean_term - - OR - - - - - -
             ::= boolean_term ( 'OR' boolean_term )*
    -
    - referenced by: - - contextually_typed_row_value_constructor - parenthesized_boolean_value_expression - row_value_constructor - search_condition - value_expression - - boolean_term: - - - - - - - - boolean_factor - - AND - - - - - -
             ::= boolean_factor ( 'AND' boolean_factor )*
    -
    - referenced by: - - boolean_value_expression - - boolean_factor: - - - - - - - - NOT - - - boolean_test - - - - -
             ::= 'NOT'? boolean_test
    -
    - referenced by: - - boolean_term - - boolean_test: - - - - - - - - boolean_primary - - IS - - - NOT - - - truth_value - - - - -
             ::= boolean_primary ( 'IS' 'NOT'? truth_value )?
    -
    - referenced by: - - boolean_factor - - truth_value: - - - - - - - - TRUE - - - FALSE - - - UNKNOWN - - - - - -
             ::= 'TRUE'
    -
               | 'FALSE'
    -
               | 'UNKNOWN'
    -
    - referenced by: - - boolean_test - - boolean_primary: - - - - - - - - predicate - - - boolean_predicand - - - - -
             ::= predicate
    -
               | boolean_predicand
    -
    - referenced by: - - boolean_test - - boolean_predicand: - - - - - - - - parenthesized_boolean_value_expression - - - nonparenthesized_value_expression_primary - - - - - - - - referenced by: - - boolean_primary - row_value_constructor_predicand - - parenthesized_boolean_value_expression: - - - - - - - - ( - - - boolean_value_expression - - ) - - - - - -
             ::= '(' boolean_value_expression ')'
    -
    - referenced by: - - boolean_predicand - - array_value_expression: - - - - - - - - array_concatenation - - - array_primary - - - - -
             ::= array_concatenation
    -
               | array_primary
    -
    - referenced by: - - array_element_reference - array_value_expression_1 - collection_value_expression - max_cardinality_expression - trim_array_function - - array_concatenation: - - - - - - - - array_value_expression_1 - - || - - - array_primary - - - - -
             ::= array_value_expression_1 '||' array_primary
    -
    - referenced by: - - array_value_expression - - array_value_expression_1: - - - - - - - - array_value_expression - - - - -
             ::= array_value_expression
    -
    - referenced by: - - array_concatenation - - array_primary: - - - - - - - - array_value_function - - - value_expression_primary - - - - -
             ::= array_value_function
    -
               | value_expression_primary
    -
    - referenced by: - - array_concatenation - array_value_expression - - array_value_function: - - - - - - - - trim_array_function - - - - -
             ::= trim_array_function
    -
    - referenced by: - - array_primary - - trim_array_function: - - - - - - - - TRIM_ARRAY - - - ( - - - array_value_expression - - , - - - numeric_value_expression - - ) - - - - - -
             ::= 'TRIM_ARRAY' '(' array_value_expression ',' numeric_value_expression ')'
    -
    - referenced by: - - array_value_function - - array_value_constructor: - - - - - - - - array_value_constructor_by_enumeration - - - array_value_constructor_by_query - - - - - -
               | array_value_constructor_by_query
    -
    - referenced by: - - collection_value_constructor - - array_value_constructor_by_enumeration: - - - - - - - - ARRAY - - - left_bracket_or_trigraph - - - array_element_list - - - right_bracket_or_trigraph - - - - - - - referenced by: - - array_value_constructor - - array_element_list: - - - - - - - - array_element - - , - - - - - -
             ::= array_element ( ',' array_element )*
    -
    - referenced by: - - array_value_constructor_by_enumeration - - array_element: - - - - - - - - value_expression - - - - -
             ::= value_expression
    -
    - referenced by: - - array_element_list - - array_value_constructor_by_query: - - - - - - - - ARRAY - - - table_subquery - - - - -
             ::= 'ARRAY' table_subquery
    -
    - referenced by: - - array_value_constructor - - multiset_value_expression: - - - - - - - - multiset_term - - ALL - - - DISTINCT - - - UNION - - - EXCEPT - - - MULTISET - - - - - -
             ::= multiset_term ( 'MULTISET' ( 'UNION' | 'EXCEPT' ) ( 'ALL' | 'DISTINCT' )? multiset_term )*
    -
    - referenced by: - - collection_value_expression - member_predicate_part_2 - multiset_element_reference - multiset_set_function - submultiset_predicate_part_2 - - multiset_term: - - - - - - - - multiset_primary - - ALL - - - DISTINCT - - - INTERSECT - - - MULTISET - - - - - -
             ::= multiset_primary ( 'MULTISET' 'INTERSECT' ( 'ALL' | 'DISTINCT' )? multiset_primary )*
    -
    - referenced by: - - multiset_value_expression - - multiset_primary: - - - - - - - - multiset_value_function - - - value_expression_primary - - - - -
             ::= multiset_value_function
    -
               | value_expression_primary
    -
    - referenced by: - - multiset_term - - multiset_value_function: - - - - - - - - multiset_set_function - - - - -
             ::= multiset_set_function
    -
    - referenced by: - - multiset_primary - - multiset_set_function: - - - - - - - - SET - - - ( - - - multiset_value_expression - - ) - - - - - -
             ::= 'SET' '(' multiset_value_expression ')'
    -
    - referenced by: - - multiset_value_function - - multiset_value_constructor: - - - - - - - - multiset_value_constructor_by_enumeration - - - multiset_value_constructor_by_query - - - table_value_constructor_by_query - - - - - -
               | multiset_value_constructor_by_query
    -
               | table_value_constructor_by_query
    -
    - referenced by: - - collection_value_constructor - - multiset_value_constructor_by_enumeration: - - - - - - - - MULTISET - - - left_bracket_or_trigraph - - - multiset_element_list - - - right_bracket_or_trigraph - - - - - - - referenced by: - - multiset_value_constructor - - multiset_element_list: - - - - - - - - multiset_element - - , - - - - - -
             ::= multiset_element ( ',' multiset_element )*
    -
    - referenced by: - - multiset_value_constructor_by_enumeration - - multiset_element: - - - - - - - - value_expression - - - - -
             ::= value_expression
    -
    - referenced by: - - multiset_element_list - - multiset_value_constructor_by_query: - - - - - - - - MULTISET - - - table_subquery - - - - -
             ::= 'MULTISET' table_subquery
    -
    - referenced by: - - multiset_value_constructor - - table_value_constructor_by_query: - - - - - - - - TABLE - - - table_subquery - - - - -
             ::= 'TABLE' table_subquery
    -
    - referenced by: - - multiset_value_constructor - - row_value_constructor: - - - - - - - - common_value_expression - - - boolean_value_expression - - - explicit_row_value_constructor - - - - -
             ::= common_value_expression
    -
               | boolean_value_expression
    -
               | explicit_row_value_constructor
    -
    - referenced by: - - table_row_value_expression - - explicit_row_value_constructor: - - - - - - - - ( - - - row_value_constructor_element - - , - - - ROW - - - ( - - - row_value_constructor_element_list - - ) - - - row_subquery - - - - -
             ::= ( '(' row_value_constructor_element ',' | 'ROW' '(' ) row_value_constructor_element_list ')'
    -
               | row_subquery
    -
    - referenced by: - - row_value_constructor - row_value_constructor_predicand - row_value_expression - - row_value_constructor_element_list: - - - - - - - - row_value_constructor_element - - , - - - - - - - - referenced by: - - explicit_row_value_constructor - - row_value_constructor_element: - - - - - - - - value_expression - - - - -
             ::= value_expression
    -
    - referenced by: - - explicit_row_value_constructor - row_value_constructor_element_list - - contextually_typed_row_value_constructor: - - - - - - - - common_value_expression - - - boolean_value_expression - - - contextually_typed_value_specification - - ( - - - contextually_typed_value_specification - - - contextually_typed_row_value_constructor_element - - , - - - contextually_typed_row_value_constructor_element_list - - ROW - - - ( - - - contextually_typed_row_value_constructor_element_list - - ) - - - - - -
             ::= common_value_expression
    -
               | boolean_value_expression
    - -
    -
    - referenced by: - - contextually_typed_row_value_expression - - contextually_typed_row_value_constructor_element_list: - - - - - - - - contextually_typed_row_value_constructor_element - - , - - - - - - - - referenced by: - - contextually_typed_row_value_constructor - - contextually_typed_row_value_constructor_element: - - - - - - - - value_expression - - - contextually_typed_value_specification - - - - -
             ::= value_expression
    -
    -
    - referenced by: - - contextually_typed_row_value_constructor - contextually_typed_row_value_constructor_element_list - - row_value_constructor_predicand: - - - - - - - - common_value_expression - - - boolean_predicand - - - explicit_row_value_constructor - - - - -
             ::= common_value_expression
    -
               | boolean_predicand
    -
               | explicit_row_value_constructor
    -
    - referenced by: - - row_value_predicand - - row_value_expression: - - - - - - - - row_value_special_case - - - explicit_row_value_constructor - - - - -
             ::= row_value_special_case
    -
               | explicit_row_value_constructor
    -
    - referenced by: - - in_value_list - value_expression - - table_row_value_expression: - - - - - - - - row_value_special_case - - - row_value_constructor - - - - -
             ::= row_value_special_case
    -
               | row_value_constructor
    -
    - referenced by: - - row_value_expression_list - - contextually_typed_row_value_expression: - - - - - - - - row_value_special_case - - - contextually_typed_row_value_constructor - - - - -
             ::= row_value_special_case
    -
    -
    - referenced by: - - assigned_row - contextually_typed_row_value_expression_list - - row_value_predicand: - - - - - - - - row_value_special_case - - - row_value_constructor_predicand - - - - -
             ::= row_value_special_case
    -
               | row_value_constructor_predicand
    -
    - referenced by: - - between_predicate - between_predicate_part_2 - case_operand - character_like_predicate - comparison_predicate - comparison_predicate_part_2 - in_predicate - match_predicate - member_predicate - normalized_predicate - null_predicate - octet_like_predicate - quantified_comparison_predicate - regex_like_predicate - row_value_predicand_1 - row_value_predicand_2 - row_value_predicand_3 - row_value_predicand_4 - set_predicate - similar_predicate - submultiset_predicate - type_predicate - when_operand - - row_value_special_case: - - - - - - - - nonparenthesized_value_expression_primary - - - - - - - referenced by: - - contextually_typed_row_value_expression - row_value_expression - row_value_predicand - table_row_value_expression - - table_value_constructor: - - - - - - - - VALUES - - - row_value_expression_list - - - - -
             ::= 'VALUES' row_value_expression_list
    -
    - referenced by: - - simple_table - - row_value_expression_list: - - - - - - - - table_row_value_expression - - , - - - - - - - - referenced by: - - table_value_constructor - - contextually_typed_table_value_constructor: - - - - - - - - VALUES - - - contextually_typed_row_value_expression_list - - - - -
             ::= 'VALUES' contextually_typed_row_value_expression_list
    -
    - referenced by: - - from_constructor - - contextually_typed_row_value_expression_list: - - - - - - - - contextually_typed_row_value_expression - - , - - - - - - - - referenced by: - - contextually_typed_table_value_constructor - - table_expression: - - - - - - - - from_clause - - - where_clause - - - group_by_clause - - - having_clause - - - window_clause - - - - - - - referenced by: - - query_specification - select_statement__single_row - - from_clause: - - - - - - - - FROM - - - table_reference_list - - - - -
             ::= 'FROM' table_reference_list
    -
    - referenced by: - - table_expression - - table_reference_list: - - - - - - - - table_reference - - , - - - - - -
             ::= table_reference ( ',' table_reference )*
    -
    - referenced by: - - from_clause - - table_reference: - - - - - - - - table_factor - - - joined_table - - - - -
             ::= table_factor
    -
               | joined_table
    -
    - referenced by: - - cross_join - merge_statement - natural_join - qualified_join - table_reference_list - - table_factor: - - - - - - - - table_primary - - - sample_clause - - - - -
             ::= table_primary sample_clause?
    -
    - referenced by: - - cross_join - natural_join - partitioned_join_table - table_reference - - sample_clause: - - - - - - - - TABLESAMPLE - - - sample_method - - ( - - - sample_percentage - - ) - - - repeatable_clause - - - - -
             ::= 'TABLESAMPLE' sample_method '(' sample_percentage ')' repeatable_clause?
    -
    - referenced by: - - table_factor - - sample_method: - - - - - - - - BERNOULLI* - - - SYSTEM - - - - - -
             ::= 'BERNOULLI*'
    -
               | 'SYSTEM'
    -
    - referenced by: - - sample_clause - - repeatable_clause: - - - - - - - - REPEATABLE* - - - ( - - - repeat_argument - - ) - - - - - -
             ::= 'REPEATABLE*' '(' repeat_argument ')'
    -
    - referenced by: - - sample_clause - - sample_percentage: - - - - - - - - numeric_value_expression - - - - -
             ::= numeric_value_expression
    -
    - referenced by: - - sample_clause - - repeat_argument: - - - - - - - - numeric_value_expression - - - - -
             ::= numeric_value_expression
    -
    - referenced by: - - repeatable_clause - - table_primary: - - - - - - - - table_or_query_name - - - query_system_time_period_specification - - - PTF_derived_table - - - only_spec - - - data_change_delta_table - - - correlation_or_recognition - - - derived_table - - - lateral_derived_table - - - collection_derived_table - - - table_function_derived_table - - - JSON_table - - - correlation_or_recognition - - - JSON_table_primitive - - - correlation_name - - - parenthesized_joined_table - - - - - - -
               | JSON_table_primitive correlation_name
    -
               | parenthesized_joined_table
    -
    - referenced by: - - table_factor - - correlation_or_recognition: - - - - - - - - AS - - - correlation_name - - - parenthesized_derived_column_list - - - row_pattern_recognition_clause_and_name - - - - - - - - referenced by: - - table_primary - - query_system_time_period_specification: - - - - - - - - FOR - - - SYSTEM_TIME - - - AS - - - OF - - - point_in_time_1 - - BETWEEN - - - ASYMMETRIC - - - SYMMETRIC - - - point_in_time_1 - - AND - - - FROM - - - point_in_time_1 - - TO - - - point_in_time_2 - - - - -
             ::= 'FOR' 'SYSTEM_TIME' ( 'AS' 'OF' point_in_time_1 | ( 'BETWEEN' ( 'ASYMMETRIC' | 'SYMMETRIC' )? point_in_time_1 'AND' | 'FROM' point_in_time_1 'TO' ) point_in_time_2 )
    -
    - referenced by: - - table_primary - - point_in_time_1: - - - - - - - - point_in_time - - - - -
             ::= point_in_time
    -
    - referenced by: - - delete_statement__searched - query_system_time_period_specification - update_statement__searched - - point_in_time_2: - - - - - - - - point_in_time - - - - -
             ::= point_in_time
    -
    - referenced by: - - delete_statement__searched - query_system_time_period_specification - update_statement__searched - - point_in_time: - - - - - - - - datetime_value_expression - - - - -
             ::= datetime_value_expression
    -
    - referenced by: - - point_in_time_1 - point_in_time_2 - - only_spec: - - - - - - - - ONLY - - - ( - - - table_or_query_name - - ) - - - - - -
             ::= 'ONLY' '(' table_or_query_name ')'
    -
    - referenced by: - - table_primary - - lateral_derived_table: - - - - - - - - LATERAL - - - table_subquery - - - - -
             ::= 'LATERAL' table_subquery
    -
    - referenced by: - - table_primary - - collection_derived_table: - - - - - - - - UNNEST - - - ( - - - collection_value_expression - - , - - - ) - - - WITH - - - ORDINALITY* - - - - - -
             ::= 'UNNEST' '(' collection_value_expression ( ',' collection_value_expression )* ')' ( 'WITH' 'ORDINALITY*' )?
    -
    - referenced by: - - table_primary - - table_function_derived_table: - - - - - - - - TABLE - - - ( - - - collection_value_expression - - ) - - - - - -
             ::= 'TABLE' '(' collection_value_expression ')'
    -
    - referenced by: - - table_primary - - derived_table: - - - - - - - - table_subquery - - - - -
             ::= table_subquery
    -
    - referenced by: - - table_primary - - PTF_derived_table: - - - - - - - - TABLE - - - ( - - - routine_invocation - - ) - - - - - -
             ::= 'TABLE' '(' routine_invocation ')'
    -
    - referenced by: - - table_primary - - table_or_query_name: - - - - - - - - table_name - - - transition_table_name - - - query_name - - - - -
             ::= table_name
    -
               | transition_table_name
    -
               | query_name
    -
    - referenced by: - - explicit_table - only_spec - table_argument_proper - table_primary - - derived_column_list: - - - - - - - - column_name_list - - - - -
             ::= column_name_list
    -
    - referenced by: - - parenthesized_derived_column_list - - column_name_list: - - - - - - - - column_name - - , - - - - - -
             ::= column_name ( ',' column_name )*
    -
    - referenced by: - - all_fields_column_name_list - as_subquery_clause - corresponding_column_list - derived_column_list - insert_column_list - join_column_list - privilege_column_list - recursive_search_order - referenced_column_list - referencing_column_list - trigger_column_list - unique_column_list - updatability_clause - view_column_list - with_column_list - - data_change_delta_table: - - - - - - - - result_option - - TABLE - - - ( - - - data_change_statement - - ) - - - - - -
             ::= result_option 'TABLE' '(' data_change_statement ')'
    -
    - referenced by: - - table_primary - - data_change_statement: - - - - - - - - delete_statement__searched - - - insert_statement - - - merge_statement - - - update_statement__searched - - - - -
             ::= delete_statement__searched
    -
               | insert_statement
    -
               | merge_statement
    -
               | update_statement__searched
    -
    - referenced by: - - data_change_delta_table - - result_option: - - - - - - - - FINAL* - - - NEW - - - OLD - - - - - -
             ::= 'FINAL*'
    -
               | 'NEW'
    -
               | 'OLD'
    -
    - referenced by: - - data_change_delta_table - - parenthesized_joined_table: - - - - - - - - ( - - - parenthesized_joined_table - - - joined_table - - ) - - - - - -
             ::= '(' ( parenthesized_joined_table | joined_table ) ')'
    -
    - referenced by: - - parenthesized_joined_table - table_primary - - row_pattern_recognition_clause_and_name: - - - - - - - - AS - - - row_pattern_input_name - - - row_pattern_input_derived_column_list - - - row_pattern_recognition_clause - - AS - - - row_pattern_output_name - - - row_pattern_output_derived_column_list - - - - - - - referenced by: - - correlation_or_recognition - - row_pattern_input_name: - - - - - - - - correlation_name - - - - -
             ::= correlation_name
    -
    - referenced by: - - row_pattern_recognition_clause_and_name - - row_pattern_output_name: - - - - - - - - correlation_name - - - - -
             ::= correlation_name
    -
    - referenced by: - - row_pattern_recognition_clause_and_name - - row_pattern_input_derived_column_list: - - - - - - - - parenthesized_derived_column_list - - - - -
             ::= parenthesized_derived_column_list
    -
    - referenced by: - - row_pattern_recognition_clause_and_name - - row_pattern_output_derived_column_list: - - - - - - - - parenthesized_derived_column_list - - - - -
             ::= parenthesized_derived_column_list
    -
    - referenced by: - - row_pattern_recognition_clause_and_name - - parenthesized_derived_column_list: - - - - - - - - ( - - - derived_column_list - - ) - - - - - -
             ::= '(' derived_column_list ')'
    -
    - referenced by: - - correlation_or_recognition - row_pattern_input_derived_column_list - row_pattern_output_derived_column_list - table_argument_parenthesized_derived_column_list - - row_pattern_recognition_clause: - - - - - - - - MATCH_RECOGNIZE - - - ( - - - row_pattern_partition_by - - - row_pattern_order_by - - - row_pattern_measures - - - row_pattern_rows_per_match - - - row_pattern_common_syntax - - ) - - - - - - - - referenced by: - - row_pattern_recognition_clause_and_name - - row_pattern_partition_by: - - - - - - - - PARTITION - - - BY - - - row_pattern_partition_list - - - - -
             ::= 'PARTITION' 'BY' row_pattern_partition_list
    -
    - referenced by: - - row_pattern_recognition_clause - - row_pattern_partition_list: - - - - - - - - row_pattern_partition_column - - , - - - - - - - - referenced by: - - row_pattern_partition_by - - row_pattern_partition_column: - - - - - - - - column_reference - - - collate_clause - - - - -
             ::= column_reference collate_clause?
    -
    - referenced by: - - row_pattern_partition_list - - row_pattern_order_by: - - - - - - - - ORDER - - - BY - - - sort_specification_list - - - - -
             ::= 'ORDER' 'BY' sort_specification_list
    -
    - referenced by: - - row_pattern_recognition_clause - - row_pattern_rows_per_match: - - - - - - - - ONE - - - ROW - - - PER - - - MATCH - - - ALL - - - ROWS - - - PER - - - MATCH - - - row_pattern_empty_match_handling - - - - -
             ::= 'ONE' 'ROW' 'PER' 'MATCH'
    -
               | 'ALL' 'ROWS' 'PER' 'MATCH' row_pattern_empty_match_handling?
    -
    - referenced by: - - row_pattern_recognition_clause - - row_pattern_empty_match_handling: - - - - - - - - SHOW - - - OMIT - - - EMPTY - - - MATCHES - - - WITH - - - UNMATCHED - - ROWS - - - - - -
             ::= ( 'SHOW' | 'OMIT' ) 'EMPTY' 'MATCHES'
    -
               | 'WITH' UNMATCHED 'ROWS'
    -
    - referenced by: - - row_pattern_rows_per_match - - row_pattern_measures: - - - - - - - - MEASURES - - - row_pattern_measure_list - - - - -
             ::= MEASURES row_pattern_measure_list
    -
    - referenced by: - - row_pattern_recognition_clause - window_frame_clause - - row_pattern_measure_list: - - - - - - - - row_pattern_measure_definition - - , - - - - - - - - referenced by: - - row_pattern_measures - - row_pattern_measure_definition: - - - - - - - - row_pattern_measure_expression - - AS - - - measure_name - - - - -
             ::= row_pattern_measure_expression 'AS' measure_name
    -
    - referenced by: - - row_pattern_measure_list - - row_pattern_measure_expression: - - - - - - - - value_expression - - - - -
             ::= value_expression
    -
    - referenced by: - - row_pattern_measure_definition - - row_pattern_common_syntax: - - - - - - - - AFTER* - - - MATCH - - - row_pattern_skip_to - - - row_pattern_initial_or_seek - - PATTERN - - - ( - - - row_pattern - - ) - - - row_pattern_subset_clause - - DEFINE - - - row_pattern_definition_list - - - - -
             ::= ( 'AFTER*' 'MATCH' row_pattern_skip_to )? row_pattern_initial_or_seek? 'PATTERN' '(' row_pattern ')' row_pattern_subset_clause? 'DEFINE' row_pattern_definition_list
    -
    - referenced by: - - row_pattern_recognition_clause - window_frame_clause - - row_pattern_skip_to: - - - - - - - - SKIP - - - TO - - - NEXT* - - - ROW - - - FIRST* - - - LAST* - - - row_pattern_skip_to_variable_name - - PAST* - - - LAST* - - - ROW - - - - - -
             ::= 'SKIP' ( 'TO' ( 'NEXT*' 'ROW' | ( 'FIRST*' | 'LAST*' )? row_pattern_skip_to_variable_name ) | 'PAST*' 'LAST*' 'ROW' )
    -
    - referenced by: - - row_pattern_common_syntax - - row_pattern_skip_to_variable_name: - - - - - - - - row_pattern_variable_name - - - - -
             ::= row_pattern_variable_name
    -
    - referenced by: - - row_pattern_skip_to - - row_pattern_initial_or_seek: - - - - - - - - INITIAL - - - SEEK - - - - - -
             ::= 'INITIAL'
    -
               | 'SEEK'
    -
    - referenced by: - - row_pattern_common_syntax - - row_pattern: - - - - - - - - row_pattern_term - - - row_pattern_alternation - - - - -
             ::= row_pattern_term
    -
               | row_pattern_alternation
    -
    - referenced by: - - row_pattern_alternation - row_pattern_common_syntax - row_pattern_permute - row_pattern_primary - - row_pattern_alternation: - - - - - - - - row_pattern - - | - - - row_pattern_term - - - - -
             ::= row_pattern '|' row_pattern_term
    -
    - referenced by: - - row_pattern - - row_pattern_term: - - - - - - - - row_pattern_factor - - - - -
             ::= row_pattern_factor+
    -
    - referenced by: - - row_pattern - row_pattern_alternation - - row_pattern_factor: - - - - - - - - row_pattern_primary - - - row_pattern_quantifier - - - - - - - referenced by: - - row_pattern_term - - row_pattern_quantifier: - - - - - - - - * - - - + - - - ? - - - ? - - - { - - - unsigned_integer - - , - - - unsigned_integer - - } - - - ? - - - unsigned_integer - - } - - - - - -
             ::= ( '*' | '+' | '?' ) '?'?
    -
               | '{' ( unsigned_integer? ',' unsigned_integer? '}' '?'? | unsigned_integer '}' )
    -
    - referenced by: - - row_pattern_factor - - row_pattern_primary: - - - - - - - - row_pattern_primary_variable_name - - $ - - - ^ - - - ( - - - row_pattern - - ) - - - {- - - - row_pattern - - -} - - - row_pattern_permute - - - - -
             ::= row_pattern_primary_variable_name
    -
               | '$'
    -
               | '^'
    -
               | '(' row_pattern? ')'
    -
               | '{-' row_pattern '-}'
    -
               | row_pattern_permute
    -
    - referenced by: - - row_pattern_factor - - row_pattern_primary_variable_name: - - - - - - - - row_pattern_variable_name - - - - -
             ::= row_pattern_variable_name
    -
    - referenced by: - - row_pattern_primary - - row_pattern_permute: - - - - - - - - PERMUTE - - ( - - - row_pattern - - , - - - ) - - - - - -
             ::= PERMUTE '(' row_pattern ( ',' row_pattern )* ')'
    -
    - referenced by: - - row_pattern_primary - - row_pattern_subset_clause: - - - - - - - - SUBSET - - - row_pattern_subset_list - - - - -
             ::= 'SUBSET' row_pattern_subset_list
    -
    - referenced by: - - row_pattern_common_syntax - - row_pattern_subset_list: - - - - - - - - row_pattern_subset_item - - , - - - - - -
             ::= row_pattern_subset_item ( ',' row_pattern_subset_item )*
    -
    - referenced by: - - row_pattern_subset_clause - - row_pattern_subset_item: - - - - - - - - row_pattern_subset_item_variable_name - - = - - - ( - - - row_pattern_subset_rhs - - ) - - - - - - - - referenced by: - - row_pattern_subset_list - - row_pattern_subset_item_variable_name: - - - - - - - - row_pattern_variable_name - - - - -
             ::= row_pattern_variable_name
    -
    - referenced by: - - row_pattern_subset_item - - row_pattern_subset_rhs: - - - - - - - - row_pattern_subset_rhs_variable_name - - , - - - - - - - - referenced by: - - row_pattern_subset_item - - row_pattern_subset_rhs_variable_name: - - - - - - - - row_pattern_variable_name - - - - -
             ::= row_pattern_variable_name
    -
    - referenced by: - - row_pattern_subset_rhs - - row_pattern_definition_list: - - - - - - - - row_pattern_definition - - , - - - - - -
             ::= row_pattern_definition ( ',' row_pattern_definition )*
    -
    - referenced by: - - row_pattern_common_syntax - - row_pattern_definition: - - - - - - - - row_pattern_definition_variable_name - - AS - - - row_pattern_definition_search_condition - - - - - - - referenced by: - - row_pattern_definition_list - - row_pattern_definition_variable_name: - - - - - - - - row_pattern_variable_name - - - - -
             ::= row_pattern_variable_name
    -
    - referenced by: - - row_pattern_definition - - row_pattern_definition_search_condition: - - - - - - - - search_condition - - - - -
             ::= search_condition
    -
    - referenced by: - - row_pattern_definition - - joined_table: - - - - - - - - cross_join - - - qualified_join - - - natural_join - - - - -
             ::= cross_join
    -
               | qualified_join
    -
               | natural_join
    -
    - referenced by: - - parenthesized_joined_table - table_reference - - cross_join: - - - - - - - - table_reference - - CROSS - - - JOIN - - - table_factor - - - - -
             ::= table_reference 'CROSS' 'JOIN' table_factor
    -
    - referenced by: - - joined_table - - qualified_join: - - - - - - - - table_reference - - - partitioned_join_table - - - join_type - - JOIN - - - table_reference - - - partitioned_join_table - - - join_specification - - - - - - - referenced by: - - joined_table - - partitioned_join_table: - - - - - - - - table_factor - - PARTITION - - - BY - - - partitioned_join_column_reference_list - - - - -
             ::= table_factor 'PARTITION' 'BY' partitioned_join_column_reference_list
    -
    - referenced by: - - natural_join - qualified_join - - partitioned_join_column_reference_list: - - - - - - - - ( - - - partitioned_join_column_reference - - , - - - ) - - - - - - - - referenced by: - - partitioned_join_table - - partitioned_join_column_reference: - - - - - - - - column_reference - - - - -
             ::= column_reference
    -
    - referenced by: - - partitioned_join_column_reference_list - - natural_join: - - - - - - - - table_reference - - - partitioned_join_table - - NATURAL - - - join_type - - JOIN - - - table_factor - - - partitioned_join_table - - - - -
             ::= ( table_reference | partitioned_join_table ) 'NATURAL' join_type? 'JOIN' ( table_factor | partitioned_join_table )
    -
    - referenced by: - - joined_table - - join_specification: - - - - - - - - join_condition - - - named_columns_join - - - - -
             ::= join_condition
    -
               | named_columns_join
    -
    - referenced by: - - qualified_join - - join_condition: - - - - - - - - ON - - - search_condition - - - - -
             ::= 'ON' search_condition
    -
    - referenced by: - - join_specification - - named_columns_join: - - - - - - - - USING - - - ( - - - join_column_list - - ) - - - AS - - - join_correlation_name - - - - -
             ::= 'USING' '(' join_column_list ')' ( 'AS' join_correlation_name )?
    -
    - referenced by: - - join_specification - - join_correlation_name: - - - - - - - - correlation_name - - - - -
             ::= correlation_name
    -
    - referenced by: - - named_columns_join - - join_type: - - - - - - - - INNER - - - outer_join_type - - OUTER - - - - - -
             ::= 'INNER'
    -
               | outer_join_type 'OUTER'?
    -
    - referenced by: - - natural_join - qualified_join - - outer_join_type: - - - - - - - - LEFT - - - RIGHT - - - FULL - - - - - -
             ::= 'LEFT'
    -
               | 'RIGHT'
    -
               | 'FULL'
    -
    - referenced by: - - join_type - - join_column_list: - - - - - - - - column_name_list - - - - -
             ::= column_name_list
    -
    - referenced by: - - named_columns_join - - JSON_table: - - - - - - - - JSON_TABLE - - - ( - - - JSON_API_common_syntax - - - JSON_table_columns_clause - - - JSON_table_plan_clause - - - JSON_table_error_behavior - - ON - - - ERROR* - - - ) - - - - - -
             ::= 'JSON_TABLE' '(' JSON_API_common_syntax JSON_table_columns_clause JSON_table_plan_clause? ( JSON_table_error_behavior 'ON' 'ERROR*' )? ')'
    -
    - referenced by: - - table_primary - - JSON_table_columns_clause: - - - - - - - - COLUMNS* - - - ( - - - JSON_table_column_definition - - , - - - ) - - - - - -
             ::= 'COLUMNS*' '(' JSON_table_column_definition ( ',' JSON_table_column_definition )* ')'
    -
    - referenced by: - - JSON_table - JSON_table_nested_columns - - JSON_table_column_definition: - - - - - - - - JSON_table_ordinality_column_definition - - - JSON_table_regular_column_definition - - - JSON_table_formatted_column_definition - - - JSON_table_nested_columns - - - - - -
               | JSON_table_regular_column_definition
    - -
               | JSON_table_nested_columns
    -
    - referenced by: - - JSON_table_columns_clause - - JSON_table_ordinality_column_definition: - - - - - - - - column_name - - FOR - - - ORDINALITY* - - - - - -
             ::= column_name 'FOR' 'ORDINALITY*'
    -
    - referenced by: - - JSON_table_column_definition - JSON_table_primitive_column_definition - - JSON_table_regular_column_definition: - - - - - - - - column_name - - - data_type - - PATH* - - - JSON_table_column_path_specification - - - JSON_table_column_empty_behavior - - ON - - - EMPTY - - - JSON_table_column_error_behavior - - ON - - - ERROR* - - - - - - - - referenced by: - - JSON_table_column_definition - JSON_table_primitive_column_definition - - JSON_table_column_empty_behavior: - - - - - - - - ERROR* - - - NULL - - - DEFAULT - - - value_expression - - - - -
             ::= 'ERROR*'
    -
               | 'NULL'
    -
               | 'DEFAULT' value_expression
    -
    - referenced by: - - JSON_table_regular_column_definition - - JSON_table_column_error_behavior: - - - - - - - - ERROR* - - - NULL - - - DEFAULT - - - value_expression - - - - -
             ::= 'ERROR*'
    -
               | 'NULL'
    -
               | 'DEFAULT' value_expression
    -
    - referenced by: - - JSON_table_regular_column_definition - - JSON_table_column_path_specification: - - - - - - - - JSON_path_specification - - - - -
             ::= JSON_path_specification
    -
    - referenced by: - - JSON_table_formatted_column_definition - JSON_table_regular_column_definition - - JSON_table_formatted_column_definition: - - - - - - - - column_name - - - data_type - - FORMAT* - - - JSON_representation - - PATH* - - - JSON_table_column_path_specification - - - JSON_table_formatted_column_wrapper_behavior - - WRAPPER* - - - JSON_table_formatted_column_quotes_behavior - - QUOTES* - - - ON - - - SCALAR* - - - STRING* - - - JSON_table_formatted_column_empty_behavior - - ON - - - EMPTY - - - JSON_table_formatted_column_error_behavior - - ON - - - ERROR* - - - - - - - - referenced by: - - JSON_table_column_definition - JSON_table_primitive_column_definition - - JSON_table_formatted_column_wrapper_behavior: - - - - - - - - WITHOUT - - - WITH - - - CONDITIONAL* - - - UNCONDITIONAL* - - - ARRAY - - - - - -
             ::= ( 'WITHOUT' | 'WITH' ( 'CONDITIONAL*' | 'UNCONDITIONAL*' )? ) 'ARRAY'?
    -
    - referenced by: - - JSON_table_formatted_column_definition - - JSON_table_formatted_column_quotes_behavior: - - - - - - - - KEEP* - - - OMIT - - - - - -
             ::= 'KEEP*'
    -
               | 'OMIT'
    -
    - referenced by: - - JSON_table_formatted_column_definition - - JSON_table_formatted_column_empty_behavior: - - - - - - - - ERROR* - - - NULL - - - EMPTY - - - ARRAY - - - OBJECT* - - - - - -
             ::= 'ERROR*'
    -
               | 'NULL'
    -
               | 'EMPTY' ( 'ARRAY' | 'OBJECT*' )
    -
    - referenced by: - - JSON_table_formatted_column_definition - - JSON_table_formatted_column_error_behavior: - - - - - - - - ERROR* - - - NULL - - - EMPTY - - - ARRAY - - - OBJECT* - - - - - -
             ::= 'ERROR*'
    -
               | 'NULL'
    -
               | 'EMPTY' ( 'ARRAY' | 'OBJECT*' )
    -
    - referenced by: - - JSON_table_formatted_column_definition - - JSON_table_nested_columns: - - - - - - - - NESTED* - - - PATH* - - - JSON_table_nested_path_specification - - AS - - - JSON_table_nested_path_name - - - JSON_table_columns_clause - - - - - - - referenced by: - - JSON_table_column_definition - - JSON_table_nested_path_specification: - - - - - - - - JSON_path_specification - - - - -
             ::= JSON_path_specification
    -
    - referenced by: - - JSON_table_nested_columns - - JSON_table_nested_path_name: - - - - - - - - JSON_table_path_name - - - - -
             ::= JSON_table_path_name
    -
    - referenced by: - - JSON_table_nested_columns - - JSON_table_path_name: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - JSON_API_common_syntax - JSON_table_nested_path_name - JSON_table_plan - JSON_table_plan_inner - JSON_table_plan_outer - JSON_table_plan_primary - - JSON_table_plan_clause: - - - - - - - - JSON_table_specific_plan - - - JSON_table_default_plan - - - - -
             ::= JSON_table_specific_plan
    -
               | JSON_table_default_plan
    -
    - referenced by: - - JSON_table - - JSON_table_specific_plan: - - - - - - - - PLAN* - - - ( - - - JSON_table_plan - - ) - - - - - -
             ::= 'PLAN*' '(' JSON_table_plan ')'
    -
    - referenced by: - - JSON_table_plan_clause - - JSON_table_plan: - - - - - - - - JSON_table_path_name - - - JSON_table_plan_parent_child - - - JSON_table_plan_sibling - - - - -
             ::= JSON_table_path_name
    -
               | JSON_table_plan_parent_child
    -
               | JSON_table_plan_sibling
    -
    - referenced by: - - JSON_table_plan_primary - JSON_table_specific_plan - - JSON_table_plan_parent_child: - - - - - - - - JSON_table_plan_outer - - - JSON_table_plan_inner - - - - -
             ::= JSON_table_plan_outer
    -
               | JSON_table_plan_inner
    -
    - referenced by: - - JSON_table_plan - - JSON_table_plan_outer: - - - - - - - - JSON_table_path_name - - OUTER - - - JSON_table_plan_primary - - - - -
             ::= JSON_table_path_name 'OUTER' JSON_table_plan_primary
    -
    - referenced by: - - JSON_table_plan_parent_child - - JSON_table_plan_inner: - - - - - - - - JSON_table_path_name - - INNER - - - JSON_table_plan_primary - - - - -
             ::= JSON_table_path_name 'INNER' JSON_table_plan_primary
    -
    - referenced by: - - JSON_table_plan_parent_child - - JSON_table_plan_sibling: - - - - - - - - JSON_table_plan_union - - - JSON_table_plan_cross - - - - -
             ::= JSON_table_plan_union
    -
               | JSON_table_plan_cross
    -
    - referenced by: - - JSON_table_plan - - JSON_table_plan_union: - - - - - - - - JSON_table_plan_primary - - UNION - - - JSON_table_plan_primary - - - - -
             ::= JSON_table_plan_primary ( 'UNION' JSON_table_plan_primary )+
    -
    - referenced by: - - JSON_table_plan_sibling - - JSON_table_plan_cross: - - - - - - - - JSON_table_plan_primary - - CROSS - - - JSON_table_plan_primary - - - - -
             ::= JSON_table_plan_primary ( 'CROSS' JSON_table_plan_primary )+
    -
    - referenced by: - - JSON_table_plan_sibling - - JSON_table_plan_primary: - - - - - - - - JSON_table_path_name - - ( - - - JSON_table_plan - - ) - - - - - -
             ::= JSON_table_path_name
    -
               | '(' JSON_table_plan ')'
    -
    - referenced by: - - JSON_table_plan_cross - JSON_table_plan_inner - JSON_table_plan_outer - JSON_table_plan_union - - JSON_table_default_plan: - - - - - - - - PLAN* - - - DEFAULT - - - ( - - - JSON_table_default_plan_choices - - ) - - - - - -
             ::= 'PLAN*' 'DEFAULT' '(' JSON_table_default_plan_choices ')'
    -
    - referenced by: - - JSON_table_plan_clause - - JSON_table_default_plan_choices: - - - - - - - - JSON_table_default_plan_inner_outer - - , - - - JSON_table_default_plan_union_cross - - - JSON_table_default_plan_union_cross - - , - - - JSON_table_default_plan_inner_outer - - - - - - - - referenced by: - - JSON_table_default_plan - - JSON_table_default_plan_inner_outer: - - - - - - - - INNER - - - OUTER - - - - - -
             ::= 'INNER'
    -
               | 'OUTER'
    -
    - referenced by: - - JSON_table_default_plan_choices - - JSON_table_default_plan_union_cross: - - - - - - - - UNION - - - CROSS - - - - - -
             ::= 'UNION'
    -
               | 'CROSS'
    -
    - referenced by: - - JSON_table_default_plan_choices - - JSON_table_error_behavior: - - - - - - - - ERROR* - - - EMPTY - - - - - -
             ::= 'ERROR*'
    -
               | 'EMPTY'
    -
    - referenced by: - - JSON_table - JSON_table_primitive - - JSON_table_primitive: - - - - - - - - JSON_TABLE_PRIMITIVE - - - ( - - - JSON_API_common_syntax - - - JSON_table_primitive_columns_clause - - - JSON_table_error_behavior - - ON - - - ERROR* - - - ) - - - - - -
             ::= 'JSON_TABLE_PRIMITIVE' '(' JSON_API_common_syntax JSON_table_primitive_columns_clause JSON_table_error_behavior 'ON' 'ERROR*' ')'
    -
    - referenced by: - - table_primary - - JSON_table_primitive_columns_clause: - - - - - - - - COLUMNS* - - - ( - - - JSON_table_primitive_column_definition - - , - - - ) - - - - - -
             ::= 'COLUMNS*' '(' JSON_table_primitive_column_definition ( ',' JSON_table_primitive_column_definition )* ')'
    -
    - referenced by: - - JSON_table_primitive - - JSON_table_primitive_column_definition: - - - - - - - - JSON_table_ordinality_column_definition - - - JSON_table_regular_column_definition - - - JSON_table_formatted_column_definition - - - JSON_table_primitive_chaining_column - - - - - -
               | JSON_table_regular_column_definition
    - -
               | JSON_table_primitive_chaining_column
    -
    - referenced by: - - JSON_table_primitive_columns_clause - - JSON_table_primitive_chaining_column: - - - - - - - - column_name - - FOR - - - CHAINING* - - - - - -
             ::= column_name 'FOR' 'CHAINING*'
    -
    - referenced by: - - JSON_table_primitive_column_definition - - where_clause: - - - - - - - - WHERE - - - search_condition - - - - -
             ::= 'WHERE' search_condition
    -
    - referenced by: - - table_expression - - group_by_clause: - - - - - - - - GROUP - - - BY - - - set_quantifier - - - grouping_element_list - - - - -
             ::= 'GROUP' 'BY' set_quantifier? grouping_element_list
    -
    - referenced by: - - table_expression - - grouping_element_list: - - - - - - - - grouping_element - - , - - - - - -
             ::= grouping_element ( ',' grouping_element )*
    -
    - referenced by: - - group_by_clause - - grouping_element: - - - - - - - - ordinary_grouping_set - - - rollup_list - - - cube_list - - - grouping_sets_specification - - - empty_grouping_set - - - - -
             ::= ordinary_grouping_set
    -
               | rollup_list
    -
               | cube_list
    -
               | grouping_sets_specification
    -
               | empty_grouping_set
    -
    - referenced by: - - grouping_element_list - - ordinary_grouping_set: - - - - - - - - grouping_column_reference - - ( - - - grouping_column_reference_list - - ) - - - - - -
             ::= grouping_column_reference
    -
               | '(' grouping_column_reference_list ')'
    -
    - referenced by: - - grouping_element - grouping_set - ordinary_grouping_set_list - - grouping_column_reference: - - - - - - - - column_reference - - - collate_clause - - - - -
             ::= column_reference collate_clause?
    -
    - referenced by: - - grouping_column_reference_list - ordinary_grouping_set - - grouping_column_reference_list: - - - - - - - - grouping_column_reference - - , - - - - - - - - referenced by: - - ordinary_grouping_set - - rollup_list: - - - - - - - - ROLLUP - - - ( - - - ordinary_grouping_set_list - - ) - - - - - -
             ::= 'ROLLUP' '(' ordinary_grouping_set_list ')'
    -
    - referenced by: - - grouping_element - grouping_set - - ordinary_grouping_set_list: - - - - - - - - ordinary_grouping_set - - , - - - - - -
             ::= ordinary_grouping_set ( ',' ordinary_grouping_set )*
    -
    - referenced by: - - cube_list - rollup_list - - cube_list: - - - - - - - - CUBE - - - ( - - - ordinary_grouping_set_list - - ) - - - - - -
             ::= 'CUBE' '(' ordinary_grouping_set_list ')'
    -
    - referenced by: - - grouping_element - grouping_set - - grouping_sets_specification: - - - - - - - - GROUPING - - - SETS* - - - ( - - - grouping_set_list - - ) - - - - - -
             ::= 'GROUPING' 'SETS*' '(' grouping_set_list ')'
    -
    - referenced by: - - grouping_element - grouping_set - - grouping_set_list: - - - - - - - - grouping_set - - , - - - - - -
             ::= grouping_set ( ',' grouping_set )*
    -
    - referenced by: - - grouping_sets_specification - - grouping_set: - - - - - - - - ordinary_grouping_set - - - rollup_list - - - cube_list - - - grouping_sets_specification - - - empty_grouping_set - - - - -
             ::= ordinary_grouping_set
    -
               | rollup_list
    -
               | cube_list
    -
               | grouping_sets_specification
    -
               | empty_grouping_set
    -
    - referenced by: - - grouping_set_list - - empty_grouping_set: - - - - - - - - ( - - - ) - - - - - -
             ::= '(' ')'
    -
    - referenced by: - - grouping_element - grouping_set - - having_clause: - - - - - - - - HAVING - - - search_condition - - - - -
             ::= 'HAVING' search_condition
    -
    - referenced by: - - table_expression - - window_clause: - - - - - - - - WINDOW - - - window_definition_list - - - - -
             ::= 'WINDOW' window_definition_list
    -
    - referenced by: - - table_expression - - window_definition_list: - - - - - - - - window_definition - - , - - - - - -
             ::= window_definition ( ',' window_definition )*
    -
    - referenced by: - - window_clause - - window_definition: - - - - - - - - new_window_name - - AS - - - window_specification - - - - -
             ::= new_window_name 'AS' window_specification
    -
    - referenced by: - - window_definition_list - - new_window_name: - - - - - - - - window_name - - - - -
             ::= window_name
    -
    - referenced by: - - window_definition - - window_specification: - - - - - - - - ( - - - window_specification_details - - ) - - - - - -
             ::= '(' window_specification_details ')'
    -
    - referenced by: - - in_line_window_specification - window_definition - - window_specification_details: - - - - - - - - existing_window_name - - - window_partition_clause - - - window_order_clause - - - window_frame_clause - - - - - - - referenced by: - - window_specification - - existing_window_name: - - - - - - - - window_name - - - - -
             ::= window_name
    -
    - referenced by: - - window_specification_details - - window_partition_clause: - - - - - - - - PARTITION - - - BY - - - window_partition_column_reference_list - - - - -
             ::= 'PARTITION' 'BY' window_partition_column_reference_list
    -
    - referenced by: - - window_specification_details - - window_partition_column_reference_list: - - - - - - - - window_partition_column_reference - - , - - - - - - - - referenced by: - - window_partition_clause - - window_partition_column_reference: - - - - - - - - column_reference - - - collate_clause - - - - -
             ::= column_reference collate_clause?
    -
    - referenced by: - - window_partition_column_reference_list - - window_order_clause: - - - - - - - - ORDER - - - BY - - - sort_specification_list - - - - -
             ::= 'ORDER' 'BY' sort_specification_list
    -
    - referenced by: - - window_specification_details - - window_frame_clause: - - - - - - - - row_pattern_measures - - - window_frame_units - - - window_frame_extent - - - window_frame_exclusion - - - row_pattern_common_syntax - - - - - - - referenced by: - - window_specification_details - - window_frame_units: - - - - - - - - ROWS - - - RANGE - - - GROUPS - - - - - -
             ::= 'ROWS'
    -
               | 'RANGE'
    -
               | 'GROUPS'
    -
    - referenced by: - - window_frame_clause - - window_frame_extent: - - - - - - - - window_frame_start - - - window_frame_between - - - - -
             ::= window_frame_start
    -
               | window_frame_between
    -
    - referenced by: - - window_frame_clause - - window_frame_start: - - - - - - - - UNBOUNDED* - - - PRECEDING* - - - window_frame_preceding - - CURRENT - - - ROW - - - - - -
             ::= 'UNBOUNDED*' 'PRECEDING*'
    -
               | window_frame_preceding
    -
               | 'CURRENT' 'ROW'
    -
    - referenced by: - - window_frame_bound - window_frame_extent - - window_frame_preceding: - - - - - - - - unsigned_value_specification - - PRECEDING* - - - - - -
             ::= unsigned_value_specification 'PRECEDING*'
    -
    - referenced by: - - window_frame_start - - window_frame_between: - - - - - - - - BETWEEN - - - window_frame_bound_1 - - AND - - - window_frame_bound_2 - - - - -
             ::= 'BETWEEN' window_frame_bound_1 'AND' window_frame_bound_2
    -
    - referenced by: - - window_frame_extent - - window_frame_bound_1: - - - - - - - - window_frame_bound - - - - -
             ::= window_frame_bound
    -
    - referenced by: - - window_frame_between - - window_frame_bound_2: - - - - - - - - window_frame_bound - - - - -
             ::= window_frame_bound
    -
    - referenced by: - - window_frame_between - - window_frame_bound: - - - - - - - - window_frame_start - - UNBOUNDED* - - - FOLLOWING* - - - window_frame_following - - - - -
             ::= window_frame_start
    -
               | 'UNBOUNDED*' 'FOLLOWING*'
    -
               | window_frame_following
    -
    - referenced by: - - window_frame_bound_1 - window_frame_bound_2 - - window_frame_following: - - - - - - - - unsigned_value_specification - - FOLLOWING* - - - - - -
             ::= unsigned_value_specification 'FOLLOWING*'
    -
    - referenced by: - - window_frame_bound - - window_frame_exclusion: - - - - - - - - EXCLUDE* - - - CURRENT - - - ROW - - - GROUP - - - TIES* - - - NO - - - OTHERS* - - - - - -
             ::= 'EXCLUDE*' ( 'CURRENT' 'ROW' | 'GROUP' | 'TIES*' | 'NO' 'OTHERS*' )
    -
    - referenced by: - - window_frame_clause - - query_specification: - - - - - - - - SELECT - - - set_quantifier - - - select_list - - - table_expression - - - - -
             ::= 'SELECT' set_quantifier? select_list table_expression
    -
    - referenced by: - - dynamic_single_row_select_statement - simple_table - - select_list: - - - - - - - - * - - - select_sublist - - , - - - - - -
             ::= '*'
    -
               | select_sublist ( ',' select_sublist )*
    -
    - referenced by: - - query_specification - select_statement__single_row - - select_sublist: - - - - - - - - derived_column - - - qualified_asterisk - - - - -
             ::= derived_column
    -
               | qualified_asterisk
    -
    - referenced by: - - select_list - - qualified_asterisk: - - - - - - - - asterisked_identifier_chain - - . - - - * - - - all_fields_reference - - - - -
             ::= asterisked_identifier_chain '.' '*'
    -
               | all_fields_reference
    -
    - referenced by: - - select_sublist - - asterisked_identifier_chain: - - - - - - - - asterisked_identifier - - . - - - - - -
             ::= asterisked_identifier ( '.' asterisked_identifier )*
    -
    - referenced by: - - qualified_asterisk - - asterisked_identifier: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - asterisked_identifier_chain - - derived_column: - - - - - - - - value_expression - - - as_clause - - - - -
             ::= value_expression as_clause?
    -
    - referenced by: - - select_sublist - - as_clause: - - - - - - - - AS - - - column_name - - - - -
             ::= 'AS'? column_name
    -
    - referenced by: - - derived_column - - all_fields_reference: - - - - - - - - value_expression_primary - - . - - - * - - - AS - - - ( - - - all_fields_column_name_list - - ) - - - - - -
             ::= value_expression_primary '.' '*' ( 'AS' '(' all_fields_column_name_list ')' )?
    -
    - referenced by: - - qualified_asterisk - - all_fields_column_name_list: - - - - - - - - column_name_list - - - - -
             ::= column_name_list
    -
    - referenced by: - - all_fields_reference - - query_expression: - - - - - - - - with_clause - - - query_expression_body - - - order_by_clause - - - result_offset_clause - - - fetch_first_clause - - - - - - - referenced by: - - JSON_array_constructor_by_query - cursor_specification - from_subquery - subquery - view_definition - - with_clause: - - - - - - - - WITH - - - RECURSIVE - - - with_list - - - - -
             ::= 'WITH' 'RECURSIVE'? with_list
    -
    - referenced by: - - query_expression - - with_list: - - - - - - - - with_list_element - - , - - - - - -
             ::= with_list_element ( ',' with_list_element )*
    -
    - referenced by: - - with_clause - - with_list_element: - - - - - - - - query_name - - ( - - - with_column_list - - ) - - - AS - - - table_subquery - - - search_or_cycle_clause - - - - -
             ::= query_name ( '(' with_column_list ')' )? 'AS' table_subquery search_or_cycle_clause?
    -
    - referenced by: - - with_list - - with_column_list: - - - - - - - - column_name_list - - - - -
             ::= column_name_list
    -
    - referenced by: - - with_list_element - - query_expression_body: - - - - - - - - query_term - - - corresponding_spec - - ALL - - - DISTINCT - - - UNION - - - EXCEPT - - - - - -
             ::= query_term ( ( 'UNION' | 'EXCEPT' ) ( 'ALL' | 'DISTINCT' )? corresponding_spec? query_term )*
    -
    - referenced by: - - query_expression - query_primary - - query_term: - - - - - - - - query_primary - - - corresponding_spec - - ALL - - - DISTINCT - - - INTERSECT - - - - - -
             ::= query_primary ( 'INTERSECT' ( 'ALL' | 'DISTINCT' )? corresponding_spec? query_primary )*
    -
    - referenced by: - - query_expression_body - - query_primary: - - - - - - - - simple_table - - ( - - - query_expression_body - - - order_by_clause - - - result_offset_clause - - - fetch_first_clause - - ) - - - - - -
             ::= simple_table
    -
    -
    - referenced by: - - query_term - - simple_table: - - - - - - - - query_specification - - - table_value_constructor - - - explicit_table - - - - -
             ::= query_specification
    -
               | table_value_constructor
    -
               | explicit_table
    -
    - referenced by: - - query_primary - - explicit_table: - - - - - - - - TABLE - - - table_or_query_name - - - - -
             ::= 'TABLE' table_or_query_name
    -
    - referenced by: - - simple_table - - corresponding_spec: - - - - - - - - CORRESPONDING - - - BY - - - ( - - - corresponding_column_list - - ) - - - - - -
             ::= 'CORRESPONDING' ( 'BY' '(' corresponding_column_list ')' )?
    -
    - referenced by: - - query_expression_body - query_term - - corresponding_column_list: - - - - - - - - column_name_list - - - - -
             ::= column_name_list
    -
    - referenced by: - - corresponding_spec - - order_by_clause: - - - - - - - - ORDER - - - BY - - - sort_specification_list - - - - -
             ::= 'ORDER' 'BY' sort_specification_list
    -
    - referenced by: - - query_expression - query_primary - - result_offset_clause: - - - - - - - - OFFSET - - - offset_row_count - - ROW - - - ROWS - - - - - -
             ::= 'OFFSET' offset_row_count ( 'ROW' | 'ROWS' )
    -
    - referenced by: - - query_expression - query_primary - - fetch_first_clause: - - - - - - - - FETCH - - - FIRST* - - - NEXT* - - - fetch_first_quantity - - ROW - - - ROWS - - - ONLY - - - WITH - - - TIES* - - - - - -
             ::= 'FETCH' ( 'FIRST*' | 'NEXT*' ) fetch_first_quantity? ( 'ROW' | 'ROWS' ) ( 'ONLY' | 'WITH' 'TIES*' )
    -
    - referenced by: - - query_expression - query_primary - - fetch_first_quantity: - - - - - - - - fetch_first_row_count - - - fetch_first_percentage - - - - -
             ::= fetch_first_row_count
    -
               | fetch_first_percentage
    -
    - referenced by: - - fetch_first_clause - - offset_row_count: - - - - - - - - simple_value_specification - - - - -
             ::= simple_value_specification
    -
    - referenced by: - - result_offset_clause - - fetch_first_row_count: - - - - - - - - simple_value_specification - - - - -
             ::= simple_value_specification
    -
    - referenced by: - - fetch_first_quantity - - fetch_first_percentage: - - - - - - - - simple_value_specification - - PERCENT - - - - - -
             ::= simple_value_specification 'PERCENT'
    -
    - referenced by: - - fetch_first_quantity - - search_or_cycle_clause: - - - - - - - - search_clause - - - cycle_clause - - - cycle_clause - - - - -
             ::= search_clause cycle_clause?
    -
               | cycle_clause
    -
    - referenced by: - - with_list_element - - search_clause: - - - - - - - - SEARCH - - - recursive_search_order - - SET - - - sequence_column - - - - -
             ::= 'SEARCH' recursive_search_order 'SET' sequence_column
    -
    - referenced by: - - search_or_cycle_clause - - recursive_search_order: - - - - - - - - DEPTH* - - - BREADTH* - - - FIRST* - - - BY - - - column_name_list - - - - -
             ::= ( 'DEPTH*' | 'BREADTH*' ) 'FIRST*' 'BY' column_name_list
    -
    - referenced by: - - search_clause - - sequence_column: - - - - - - - - column_name - - - - -
             ::= column_name
    -
    - referenced by: - - search_clause - - cycle_clause: - - - - - - - - CYCLE - - - cycle_column_list - - SET - - - cycle_mark_column - - TO - - - cycle_mark_value - - DEFAULT - - - non_cycle_mark_value - - USING - - - path_column - - - - -
             ::= 'CYCLE' cycle_column_list 'SET' cycle_mark_column 'TO' cycle_mark_value 'DEFAULT' non_cycle_mark_value 'USING' path_column
    -
    - referenced by: - - search_or_cycle_clause - - cycle_column_list: - - - - - - - - cycle_column - - , - - - - - -
             ::= cycle_column ( ',' cycle_column )*
    -
    - referenced by: - - cycle_clause - - cycle_column: - - - - - - - - column_name - - - - -
             ::= column_name
    -
    - referenced by: - - cycle_column_list - - cycle_mark_column: - - - - - - - - column_name - - - - -
             ::= column_name
    -
    - referenced by: - - cycle_clause - - path_column: - - - - - - - - column_name - - - - -
             ::= column_name
    -
    - referenced by: - - cycle_clause - - cycle_mark_value: - - - - - - - - value_expression - - - - -
             ::= value_expression
    -
    - referenced by: - - cycle_clause - - non_cycle_mark_value: - - - - - - - - value_expression - - - - -
             ::= value_expression
    -
    - referenced by: - - cycle_clause - - scalar_subquery: - - - - - - - - subquery - - - - -
             ::= subquery
    -
    - referenced by: - - nonparenthesized_value_expression_primary - - row_subquery: - - - - - - - - subquery - - - - -
             ::= subquery
    -
    - referenced by: - - explicit_row_value_constructor - - table_subquery: - - - - - - - - subquery - - - - -
             ::= subquery
    -
    - referenced by: - - array_value_constructor_by_query - as_subquery_clause - derived_table - exists_predicate - in_predicate_value - lateral_derived_table - match_predicate_part_2 - multiset_value_constructor_by_query - quantified_comparison_predicate_part_2 - table_argument_proper - table_value_constructor_by_query - unique_predicate - with_list_element - - subquery: - - - - - - - - ( - - - query_expression - - ) - - - - - - - referenced by: - - row_subquery - scalar_subquery - table_subquery - - predicate: - - - - - - - - comparison_predicate - - - between_predicate - - - in_predicate - - - like_predicate - - - similar_predicate - - - regex_like_predicate - - - null_predicate - - - quantified_comparison_predicate - - - exists_predicate - - - unique_predicate - - - normalized_predicate - - - match_predicate - - - overlaps_predicate - - - distinct_predicate - - - member_predicate - - - submultiset_predicate - - - set_predicate - - - type_predicate - - - period_predicate - - - JSON_predicate - - - JSON_exists_predicate - - - - -
             ::= comparison_predicate
    -
               | between_predicate
    -
               | in_predicate
    -
               | like_predicate
    -
               | similar_predicate
    -
               | regex_like_predicate
    -
               | null_predicate
    -
               | quantified_comparison_predicate
    -
               | exists_predicate
    -
               | unique_predicate
    -
               | normalized_predicate
    -
               | match_predicate
    -
               | overlaps_predicate
    -
               | distinct_predicate
    -
               | member_predicate
    -
               | submultiset_predicate
    -
               | set_predicate
    -
               | type_predicate
    -
               | period_predicate
    -
               | JSON_predicate
    -
               | JSON_exists_predicate
    -
    - referenced by: - - boolean_primary - - comparison_predicate: - - - - - - - - row_value_predicand - - - comparison_predicate_part_2 - - - - - - - referenced by: - - predicate - - comparison_predicate_part_2: - - - - - - - - comp_op - - - row_value_predicand - - - - -
             ::= comp_op row_value_predicand
    -
    - referenced by: - - comparison_predicate - when_operand - - comp_op: - - - - - - - - = - - - <> - - - < - - - > - - - <= - - - >= - - - - -
    comp_op  ::= '='
    -
               | '<>'
    -
               | '<'
    -
               | '>'
    -
               | '<='
    -
               | '>='
    -
    - referenced by: - - comparison_predicate_part_2 - quantified_comparison_predicate_part_2 - - between_predicate: - - - - - - - - row_value_predicand - - - between_predicate_part_2 - - - - - - - referenced by: - - predicate - - between_predicate_part_2: - - - - - - - - NOT - - - BETWEEN - - - ASYMMETRIC - - - SYMMETRIC - - - row_value_predicand - - AND - - - row_value_predicand - - - - -
             ::= 'NOT'? 'BETWEEN' ( 'ASYMMETRIC' | 'SYMMETRIC' )? row_value_predicand 'AND' row_value_predicand
    -
    - referenced by: - - between_predicate - when_operand - - in_predicate: - - - - - - - - row_value_predicand - - - in_predicate_part_2 - - - - - - - referenced by: - - predicate - - in_predicate_part_2: - - - - - - - - NOT - - - IN - - - in_predicate_value - - - - -
             ::= 'NOT'? 'IN' in_predicate_value
    -
    - referenced by: - - in_predicate - when_operand - - in_predicate_value: - - - - - - - - table_subquery - - ( - - - in_value_list - - ) - - - - - -
             ::= table_subquery
    -
               | '(' in_value_list ')'
    -
    - referenced by: - - in_predicate_part_2 - - in_value_list: - - - - - - - - row_value_expression - - , - - - - - -
             ::= row_value_expression ( ',' row_value_expression )*
    -
    - referenced by: - - in_predicate_value - - like_predicate: - - - - - - - - character_like_predicate - - - octet_like_predicate - - - - -
             ::= character_like_predicate
    -
               | octet_like_predicate
    -
    - referenced by: - - predicate - - character_like_predicate: - - - - - - - - row_value_predicand - - - character_like_predicate_part_2 - - - - - - - referenced by: - - like_predicate - - character_like_predicate_part_2: - - - - - - - - NOT - - - LIKE - - - character_pattern - - ESCAPE - - - escape_character - - - - -
             ::= 'NOT'? 'LIKE' character_pattern ( 'ESCAPE' escape_character )?
    -
    - referenced by: - - character_like_predicate - when_operand - - character_pattern: - - - - - - - - character_value_expression - - - - -
             ::= character_value_expression
    -
    - referenced by: - - character_like_predicate_part_2 - - escape_character: - - - - - - - - character_value_expression - - - - -
             ::= character_value_expression
    -
    - referenced by: - - character_like_predicate_part_2 - regular_expression_substring_function - similar_predicate_part_2 - - octet_like_predicate: - - - - - - - - row_value_predicand - - - octet_like_predicate_part_2 - - - - - - - referenced by: - - like_predicate - - octet_like_predicate_part_2: - - - - - - - - NOT - - - LIKE - - - octet_pattern - - ESCAPE - - - escape_octet - - - - -
             ::= 'NOT'? 'LIKE' octet_pattern ( 'ESCAPE' escape_octet )?
    -
    - referenced by: - - octet_like_predicate - when_operand - - octet_pattern: - - - - - - - - binary_value_expression - - - - -
             ::= binary_value_expression
    -
    - referenced by: - - octet_like_predicate_part_2 - - escape_octet: - - - - - - - - binary_value_expression - - - - -
             ::= binary_value_expression
    -
    - referenced by: - - octet_like_predicate_part_2 - - similar_predicate: - - - - - - - - row_value_predicand - - - similar_predicate_part_2 - - - - - - - referenced by: - - predicate - - similar_predicate_part_2: - - - - - - - - NOT - - - SIMILAR - - - TO - - - similar_pattern - - ESCAPE - - - escape_character - - - - -
             ::= 'NOT'? 'SIMILAR' 'TO' similar_pattern ( 'ESCAPE' escape_character )?
    -
    - referenced by: - - similar_predicate - when_operand - - similar_pattern: - - - - - - - - character_value_expression - - - - -
             ::= character_value_expression
    -
    - referenced by: - - similar_predicate_part_2 - - regular_term: - - - - - - - - regular_factor - - - - -
             ::= regular_factor+
    -
    - referenced by: - - regular_primary - - regular_factor: - - - - - - - - regular_primary - - * - - - + - - - ? - - - repeat_factor - - - - -
             ::= regular_primary ( '*' | '+' | '?' | repeat_factor )?
    -
    - referenced by: - - regular_term - - repeat_factor: - - - - - - - - { - - - low_value - - - upper_limit - - } - - - - - -
             ::= '{' low_value upper_limit? '}'
    -
    - referenced by: - - regular_factor - - upper_limit: - - - - - - - - , - - - high_value - - - - -
             ::= ',' high_value?
    -
    - referenced by: - - repeat_factor - - low_value: - - - - - - - - unsigned_integer - - - - -
             ::= unsigned_integer
    -
    - referenced by: - - repeat_factor - - high_value: - - - - - - - - unsigned_integer - - - - -
             ::= unsigned_integer
    -
    - referenced by: - - upper_limit - - regular_primary: - - - - - - - - character_specifier - - % - - - regular_character_set - - ( - - - regular_term - - | - - - ) - - - - - -
             ::= character_specifier
    -
               | '%'
    -
               | regular_character_set
    -
               | '(' regular_term ( '|' regular_term )* ')'
    -
    - referenced by: - - regular_factor - - character_specifier: - - - - - - - - !! See the Syntax Rules. - - - - - -
             ::= '!! See the Syntax Rules.'
    -
    - referenced by: - - character_enumeration - regular_primary - - regular_character_set: - - - - - - - - _ - - - [ - - - ^ - - - character_enumeration - - - character_enumeration_include - - ^ - - - character_enumeration_exclude - - ] - - - - - -
             ::= '_'
    -
    -
    - referenced by: - - regular_primary - - character_enumeration_include: - - - - - - - - character_enumeration - - - - -
             ::= character_enumeration
    -
    - referenced by: - - regular_character_set - - character_enumeration_exclude: - - - - - - - - character_enumeration - - - - -
             ::= character_enumeration
    -
    - referenced by: - - regular_character_set - - character_enumeration: - - - - - - - - character_specifier - - - - - - character_specifier - - [ - - - : - - - regular_character_set_identifier - - : - - - ] - - - - - -
             ::= character_specifier ( '-' character_specifier )?
    -
               | '[' ':' regular_character_set_identifier ':' ']'
    -
    - referenced by: - - character_enumeration_exclude - character_enumeration_include - regular_character_set - - regular_character_set_identifier: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - character_enumeration - - regex_like_predicate: - - - - - - - - row_value_predicand - - - regex_like_predicate_part_2 - - - - - - - referenced by: - - predicate - - regex_like_predicate_part_2: - - - - - - - - NOT - - - LIKE_REGEX - - - XQuery_pattern - - FLAG* - - - XQuery_option_flag - - - - -
             ::= 'NOT'? 'LIKE_REGEX' XQuery_pattern ( 'FLAG*' XQuery_option_flag )?
    -
    - referenced by: - - regex_like_predicate - when_operand - - null_predicate: - - - - - - - - row_value_predicand - - - null_predicate_part_2 - - - - - - - referenced by: - - predicate - - null_predicate_part_2: - - - - - - - - IS - - - NOT - - - NULL - - - - - -
             ::= 'IS' 'NOT'? 'NULL'
    -
    - referenced by: - - null_predicate - when_operand - - quantified_comparison_predicate: - - - - - - - - row_value_predicand - - - quantified_comparison_predicate_part_2 - - - - - - - referenced by: - - predicate - - quantified_comparison_predicate_part_2: - - - - - - - - comp_op - - - quantifier - - - table_subquery - - - - -
             ::= comp_op quantifier table_subquery
    -
    - referenced by: - - quantified_comparison_predicate - when_operand - - quantifier: - - - - - - - - ALL - - - some - - - - -
             ::= 'ALL'
    -
               | some
    -
    - referenced by: - - quantified_comparison_predicate_part_2 - - some: - - - - - - - - SOME - - - ANY - - - - -
    some     ::= 'SOME'
    -
               | 'ANY'
    -
    - referenced by: - - quantifier - - exists_predicate: - - - - - - - - EXISTS - - - table_subquery - - - - -
             ::= 'EXISTS' table_subquery
    -
    - referenced by: - - predicate - - unique_predicate: - - - - - - - - UNIQUE - - - table_subquery - - - - -
             ::= 'UNIQUE' table_subquery
    -
    - referenced by: - - predicate - - normalized_predicate: - - - - - - - - row_value_predicand - - - normalized_predicate_part_2 - - - - - - - referenced by: - - predicate - - normalized_predicate_part_2: - - - - - - - - IS - - - NOT - - - normal_form - - NORMALIZED* - - - - - -
             ::= 'IS' 'NOT'? normal_form? 'NORMALIZED*'
    -
    - referenced by: - - normalized_predicate - when_operand - - match_predicate: - - - - - - - - row_value_predicand - - - match_predicate_part_2 - - - - - - - referenced by: - - predicate - - match_predicate_part_2: - - - - - - - - MATCH - - - UNIQUE - - - SIMPLE* - - - PARTIAL* - - - FULL - - - table_subquery - - - - -
             ::= 'MATCH' 'UNIQUE'? ( 'SIMPLE*' | 'PARTIAL*' | 'FULL' )? table_subquery
    -
    - referenced by: - - match_predicate - when_operand - - overlaps_predicate: - - - - - - - - overlaps_predicate_part_1 - - - overlaps_predicate_part_2 - - - - - - - referenced by: - - predicate - - overlaps_predicate_part_1: - - - - - - - - row_value_predicand_1 - - - - -
             ::= row_value_predicand_1
    -
    - referenced by: - - case_operand - overlaps_predicate - - overlaps_predicate_part_2: - - - - - - - - OVERLAPS - - - row_value_predicand_2 - - - - -
             ::= 'OVERLAPS' row_value_predicand_2
    -
    - referenced by: - - overlaps_predicate - when_operand - - row_value_predicand_1: - - - - - - - - row_value_predicand - - - - -
             ::= row_value_predicand
    -
    - referenced by: - - overlaps_predicate_part_1 - - row_value_predicand_2: - - - - - - - - row_value_predicand - - - - -
             ::= row_value_predicand
    -
    - referenced by: - - overlaps_predicate_part_2 - - distinct_predicate: - - - - - - - - row_value_predicand_3 - - - distinct_predicate_part_2 - - - - - - - referenced by: - - predicate - - distinct_predicate_part_2: - - - - - - - - IS - - - NOT - - - DISTINCT - - - FROM - - - row_value_predicand_4 - - - - -
             ::= 'IS' 'NOT'? 'DISTINCT' 'FROM' row_value_predicand_4
    -
    - referenced by: - - distinct_predicate - when_operand - - row_value_predicand_3: - - - - - - - - row_value_predicand - - - - -
             ::= row_value_predicand
    -
    - referenced by: - - distinct_predicate - - row_value_predicand_4: - - - - - - - - row_value_predicand - - - - -
             ::= row_value_predicand
    -
    - referenced by: - - distinct_predicate_part_2 - - member_predicate: - - - - - - - - row_value_predicand - - - member_predicate_part_2 - - - - - - - referenced by: - - predicate - - member_predicate_part_2: - - - - - - - - NOT - - - MEMBER - - - OF - - - multiset_value_expression - - - - -
             ::= 'NOT'? 'MEMBER' 'OF'? multiset_value_expression
    -
    - referenced by: - - member_predicate - when_operand - - submultiset_predicate: - - - - - - - - row_value_predicand - - - submultiset_predicate_part_2 - - - - - - - referenced by: - - predicate - - submultiset_predicate_part_2: - - - - - - - - NOT - - - SUBMULTISET - - - OF - - - multiset_value_expression - - - - -
             ::= 'NOT'? 'SUBMULTISET' 'OF'? multiset_value_expression
    -
    - referenced by: - - submultiset_predicate - when_operand - - set_predicate: - - - - - - - - row_value_predicand - - - set_predicate_part_2 - - - - - - - referenced by: - - predicate - - set_predicate_part_2: - - - - - - - - IS - - - NOT - - - A - - - SET - - - - - -
             ::= 'IS' 'NOT'? 'A' 'SET'
    -
    - referenced by: - - set_predicate - when_operand - - type_predicate: - - - - - - - - row_value_predicand - - - type_predicate_part_2 - - - - - - - referenced by: - - predicate - - type_predicate_part_2: - - - - - - - - IS - - - NOT - - - OF - - - ( - - - type_list - - ) - - - - - -
             ::= 'IS' 'NOT'? 'OF' '(' type_list ')'
    -
    - referenced by: - - type_predicate - when_operand - - type_list: - - - - - - - - user_defined_type_specification - - , - - - - - - - - referenced by: - - type_predicate_part_2 - - user_defined_type_specification: - - - - - - - - inclusive_user_defined_type_specification - - - exclusive_user_defined_type_specification - - - - - - - - referenced by: - - type_list - - inclusive_user_defined_type_specification: - - - - - - - - path_resolved_user_defined_type_name - - - - - - - referenced by: - - user_defined_type_specification - - exclusive_user_defined_type_specification: - - - - - - - - ONLY - - - path_resolved_user_defined_type_name - - - - -
             ::= 'ONLY' path_resolved_user_defined_type_name
    -
    - referenced by: - - user_defined_type_specification - - period_predicate: - - - - - - - - period_overlaps_predicate - - - period_equals_predicate - - - period_contains_predicate - - - period_precedes_predicate - - - period_succeeds_predicate - - - period_immediately_precedes_predicate - - - period_immediately_succeeds_predicate - - - - -
             ::= period_overlaps_predicate
    -
               | period_equals_predicate
    -
               | period_contains_predicate
    -
               | period_precedes_predicate
    -
               | period_succeeds_predicate
    - -
    -
    - referenced by: - - predicate - - period_overlaps_predicate: - - - - - - - - period_predicand_1 - - - period_overlaps_predicate_part_2 - - - - - - - referenced by: - - period_predicate - - period_overlaps_predicate_part_2: - - - - - - - - OVERLAPS - - - period_predicand_2 - - - - -
             ::= 'OVERLAPS' period_predicand_2
    -
    - referenced by: - - period_overlaps_predicate - - period_predicand_1: - - - - - - - - period_predicand - - - - -
             ::= period_predicand
    -
    - referenced by: - - period_contains_predicate - period_equals_predicate - period_immediately_precedes_predicate - period_immediately_succeeds_predicate - period_overlaps_predicate - period_precedes_predicate - period_succeeds_predicate - - period_predicand_2: - - - - - - - - period_predicand - - - - -
             ::= period_predicand
    -
    - referenced by: - - period_equals_predicate_part_2 - period_immediately_precedes_predicate_part_2 - period_immediately_succeeds_predicate_part_2 - period_overlaps_predicate_part_2 - period_precedes_predicate_part_2 - period_succeeds_predicate_part_2 - - period_predicand: - - - - - - - - period_reference - - PERIOD - - - ( - - - period_start_value - - , - - - period_end_value - - ) - - - - - -
             ::= period_reference
    -
               | 'PERIOD' '(' period_start_value ',' period_end_value ')'
    -
    - referenced by: - - period_or_point_in_time_predicand - period_predicand_1 - period_predicand_2 - - period_reference: - - - - - - - - basic_identifier_chain - - - - -
             ::= basic_identifier_chain
    -
    - referenced by: - - period_predicand - - period_start_value: - - - - - - - - datetime_value_expression - - - - -
             ::= datetime_value_expression
    -
    - referenced by: - - period_predicand - - period_end_value: - - - - - - - - datetime_value_expression - - - - -
             ::= datetime_value_expression
    -
    - referenced by: - - period_predicand - - period_equals_predicate: - - - - - - - - period_predicand_1 - - - period_equals_predicate_part_2 - - - - - - - referenced by: - - period_predicate - - period_equals_predicate_part_2: - - - - - - - - EQUALS - - - period_predicand_2 - - - - -
             ::= 'EQUALS' period_predicand_2
    -
    - referenced by: - - period_equals_predicate - - period_contains_predicate: - - - - - - - - period_predicand_1 - - - period_contains_predicate_part_2 - - - - - - - referenced by: - - period_predicate - - period_contains_predicate_part_2: - - - - - - - - CONTAINS - - - period_or_point_in_time_predicand - - - - -
             ::= 'CONTAINS' period_or_point_in_time_predicand
    -
    - referenced by: - - period_contains_predicate - - period_or_point_in_time_predicand: - - - - - - - - period_predicand - - - datetime_value_expression - - - - -
             ::= period_predicand
    -
               | datetime_value_expression
    -
    - referenced by: - - period_contains_predicate_part_2 - - period_precedes_predicate: - - - - - - - - period_predicand_1 - - - period_precedes_predicate_part_2 - - - - - - - referenced by: - - period_predicate - - period_precedes_predicate_part_2: - - - - - - - - PRECEDES - - - period_predicand_2 - - - - -
             ::= 'PRECEDES' period_predicand_2
    -
    - referenced by: - - period_precedes_predicate - - period_succeeds_predicate: - - - - - - - - period_predicand_1 - - - period_succeeds_predicate_part_2 - - - - - - - referenced by: - - period_predicate - - period_succeeds_predicate_part_2: - - - - - - - - SUCCEEDS - - - period_predicand_2 - - - - -
             ::= 'SUCCEEDS' period_predicand_2
    -
    - referenced by: - - period_succeeds_predicate - - period_immediately_precedes_predicate: - - - - - - - - period_predicand_1 - - - period_immediately_precedes_predicate_part_2 - - - - - - - referenced by: - - period_predicate - - period_immediately_precedes_predicate_part_2: - - - - - - - - IMMEDIATELY* - - - PRECEDES - - - period_predicand_2 - - - - -
             ::= 'IMMEDIATELY*' 'PRECEDES' period_predicand_2
    -
    - referenced by: - - period_immediately_precedes_predicate - - period_immediately_succeeds_predicate: - - - - - - - - period_predicand_1 - - - period_immediately_succeeds_predicate_part_2 - - - - - - - referenced by: - - period_predicate - - period_immediately_succeeds_predicate_part_2: - - - - - - - - IMMEDIATELY* - - - SUCCEEDS - - - period_predicand_2 - - - - -
             ::= 'IMMEDIATELY*' 'SUCCEEDS' period_predicand_2
    -
    - referenced by: - - period_immediately_succeeds_predicate - - search_condition: - - - - - - - - boolean_value_expression - - - - -
             ::= boolean_value_expression
    -
    - referenced by: - - assertion_definition - check_constraint_definition - delete_statement__searched - filter_clause - having_clause - join_condition - merge_statement - merge_when_matched_clause - merge_when_not_matched_clause - row_pattern_definition_search_condition - searched_when_clause - triggered_when_clause - update_statement__searched - where_clause - - JSON_predicate: - - - - - - - - string_value_expression - - - JSON_input_clause - - IS - - - NOT - - - JSON* - - - JSON_predicate_type_constraint - - - JSON_key_uniqueness_constraint - - - - - - - referenced by: - - predicate - - JSON_predicate_type_constraint: - - - - - - - - VALUE - - - ARRAY - - - OBJECT* - - - SCALAR* - - - - - -
             ::= 'VALUE'
    -
               | 'ARRAY'
    -
               | 'OBJECT*'
    -
               | 'SCALAR*'
    -
    - referenced by: - - JSON_predicate - - JSON_key_uniqueness_constraint: - - - - - - - - WITH - - - WITHOUT - - - UNIQUE - - - KEYS* - - - - - -
             ::= ( 'WITH' | 'WITHOUT' ) 'UNIQUE' 'KEYS*'?
    -
    - referenced by: - - JSON_object_aggregate_constructor - JSON_object_constructor - JSON_predicate - - JSON_exists_predicate: - - - - - - - - JSON_EXISTS - - - ( - - - JSON_API_common_syntax - - - JSON_exists_error_behavior - - ON - - - ERROR* - - - ) - - - - - -
             ::= 'JSON_EXISTS' '(' JSON_API_common_syntax ( JSON_exists_error_behavior 'ON' 'ERROR*' )? ')'
    -
    - referenced by: - - predicate - - JSON_exists_error_behavior: - - - - - - - - TRUE - - - FALSE - - - UNKNOWN - - - ERROR* - - - - - -
             ::= 'TRUE'
    -
               | 'FALSE'
    -
               | 'UNKNOWN'
    -
               | 'ERROR*'
    -
    - referenced by: - - JSON_exists_predicate - - SQL_JSON_special_symbol: - - - - - - - - * - - - @ - - - , - - - $ - - - && - - - == - - - || - - - ! - - - > - - - >= - - - [ - - - ( - - - < - - - <= - - - - - - - <> - - - % - - - . - - - + - - - ? - - - ] - - - ) - - - / - - - - - -
             ::= '*'
    -
               | '@'
    -
               | ','
    -
               | '$'
    -
               | '&&'
    -
               | '=='
    -
               | '||'
    -
               | '!'
    -
               | '>'
    -
               | '>='
    -
               | '['
    -
               | '('
    -
               | '<'
    -
               | '<='
    -
               | '-'
    -
               | '<>'
    -
               | '%'
    -
               | '.'
    -
               | '+'
    -
               | '?'
    -
               | ']'
    -
               | ')'
    -
               | '/'
    -
    - no referencesSQL_JSON_key_word: - - - - - - - - abs - - - ceiling - - - datetime - - - double - - - exists - - - false - - - flag - - - floor - - - is - - - keyvalue - - - last - - - lax - - - like_regex - - - null - - - size - - - starts - - - strict - - - to - - - true - - - type - - - unknown - - - with - - - - - -
             ::= 'abs'
    -
               | 'ceiling'
    -
               | 'datetime'
    -
               | 'double'
    -
               | 'exists'
    -
               | 'false'
    -
               | 'flag'
    -
               | 'floor'
    -
               | 'is'
    -
               | 'keyvalue'
    -
               | 'last'
    -
               | 'lax'
    -
               | 'like_regex'
    -
               | 'null'
    -
               | 'size'
    -
               | 'starts'
    -
               | 'strict'
    -
               | 'to'
    -
               | 'true'
    -
               | 'type'
    -
               | 'unknown'
    -
               | 'with'
    -
    - no referencesJSON_path_context_variable: - - - - - - - - !! See the Syntax Rules. - - - $ - - - - - -
             ::= '!! See the Syntax Rules.'
    -
               | '$'
    -
    - referenced by: - - JSON_path_variable - - JSON_path_named_variable: - - - - - - - - $ - - - !! See the Syntax Rules. - - - - - -
             ::= '$'? '!! See the Syntax Rules.'
    -
    - referenced by: - - JSON_path_variable - JSON_starts_with_initial - - JSON_path_expression: - - - - - - - - JSON_path_mode - - - JSON_path_wff - - - - -
             ::= JSON_path_mode JSON_path_wff
    -
    - no referencesJSON_path_mode: - - - - - - - - strict - - - lax - - - - - -
             ::= 'strict'
    -
               | 'lax'
    -
    - referenced by: - - JSON_path_expression - - JSON_path_primary: - - - - - - - - !! See the Syntax Rules. - - - JSON_path_variable - - ( - - - JSON_path_wff - - ) - - - - - -
             ::= '!! See the Syntax Rules.'
    -
               | JSON_path_variable
    -
               | '(' JSON_path_wff ')'
    -
    - referenced by: - - JSON_unary_expression - - JSON_path_variable: - - - - - - - - JSON_path_context_variable - - - JSON_path_named_variable - - @ - - - last - - - - - -
             ::= JSON_path_context_variable
    -
               | JSON_path_named_variable
    -
               | '@'
    -
               | 'last'
    -
    - referenced by: - - JSON_path_primary - - JSON_accessor_op: - - - - - - - - JSON____member_accessor - - - JSON____wildcard_member_accessor - - - JSON____array_accessor - - - JSON____wildcard_array_accessor - - - JSON____filter_expression - - - JSON____item_method - - - - -
             ::= JSON____member_accessor
    -
               | JSON____wildcard_member_accessor
    -
               | JSON____array_accessor
    -
               | JSON____wildcard_array_accessor
    -
               | JSON____filter_expression
    -
               | JSON____item_method
    -
    - referenced by: - - JSON_unary_expression - - JSON_member_accessor: - - - - - - - - . - - - !! See the Syntax Rules. - - - - - -
             ::= '.' '!! See the Syntax Rules.'
    -
    - no referencesJSON_wildcard_member_accessor: - - - - - - - - . - - - * - - - - - -
             ::= '.' '*'
    -
    - no referencesJSON_array_accessor: - - - - - - - - [ - - - JSON_subscript_list - - ] - - - - - -
             ::= '[' JSON_subscript_list ']'
    -
    - no referencesJSON_subscript_list: - - - - - - - - JSON_subscript - - , - - - - - -
             ::= JSON_subscript ( ',' JSON_subscript )*
    -
    - referenced by: - - JSON_array_accessor - - JSON_subscript: - - - - - - - - JSON_path_wff_1 - - - JSON_path_wff_2 - - to - - - JSON_path_wff_3 - - - - -
             ::= JSON_path_wff_1
    -
               | JSON_path_wff_2 'to' JSON_path_wff_3
    -
    - referenced by: - - JSON_subscript_list - - JSON_path_wff_1: - - - - - - - - JSON_path_wff - - - - -
             ::= JSON_path_wff
    -
    - referenced by: - - JSON_subscript - - JSON_path_wff_2: - - - - - - - - JSON_path_wff - - - - -
             ::= JSON_path_wff
    -
    - referenced by: - - JSON_subscript - - JSON_path_wff_3: - - - - - - - - JSON_path_wff - - - - -
             ::= JSON_path_wff
    -
    - referenced by: - - JSON_subscript - - JSON_wildcard_array_accessor: - - - - - - - - [ - - - * - - - ] - - - - - -
             ::= '[' '*' ']'
    -
    - no referencesJSON_filter_expression: - - - - - - - - ? - - - ( - - - JSON_path_predicate - - ) - - - - - -
             ::= '?' '(' JSON_path_predicate ')'
    -
    - no referencesJSON_item_method: - - - - - - - - . - - - JSON_method - - - - -
             ::= '.' JSON_method
    -
    - no referencesJSON_method: - - - - - - - - type - - - size - - - double - - - ceiling - - - floor - - - abs - - - keyvalue - - - ( - - - datetime - - - ( - - - !! See the Syntax Rules. - - - ) - - - - - -
             ::= ( ( 'type' | 'size' | 'double' | 'ceiling' | 'floor' | 'abs' | 'keyvalue' - ) '(' | 'datetime' '(' '!! See the Syntax Rules.'? ) ')'
    -
    - referenced by: - - JSON_item_method - - JSON_unary_expression: - - - - - - - - + - - - - - - - JSON_path_primary - - - JSON_accessor_op - - - - -
             ::= ( '+' | '-' )* JSON_path_primary JSON_accessor_op*
    -
    - referenced by: - - JSON_multiplicative_expression - - JSON_multiplicative_expression: - - - - - - - - JSON_unary_expression - - * - - - / - - - % - - - - - -
             ::= JSON_unary_expression ( ( '*' | '/' | '%' ) JSON_unary_expression )*
    -
    - referenced by: - - JSON_path_wff - - JSON_path_wff: - - - - - - - - JSON_multiplicative_expression - - + - - - - - - - - - -
             ::= JSON_multiplicative_expression ( ( '+' | '-' ) JSON_multiplicative_expression )*
    -
    - referenced by: - - JSON_comparison_predicate - JSON_exists_path_predicate - JSON_like_regex_predicate - JSON_path_expression - JSON_path_primary - JSON_path_wff_1 - JSON_path_wff_2 - JSON_path_wff_3 - JSON_starts_with_whole - - JSON_predicate_primary: - - - - - - - - JSON_delimited_predicate - - - JSON_non_delimited_predicate - - - - -
             ::= JSON_delimited_predicate
    -
               | JSON_non_delimited_predicate
    -
    - referenced by: - - JSON_boolean_negation - - JSON_delimited_predicate: - - - - - - - - JSON_exists_path_predicate - - ( - - - JSON_path_predicate - - ) - - - - - -
             ::= JSON_exists_path_predicate
    -
               | '(' JSON_path_predicate ')'
    -
    - referenced by: - - JSON_boolean_negation - JSON_predicate_primary - - JSON_non_delimited_predicate: - - - - - - - - JSON_comparison_predicate - - - JSON_like_regex_predicate - - - JSON_starts_with_predicate - - - JSON_unknown_predicate - - - - -
             ::= JSON_comparison_predicate
    -
               | JSON_like_regex_predicate
    -
               | JSON_starts_with_predicate
    -
               | JSON_unknown_predicate
    -
    - referenced by: - - JSON_predicate_primary - - JSON_exists_path_predicate: - - - - - - - - exists - - - ( - - - JSON_path_wff - - ) - - - - - -
             ::= 'exists' '(' JSON_path_wff ')'
    -
    - referenced by: - - JSON_delimited_predicate - - JSON_comparison_predicate: - - - - - - - - JSON_path_wff - - - JSON_comp_op - - - JSON_path_wff - - - - - - - referenced by: - - JSON_non_delimited_predicate - - JSON_comp_op: - - - - - - - - == - - - <> - - - < - - - > - - - <= - - - >= - - - - - -
             ::= '=='
    -
               | '<>'
    -
               | '<'
    -
               | '>'
    -
               | '<='
    -
               | '>='
    -
    - referenced by: - - JSON_comparison_predicate - - JSON_like_regex_predicate: - - - - - - - - JSON_path_wff - - like_regex - - - !! See the Syntax Rules. - - - flag - - - !! See the Syntax Rules. - - - - - -
             ::= JSON_path_wff 'like_regex' '!! See the Syntax Rules.' ( 'flag' '!! See the Syntax Rules.' )?
    -
    - referenced by: - - JSON_non_delimited_predicate - - JSON_starts_with_predicate: - - - - - - - - JSON_starts_with_whole - - starts - - - with - - - JSON_starts_with_initial - - - - -
             ::= JSON_starts_with_whole 'starts' 'with' JSON_starts_with_initial
    -
    - referenced by: - - JSON_non_delimited_predicate - - JSON_starts_with_whole: - - - - - - - - JSON_path_wff - - - - -
             ::= JSON_path_wff
    -
    - referenced by: - - JSON_starts_with_predicate - - JSON_starts_with_initial: - - - - - - - - !! See the Syntax Rules. - - - JSON_path_named_variable - - - - -
             ::= '!! See the Syntax Rules.'
    -
               | JSON_path_named_variable
    -
    - referenced by: - - JSON_starts_with_predicate - - JSON_unknown_predicate: - - - - - - - - ( - - - JSON_path_predicate - - ) - - - is - - - unknown - - - - - -
             ::= '(' JSON_path_predicate ')' 'is' 'unknown'
    -
    - referenced by: - - JSON_non_delimited_predicate - - JSON_boolean_negation: - - - - - - - - JSON_predicate_primary - - ! - - - JSON_delimited_predicate - - - - -
             ::= JSON_predicate_primary
    -
               | '!' JSON_delimited_predicate
    -
    - referenced by: - - JSON_boolean_conjunction - - JSON_boolean_conjunction: - - - - - - - - JSON_boolean_negation - - && - - - - - -
             ::= JSON_boolean_negation ( '&&' JSON_boolean_negation )*
    -
    - referenced by: - - JSON_path_predicate - - JSON_path_predicate: - - - - - - - - JSON_boolean_conjunction - - || - - - - - -
             ::= JSON_boolean_conjunction ( '||' JSON_boolean_conjunction )*
    -
    - referenced by: - - JSON_delimited_predicate - JSON_filter_expression - JSON_unknown_predicate - - datetime_template: - - - - - - - - datetime_template_part - - - - -
             ::= datetime_template_part+
    -
    - no referencesdatetime_template_part: - - - - - - - - datetime_template_field - - - datetime_template_delimiter - - - - -
             ::= datetime_template_field
    -
               | datetime_template_delimiter
    -
    - referenced by: - - datetime_template - - datetime_template_field: - - - - - - - - datetime_template_year - - - datetime_template_rounded_year - - - datetime_template_month - - - datetime_template_day_of_month - - - datetime_template_day_of_year - - - datetime_template_12_hour - - HH24 - - - datetime_template_minute - - - datetime_template_second_of_minute - - - datetime_template_second_of_day - - - datetime_template_fraction - - - datetime_template_am_pm - - - datetime_template_time_zone_hour - - - datetime_template_time_zone_minute - - - - -
             ::= datetime_template_year
    -
               | datetime_template_rounded_year
    -
               | datetime_template_month
    -
               | datetime_template_day_of_month
    -
               | datetime_template_day_of_year
    -
               | datetime_template_12_hour
    -
               | 'HH24'
    -
               | datetime_template_minute
    -
               | datetime_template_second_of_minute
    -
               | datetime_template_second_of_day
    -
               | datetime_template_fraction
    -
               | datetime_template_am_pm
    -
               | datetime_template_time_zone_hour
    -
               | datetime_template_time_zone_minute
    -
    - referenced by: - - datetime_template_part - - datetime_template_delimiter: - - - - - - - - - - - - . - - - / - - - , - - - ' - - - ; - - - : - - - !! See the Syntax Rules. - - - - - -
             ::= '-'
    -
               | '.'
    -
               | '/'
    -
               | ','
    -
               | "'"
    -
               | ';'
    -
               | ':'
    -
               | '!! See the Syntax Rules.'
    -
    - referenced by: - - datetime_template_part - - datetime_template_year: - - - - - - - - YYYY - - - YYY - - - YY - - Y - - - - - -
             ::= YYYY
    -
               | YYY
    -
               | YY
    -
               | 'Y'
    -
    - referenced by: - - datetime_template_field - - datetime_template_rounded_year: - - - - - - - - RRRR - - - RR - - - - -
             ::= RRRR
    -
               | RR
    -
    - referenced by: - - datetime_template_field - - datetime_template_month: - - - - - - - - MM - - - - -
             ::= MM
    -
    - referenced by: - - datetime_template_field - - datetime_template_day_of_month: - - - - - - - - DD - - - - -
             ::= DD
    -
    - referenced by: - - datetime_template_field - - datetime_template_day_of_year: - - - - - - - - DDD - - - - -
             ::= DDD
    -
    - referenced by: - - datetime_template_field - - datetime_template_12_hour: - - - - - - - - HH - - HH12 - - - - - -
             ::= HH
    -
               | 'HH12'
    -
    - referenced by: - - datetime_template_field - - datetime_template_minute: - - - - - - - - MI - - - - -
             ::= MI
    -
    - referenced by: - - datetime_template_field - - datetime_template_second_of_minute: - - - - - - - - SS - - - - -
             ::= SS
    -
    - referenced by: - - datetime_template_field - - datetime_template_second_of_day: - - - - - - - - SSSSS - - - - -
             ::= SSSSS
    -
    - referenced by: - - datetime_template_field - - datetime_template_fraction: - - - - - - - - FF1 - - - FF2 - - - FF3 - - - FF4 - - - FF5 - - - FF6 - - - FF7 - - - FF8 - - - FF9 - - - - - -
             ::= 'FF1'
    -
               | 'FF2'
    -
               | 'FF3'
    -
               | 'FF4'
    -
               | 'FF5'
    -
               | 'FF6'
    -
               | 'FF7'
    -
               | 'FF8'
    -
               | 'FF9'
    -
    - referenced by: - - datetime_template_field - - datetime_template_am_pm: - - - - - - - - A.M. - - - P.M. - - - - - -
             ::= 'A.M.'
    -
               | 'P.M.'
    -
    - referenced by: - - datetime_template_field - - datetime_template_time_zone_hour: - - - - - - - - TZH - - - - -
             ::= TZH
    -
    - referenced by: - - datetime_template_field - - datetime_template_time_zone_minute: - - - - - - - - TZM - - - - -
             ::= TZM
    -
    - referenced by: - - datetime_template_field - - interval_qualifier: - - - - - - - - start_field - - TO - - - end_field - - - single_datetime_field - - - - -
             ::= start_field 'TO' end_field
    -
               | single_datetime_field
    -
    - referenced by: - - interval_literal - interval_primary - interval_type - interval_value_expression - - start_field: - - - - - - - - non_second_primary_datetime_field - - ( - - - interval_leading_field_precision - - ) - - - - - - - - referenced by: - - interval_qualifier - - end_field: - - - - - - - - non_second_primary_datetime_field - - SECOND - - - ( - - - interval_fractional_seconds_precision - - ) - - - - - -
             ::= non_second_primary_datetime_field
    -
               | 'SECOND' ( '(' interval_fractional_seconds_precision ')' )?
    -
    - referenced by: - - interval_qualifier - - single_datetime_field: - - - - - - - - non_second_primary_datetime_field - - ( - - - interval_leading_field_precision - - ) - - - SECOND - - - ( - - - interval_leading_field_precision - - , - - - interval_fractional_seconds_precision - - ) - - - - - - -
               | 'SECOND' ( '(' interval_leading_field_precision ( ',' interval_fractional_seconds_precision )? ')' )?
    -
    - referenced by: - - interval_qualifier - - primary_datetime_field: - - - - - - - - non_second_primary_datetime_field - - SECOND - - - - - -
             ::= non_second_primary_datetime_field
    -
               | 'SECOND'
    -
    - referenced by: - - extract_field - - non_second_primary_datetime_field: - - - - - - - - YEAR - - - MONTH - - - DAY - - - HOUR - - - MINUTE - - - - - -
             ::= 'YEAR'
    -
               | 'MONTH'
    -
               | 'DAY'
    -
               | 'HOUR'
    -
               | 'MINUTE'
    -
    - referenced by: - - end_field - primary_datetime_field - single_datetime_field - start_field - - interval_fractional_seconds_precision: - - - - - - - - unsigned_integer - - - - -
             ::= unsigned_integer
    -
    - referenced by: - - end_field - single_datetime_field - - interval_leading_field_precision: - - - - - - - - unsigned_integer - - - - -
             ::= unsigned_integer
    -
    - referenced by: - - single_datetime_field - start_field - - language_clause: - - - - - - - - LANGUAGE - - - language_name - - - - -
             ::= 'LANGUAGE' language_name
    -
    - referenced by: - - SQL_client_module_definition - alter_routine_characteristic - method_characteristic - routine_characteristic - - language_name: - - - - - - - - ADA* - - - C - - - COBOL* - - - FORTRAN* - - - M - - - MUMPS* - - - PASCAL* - - - PLI* - - - SQL - - - - - -
             ::= 'ADA*'
    -
               | 'C'
    -
               | 'COBOL*'
    -
               | 'FORTRAN*'
    -
               | 'M'
    -
               | 'MUMPS*'
    -
               | 'PASCAL*'
    -
               | 'PLI*'
    -
               | 'SQL'
    -
    - referenced by: - - language_clause - - path_specification: - - - - - - - - PATH* - - - schema_name_list - - - - -
             ::= 'PATH*' schema_name_list
    -
    - referenced by: - - embedded_path_specification - module_path_specification - schema_path_specification - - schema_name_list: - - - - - - - - schema_name - - , - - - - - -
             ::= schema_name ( ',' schema_name )*
    -
    - referenced by: - - path_specification - - routine_invocation: - - - - - - - - routine_name - - - SQL_argument_list - - - - -
             ::= routine_name SQL_argument_list
    -
    - referenced by: - - PTF_derived_table - call_statement - constructor_method_selection - method_selection - new_invocation - nonparenthesized_value_expression_primary - static_method_selection - table_function_invocation - - routine_name: - - - - - - - - schema_name - - . - - - qualified_identifier - - - - -
             ::= schema_name '.'? qualified_identifier
    -
    - referenced by: - - routine_invocation - - SQL_argument_list: - - - - - - - - ( - - - SQL_argument - - , - - - copartition_clause - - ) - - - - - -
             ::= '(' ( SQL_argument ( ',' SQL_argument )* copartition_clause? )? ')'
    -
    - referenced by: - - attribute_or_method_reference - direct_invocation - generalized_invocation - method_reference - new_specification - routine_invocation - static_method_invocation - - SQL_argument: - - - - - - - - value_expression - - - generalized_expression - - - target_specification - - - contextually_typed_value_specification - - - named_argument_specification - - - table_argument - - - descriptor_argument - - - - -
             ::= value_expression
    -
               | generalized_expression
    -
               | target_specification
    - -
               | named_argument_specification
    -
               | table_argument
    -
               | descriptor_argument
    -
    - referenced by: - - SQL_argument_list - - generalized_expression: - - - - - - - - value_expression - - AS - - - path_resolved_user_defined_type_name - - - - - - - referenced by: - - SQL_argument - - named_argument_specification: - - - - - - - - SQL_parameter_name - - => - - - named_argument_SQL_argument - - - - - - - referenced by: - - SQL_argument - - named_argument_SQL_argument: - - - - - - - - value_expression - - - target_specification - - - contextually_typed_value_specification - - - table_argument - - - descriptor_argument - - - - -
             ::= value_expression
    -
               | target_specification
    - -
               | table_argument
    -
               | descriptor_argument
    -
    - referenced by: - - named_argument_specification - - table_argument: - - - - - - - - table_argument_proper - - AS - - - table_argument_correlation_name - - - table_argument_parenthesized_derived_column_list - - - table_argument_partitioning - - - table_argument_pruning - - - table_argument_ordering - - - - - - - referenced by: - - SQL_argument - named_argument_SQL_argument - - table_argument_correlation_name: - - - - - - - - correlation_name - - - - -
             ::= correlation_name
    -
    - referenced by: - - table_argument - - table_argument_parenthesized_derived_column_list: - - - - - - - - parenthesized_derived_column_list - - - - -
             ::= parenthesized_derived_column_list
    -
    - referenced by: - - table_argument - - table_argument_proper: - - - - - - - - TABLE - - - ( - - - table_or_query_name - - ) - - - table_subquery - - - table_function_invocation - - - - -
             ::= 'TABLE' ( '(' table_or_query_name ')' | table_subquery )
    -
               | table_function_invocation
    -
    - referenced by: - - table_argument - - table_function_invocation: - - - - - - - - routine_invocation - - - - -
             ::= routine_invocation
    -
    - referenced by: - - table_argument_proper - - table_argument_partitioning: - - - - - - - - PARTITION - - - BY - - - table_argument_partitioning_list - - - - -
             ::= 'PARTITION' 'BY' table_argument_partitioning_list
    -
    - referenced by: - - table_argument - - table_argument_partitioning_list: - - - - - - - - column_reference - - ( - - - column_reference - - , - - - ) - - - - - -
             ::= column_reference
    -
               | '(' ( column_reference ( ',' column_reference )* )? ')'
    -
    - referenced by: - - table_argument_partitioning - - table_argument_pruning: - - - - - - - - PRUNE* - - - KEEP* - - - WHEN - - - EMPTY - - - - - -
             ::= ( 'PRUNE*' | 'KEEP*' ) 'WHEN' 'EMPTY'
    -
    - referenced by: - - table_argument - - table_argument_ordering: - - - - - - - - ORDER - - - BY - - - table_argument_ordering_list - - - - -
             ::= 'ORDER' 'BY' table_argument_ordering_list
    -
    - referenced by: - - table_argument - - table_argument_ordering_list: - - - - - - - - table_argument_ordering_column - - ( - - - table_argument_ordering_column - - , - - - ) - - - - - -
             ::= table_argument_ordering_column
    -
               | '(' table_argument_ordering_column ( ',' table_argument_ordering_column )* ')'
    -
    - referenced by: - - table_argument_ordering - - table_argument_ordering_column: - - - - - - - - column_reference - - - ordering_specification - - - null_ordering - - - - - - - referenced by: - - table_argument_ordering_list - - copartition_clause: - - - - - - - - COPARTITION - - - copartition_list - - - - -
             ::= COPARTITION copartition_list
    -
    - referenced by: - - SQL_argument_list - - copartition_list: - - - - - - - - copartition_specification - - , - - - - - - - - referenced by: - - copartition_clause - - copartition_specification: - - - - - - - - ( - - - range_variable - - , - - - range_variable - - ) - - - - - -
             ::= '(' range_variable ( ',' range_variable )+ ')'
    -
    - referenced by: - - copartition_list - - range_variable: - - - - - - - - table_name - - - query_name - - - correlation_name - - - - -
             ::= table_name
    -
               | query_name
    -
               | correlation_name
    -
    - referenced by: - - copartition_specification - - descriptor_argument: - - - - - - - - descriptor_value_constructor - - CAST - - - ( - - - NULL - - - AS - - - DESCRIPTOR* - - - ) - - - - - -
             ::= descriptor_value_constructor
    -
               | 'CAST' '(' 'NULL' 'AS' 'DESCRIPTOR*' ')'
    -
    - referenced by: - - SQL_argument - named_argument_SQL_argument - - character_set_specification: - - - - - - - - standard_character_set_name - - - implementation_defined_character_set_name - - - user_defined_character_set_name - - - - -
             ::= standard_character_set_name
    - -
               | user_defined_character_set_name
    -
    - referenced by: - - Ada_CLOB_variable - Ada_qualified_type_specification - COBOL_CLOB_variable - COBOL_character_type - C_CLOB_variable - C_VARCHAR_variable - C_character_variable - Fortran_CLOB_variable - Fortran_type_specification - MUMPS_character_variable_specifier - PL_I_CLOB_variable - PL_I_type_specification - Pascal_CLOB_variable - Pascal_type_specification - Unicode_character_string_literal - character_set_source - character_set_specification_list - character_string_literal - collation_definition - embedded_character_set_declaration - module_character_set_specification - predefined_type - schema_character_set_specification - source_character_set_specification - target_character_set_specification - - standard_character_set_name: - - - - - - - - character_set_name - - - - -
             ::= character_set_name
    -
    - referenced by: - - character_set_specification - - implementation_defined_character_set_name: - - - - - - - - character_set_name - - - - -
             ::= character_set_name
    -
    - referenced by: - - character_set_specification - - user_defined_character_set_name: - - - - - - - - character_set_name - - - - -
             ::= character_set_name
    -
    - referenced by: - - character_set_specification - - specific_routine_designator: - - - - - - - - SPECIFIC - - - routine_type - - - specific_name - - - routine_type - - - member_name - - FOR - - - schema_resolved_user_defined_type_name - - - - -
             ::= 'SPECIFIC' routine_type specific_name
    -
    -
    - referenced by: - - PTF_describe_component_procedure - PTF_finish_component_procedure - PTF_fulfill_component_procedure - PTF_start_component_procedure - allocate_received_cursor_statement - alter_routine_statement - cast_function - drop_routine_statement - from_sql_function - map_function_specification - object_name - privilege_method_list - relative_function_specification - to_sql_function - transliteration_routine - - routine_type: - - - - - - - - ROUTINE* - - - FUNCTION - - - PROCEDURE - - - INSTANCE* - - - STATIC - - - CONSTRUCTOR* - - - METHOD - - - - - -
             ::= 'ROUTINE*'
    -
               | 'FUNCTION'
    -
               | 'PROCEDURE'
    -
               | ( 'INSTANCE*' | 'STATIC' | 'CONSTRUCTOR*' )? 'METHOD'
    -
    - referenced by: - - specific_routine_designator - - member_name: - - - - - - - - member_name_alternatives - - - data_type_list - - - - - - - referenced by: - - specific_routine_designator - - member_name_alternatives: - - - - - - - - schema_qualified_routine_name - - - method_name - - - - -
             ::= schema_qualified_routine_name
    -
               | method_name
    -
    - referenced by: - - member_name - - data_type_list: - - - - - - - - ( - - - data_type - - , - - - ) - - - - - -
             ::= '(' ( data_type ( ',' data_type )* )? ')'
    -
    - referenced by: - - member_name - specific_method_specification_designator - - collate_clause: - - - - - - - - COLLATE - - - collation_name - - - - -
             ::= 'COLLATE' collation_name
    -
    - referenced by: - - attribute_definition - character_factor - character_set_definition - column_definition - domain_definition - grouping_column_reference - predefined_type - row_pattern_partition_column - window_partition_column_reference - - constraint_name_definition: - - - - - - - - CONSTRAINT - - - constraint_name - - - - -
             ::= 'CONSTRAINT' constraint_name
    -
    - referenced by: - - column_constraint_definition - domain_constraint - table_constraint_definition - - constraint_characteristics: - - - - - - - - constraint_check_time - - NOT - - - DEFERRABLE* - - - NOT - - - DEFERRABLE* - - - constraint_check_time - - - constraint_enforcement - - - constraint_enforcement - - - - -
             ::= ( constraint_check_time ( 'NOT'? 'DEFERRABLE*' )? | 'NOT'? 'DEFERRABLE*' constraint_check_time? ) constraint_enforcement?
    -
               | constraint_enforcement
    -
    - referenced by: - - assertion_definition - column_constraint_definition - domain_constraint - table_constraint_definition - - constraint_check_time: - - - - - - - - INITIALLY* - - - DEFERRED* - - - IMMEDIATE* - - - - - -
             ::= 'INITIALLY*' ( 'DEFERRED*' | 'IMMEDIATE*' )
    -
    - referenced by: - - constraint_characteristics - - constraint_enforcement: - - - - - - - - NOT - - - ENFORCED* - - - - - -
             ::= 'NOT'? 'ENFORCED*'
    -
    - referenced by: - - alter_table_constraint_definition - constraint_characteristics - - aggregate_function: - - - - - - - - COUNT - - - ( - - - * - - - ) - - - general_set_function - - - binary_set_function - - - ordered_set_function - - - array_aggregate_function - - - row_pattern_count_function - - - JSON_aggregate_function - - - filter_clause - - - - - - - referenced by: - - set_function_specification - window_function_type - - general_set_function: - - - - - - - - set_function_type - - ( - - - set_quantifier - - - value_expression - - ) - - - - - -
             ::= set_function_type '(' set_quantifier? value_expression ')'
    -
    - referenced by: - - aggregate_function - - set_function_type: - - - - - - - - computational_operation - - - - -
             ::= computational_operation
    -
    - referenced by: - - general_set_function - - computational_operation: - - - - - - - - AVG - - - MAX - - - MIN - - - SUM - - - EVERY - - - ANY - - - SOME - - - COUNT - - - STDDEV_POP - - - STDDEV_SAMP - - - VAR_SAMP - - - VAR_POP - - - COLLECT - - - FUSION - - - INTERSECTION - - - - - -
             ::= 'AVG'
    -
               | 'MAX'
    -
               | 'MIN'
    -
               | 'SUM'
    -
               | 'EVERY'
    -
               | 'ANY'
    -
               | 'SOME'
    -
               | 'COUNT'
    -
               | 'STDDEV_POP'
    -
               | 'STDDEV_SAMP'
    -
               | 'VAR_SAMP'
    -
               | 'VAR_POP'
    -
               | 'COLLECT'
    -
               | 'FUSION'
    -
               | 'INTERSECTION'
    -
    - referenced by: - - set_function_type - - set_quantifier: - - - - - - - - DISTINCT - - - ALL - - - - - -
             ::= 'DISTINCT'
    -
               | 'ALL'
    -
    - referenced by: - - general_set_function - group_by_clause - listagg_set_function - query_specification - select_statement__single_row - - filter_clause: - - - - - - - - FILTER - - - ( - - - WHERE - - - search_condition - - ) - - - - - -
             ::= 'FILTER' '(' 'WHERE' search_condition ')'
    -
    - referenced by: - - aggregate_function - - binary_set_function: - - - - - - - - binary_set_function_type - - ( - - - dependent_variable_expression - - , - - - independent_variable_expression - - ) - - - - - - - - referenced by: - - aggregate_function - - binary_set_function_type: - - - - - - - - COVAR_POP - - - COVAR_SAMP - - - CORR - - - REGR_SLOPE - - - REGR_INTERCEPT - - - REGR_COUNT - - - REGR_R2 - - - REGR_AVGX - - - REGR_AVGY - - - REGR_SXX - - - REGR_SYY - - - REGR_SXY - - - - - -
             ::= 'COVAR_POP'
    -
               | 'COVAR_SAMP'
    -
               | 'CORR'
    -
               | 'REGR_SLOPE'
    -
               | 'REGR_INTERCEPT'
    -
               | 'REGR_COUNT'
    -
               | 'REGR_R2'
    -
               | 'REGR_AVGX'
    -
               | 'REGR_AVGY'
    -
               | 'REGR_SXX'
    -
               | 'REGR_SYY'
    -
               | 'REGR_SXY'
    -
    - referenced by: - - binary_set_function - - dependent_variable_expression: - - - - - - - - numeric_value_expression - - - - -
             ::= numeric_value_expression
    -
    - referenced by: - - binary_set_function - - independent_variable_expression: - - - - - - - - numeric_value_expression - - - - -
             ::= numeric_value_expression
    -
    - referenced by: - - binary_set_function - - ordered_set_function: - - - - - - - - hypothetical_set_function - - - inverse_distribution_function - - - listagg_set_function - - - - -
             ::= hypothetical_set_function
    -
               | inverse_distribution_function
    -
               | listagg_set_function
    -
    - referenced by: - - aggregate_function - - hypothetical_set_function: - - - - - - - - rank_function_type - - ( - - - hypothetical_set_function_value_expression_list - - ) - - - within_group_specification - - - - - - - referenced by: - - ordered_set_function - - within_group_specification: - - - - - - - - WITHIN - - - GROUP - - - ( - - - ORDER - - - BY - - - sort_specification_list - - ) - - - - - -
             ::= 'WITHIN' 'GROUP' '(' 'ORDER' 'BY' sort_specification_list ')'
    -
    - referenced by: - - hypothetical_set_function - inverse_distribution_function - listagg_set_function - - hypothetical_set_function_value_expression_list: - - - - - - - - value_expression - - , - - - - - -
             ::= value_expression ( ',' value_expression )*
    -
    - referenced by: - - hypothetical_set_function - - inverse_distribution_function: - - - - - - - - inverse_distribution_function_type - - ( - - - inverse_distribution_function_argument - - ) - - - within_group_specification - - - - - - - referenced by: - - ordered_set_function - - inverse_distribution_function_argument: - - - - - - - - numeric_value_expression - - - - -
             ::= numeric_value_expression
    -
    - referenced by: - - inverse_distribution_function - - inverse_distribution_function_type: - - - - - - - - PERCENTILE_CONT - - - PERCENTILE_DISC - - - - - -
             ::= 'PERCENTILE_CONT'
    -
               | 'PERCENTILE_DISC'
    -
    - referenced by: - - inverse_distribution_function - - listagg_set_function: - - - - - - - - LISTAGG - - - ( - - - set_quantifier - - - character_value_expression - - , - - - listagg_separator - - - listagg_overflow_clause - - ) - - - within_group_specification - - - - - - - referenced by: - - ordered_set_function - - listagg_separator: - - - - - - - - character_string_literal - - - - -
             ::= character_string_literal
    -
    - referenced by: - - listagg_set_function - - listagg_overflow_clause: - - - - - - - - ON - - - OVERFLOW* - - - overflow_behavior - - - - -
             ::= 'ON' 'OVERFLOW*' overflow_behavior
    -
    - referenced by: - - listagg_set_function - - overflow_behavior: - - - - - - - - ERROR* - - - TRUNCATE - - - listagg_truncation_filler - - - listagg_count_indication - - - - -
             ::= 'ERROR*'
    -
               | 'TRUNCATE' listagg_truncation_filler? listagg_count_indication
    -
    - referenced by: - - listagg_overflow_clause - - listagg_truncation_filler: - - - - - - - - character_string_literal - - - - -
             ::= character_string_literal
    -
    - referenced by: - - overflow_behavior - - listagg_count_indication: - - - - - - - - WITH - - - WITHOUT - - - COUNT - - - - - -
             ::= ( 'WITH' | 'WITHOUT' ) 'COUNT'
    -
    - referenced by: - - overflow_behavior - - array_aggregate_function: - - - - - - - - ARRAY_AGG - - - ( - - - value_expression - - ORDER - - - BY - - - sort_specification_list - - ) - - - - - -
             ::= 'ARRAY_AGG' '(' value_expression ( 'ORDER' 'BY' sort_specification_list )? ')'
    -
    - referenced by: - - aggregate_function - - row_pattern_count_function: - - - - - - - - COUNT - - - ( - - - row_pattern_variable_name - - . - - - * - - - ) - - - - - -
             ::= 'COUNT' '(' row_pattern_variable_name '.' '*' ')'
    -
    - referenced by: - - aggregate_function - - sort_specification_list: - - - - - - - - sort_specification - - , - - - - - -
             ::= sort_specification ( ',' sort_specification )*
    -
    - referenced by: - - JSON_array_aggregate_order_by_clause - array_aggregate_function - order_by_clause - row_pattern_order_by - window_order_clause - within_group_specification - - sort_specification: - - - - - - - - sort_key - - - ordering_specification - - - null_ordering - - - - - - - referenced by: - - sort_specification_list - - sort_key: - - - - - - - - value_expression - - - - - - referenced by: - - sort_specification - - ordering_specification: - - - - - - - - ASC* - - - DESC* - - - - - -
             ::= 'ASC*'
    -
               | 'DESC*'
    -
    - referenced by: - - sort_specification - table_argument_ordering_column - - null_ordering: - - - - - - - - NULLS* - - - FIRST* - - - LAST* - - - - - -
             ::= 'NULLS*' ( 'FIRST*' | 'LAST*' )
    -
    - referenced by: - - sort_specification - table_argument_ordering_column - - JSON_aggregate_function: - - - - - - - - JSON_object_aggregate_constructor - - - JSON_array_aggregate_constructor - - - - -
             ::= JSON_object_aggregate_constructor
    -
               | JSON_array_aggregate_constructor
    -
    - referenced by: - - aggregate_function - - JSON_object_aggregate_constructor: - - - - - - - - JSON_OBJECTAGG - - - ( - - - JSON_name_and_value - - - JSON_constructor_null_clause - - - JSON_key_uniqueness_constraint - - - JSON_output_clause - - ) - - - - - - - - referenced by: - - JSON_aggregate_function - - JSON_array_aggregate_constructor: - - - - - - - - JSON_ARRAYAGG - - - ( - - - JSON_value_expression - - - JSON_array_aggregate_order_by_clause - - - JSON_constructor_null_clause - - - JSON_output_clause - - ) - - - - - - - - referenced by: - - JSON_aggregate_function - - JSON_array_aggregate_order_by_clause: - - - - - - - - ORDER - - - BY - - - sort_specification_list - - - - -
             ::= 'ORDER' 'BY' sort_specification_list
    -
    - referenced by: - - JSON_array_aggregate_constructor - - JSON_value_expression: - - - - - - - - value_expression - - - JSON_input_clause - - - - -
             ::= value_expression JSON_input_clause?
    -
    - referenced by: - - JSON_argument - JSON_array_aggregate_constructor - JSON_array_constructor_by_enumeration - JSON_context_item - JSON_name_and_value - - JSON_input_clause: - - - - - - - - FORMAT* - - - JSON_representation - - - - -
             ::= 'FORMAT*' JSON_representation
    -
    - referenced by: - - JSON_array_constructor_by_query - JSON_predicate - JSON_value_expression - - JSON_output_clause: - - - - - - - - RETURNING* - - - data_type - - FORMAT* - - - JSON_representation - - - - -
             ::= 'RETURNING*' data_type ( 'FORMAT*' JSON_representation )?
    -
    - referenced by: - - JSON_array_aggregate_constructor - JSON_array_constructor_by_enumeration - JSON_array_constructor_by_query - JSON_object_aggregate_constructor - JSON_object_constructor - JSON_query - - JSON_representation: - - - - - - - - JSON* - - - ENCODING* - - - UTF8 - - - UTF16 - - - UTF32 - - - !! See the Syntax Rules. - - - - - -
             ::= 'JSON*' ( 'ENCODING*' ( 'UTF8' | 'UTF16' | 'UTF32' ) )?
    -
               | '!! See the Syntax Rules.'
    -
    - referenced by: - - JSON_input_clause - JSON_output_clause - JSON_table_formatted_column_definition - - JSON_API_common_syntax: - - - - - - - - JSON_context_item - - , - - - JSON_path_specification - - AS - - - JSON_table_path_name - - - JSON_passing_clause - - - - - - - referenced by: - - JSON_exists_predicate - JSON_query - JSON_table - JSON_table_primitive - JSON_value_function - - JSON_context_item: - - - - - - - - JSON_value_expression - - - - -
             ::= JSON_value_expression
    -
    - referenced by: - - JSON_API_common_syntax - - JSON_path_specification: - - - - - - - - character_string_literal - - - - -
             ::= character_string_literal
    -
    - referenced by: - - JSON_API_common_syntax - JSON_table_column_path_specification - JSON_table_nested_path_specification - - JSON_passing_clause: - - - - - - - - PASSING* - - - JSON_argument - - , - - - - - -
             ::= 'PASSING*' JSON_argument ( ',' JSON_argument )*
    -
    - referenced by: - - JSON_API_common_syntax - - JSON_argument: - - - - - - - - JSON_value_expression - - AS - - - identifier - - - - -
             ::= JSON_value_expression 'AS' identifier
    -
    - referenced by: - - JSON_passing_clause - - schema_definition: - - - - - - - - CREATE - - - SCHEMA* - - - schema_name_clause - - - schema_character_set_or_path - - - schema_element - - - - -
             ::= 'CREATE' 'SCHEMA*' schema_name_clause schema_character_set_or_path? schema_element*
    -
    - referenced by: - - SQL_schema_definition_statement - - schema_character_set_or_path: - - - - - - - - schema_character_set_specification - - - schema_path_specification - - - schema_path_specification - - - schema_character_set_specification - - - - - - - - referenced by: - - schema_definition - - schema_name_clause: - - - - - - - - schema_name - - AUTHORIZATION - - - schema_authorization_identifier - - AUTHORIZATION - - - schema_authorization_identifier - - - - -
             ::= schema_name ( 'AUTHORIZATION' schema_authorization_identifier )?
    -
               | 'AUTHORIZATION' schema_authorization_identifier
    -
    - referenced by: - - schema_definition - - schema_authorization_identifier: - - - - - - - - authorization_identifier - - - - -
             ::= authorization_identifier
    -
    - referenced by: - - schema_name_clause - - schema_character_set_specification: - - - - - - - - DEFAULT - - - CHARACTER - - - SET - - - character_set_specification - - - - -
             ::= 'DEFAULT' 'CHARACTER' 'SET' character_set_specification
    -
    - referenced by: - - schema_character_set_or_path - - schema_path_specification: - - - - - - - - path_specification - - - - -
             ::= path_specification
    -
    - referenced by: - - schema_character_set_or_path - - schema_element: - - - - - - - - table_definition - - - view_definition - - - domain_definition - - - character_set_definition - - - collation_definition - - - transliteration_definition - - - assertion_definition - - - trigger_definition - - - user_defined_type_definition - - - user_defined_cast_definition - - - user_defined_ordering_definition - - - transform_definition - - - schema_routine - - - sequence_generator_definition - - - grant_statement - - - role_definition - - - - -
             ::= table_definition
    -
               | view_definition
    -
               | domain_definition
    -
               | character_set_definition
    -
               | collation_definition
    -
               | transliteration_definition
    -
               | assertion_definition
    -
               | trigger_definition
    -
               | user_defined_type_definition
    -
               | user_defined_cast_definition
    -
               | user_defined_ordering_definition
    -
               | transform_definition
    -
               | schema_routine
    -
               | sequence_generator_definition
    -
               | grant_statement
    -
               | role_definition
    -
    - referenced by: - - schema_definition - - drop_schema_statement: - - - - - - - - DROP - - - SCHEMA* - - - schema_name - - - drop_behavior - - - - -
             ::= 'DROP' 'SCHEMA*' schema_name drop_behavior
    -
    - referenced by: - - SQL_schema_manipulation_statement - - drop_behavior: - - - - - - - - CASCADE* - - - RESTRICT* - - - - - -
             ::= 'CASCADE*'
    -
               | 'RESTRICT*'
    -
    - referenced by: - - drop_assertion_statement - drop_collation_statement - drop_column_definition - drop_column_scope_clause - drop_data_type_statement - drop_domain_statement - drop_routine_statement - drop_schema_statement - drop_sequence_generator_statement - drop_system_versioning_clause - drop_table_constraint_definition - drop_table_period_definition - drop_table_statement - drop_transform_element_list - drop_transform_statement - drop_user_defined_cast_statement - drop_user_defined_ordering_statement - drop_view_statement - revoke_privilege_statement - revoke_role_statement - - table_definition: - - - - - - - - CREATE - - - table_scope - - TABLE - - - table_name - - - table_contents_source - - WITH - - - system_versioning_clause - - ON - - - COMMIT - - - table_commit_action - - ROWS - - - - - -
             ::= 'CREATE' table_scope? 'TABLE' table_name table_contents_source ( 'WITH' system_versioning_clause )? ( 'ON' 'COMMIT' table_commit_action 'ROWS' )?
    -
    - referenced by: - - SQL_schema_definition_statement - schema_element - - table_contents_source: - - - - - - - - table_element_list - - - typed_table_clause - - - as_subquery_clause - - - - -
             ::= table_element_list
    -
               | typed_table_clause
    -
               | as_subquery_clause
    -
    - referenced by: - - table_definition - - table_scope: - - - - - - - - global_or_local - - TEMPORARY* - - - - - -
             ::= global_or_local 'TEMPORARY*'
    -
    - referenced by: - - table_definition - - global_or_local: - - - - - - - - GLOBAL - - - LOCAL - - - - - -
             ::= 'GLOBAL'
    -
               | 'LOCAL'
    -
    - referenced by: - - table_scope - - system_versioning_clause: - - - - - - - - SYSTEM - - - VERSIONING - - - - - -
             ::= 'SYSTEM' 'VERSIONING'
    -
    - referenced by: - - add_system_versioning_clause - table_definition - - table_commit_action: - - - - - - - - PRESERVE* - - - DELETE - - - - - -
             ::= 'PRESERVE*'
    -
               | 'DELETE'
    -
    - referenced by: - - table_definition - temporary_table_declaration - - table_element_list: - - - - - - - - ( - - - table_element - - , - - - ) - - - - - -
             ::= '(' table_element ( ',' table_element )* ')'
    -
    - referenced by: - - table_contents_source - temporary_table_declaration - - table_element: - - - - - - - - column_definition - - - table_period_definition - - - table_constraint_definition - - - like_clause - - - - -
             ::= column_definition
    -
               | table_period_definition
    -
               | table_constraint_definition
    -
               | like_clause
    -
    - referenced by: - - table_element_list - - typed_table_clause: - - - - - - - - OF - - - path_resolved_user_defined_type_name - - - subtable_clause - - - typed_table_element_list - - - - - - - referenced by: - - table_contents_source - - typed_table_element_list: - - - - - - - - ( - - - typed_table_element - - , - - - ) - - - - - -
             ::= '(' typed_table_element ( ',' typed_table_element )* ')'
    -
    - referenced by: - - typed_table_clause - - typed_table_element: - - - - - - - - column_options - - - table_constraint_definition - - - self_referencing_column_specification - - - - -
             ::= column_options
    -
               | table_constraint_definition
    -
    -
    - referenced by: - - typed_table_element_list - - self_referencing_column_specification: - - - - - - - - REF - - - IS - - - self_referencing_column_name - - - reference_generation - - - - -
             ::= 'REF' 'IS' self_referencing_column_name reference_generation?
    -
    - referenced by: - - typed_table_element - view_element - - reference_generation: - - - - - - - - SYSTEM - - - USER - - - GENERATED* - - - DERIVED* - - - - - -
             ::= ( 'SYSTEM' | 'USER' ) 'GENERATED*'
    -
               | 'DERIVED*'
    -
    - referenced by: - - self_referencing_column_specification - - self_referencing_column_name: - - - - - - - - column_name - - - - -
             ::= column_name
    -
    - referenced by: - - self_referencing_column_specification - - column_options: - - - - - - - - column_name - - WITH - - - OPTIONS* - - - column_option_list - - - - -
             ::= column_name 'WITH' 'OPTIONS*' column_option_list
    -
    - referenced by: - - typed_table_element - - column_option_list: - - - - - - - - scope_clause - - - default_clause - - - column_constraint_definition - - - - - - - referenced by: - - column_options - - subtable_clause: - - - - - - - - UNDER* - - - supertable_clause - - - - -
             ::= 'UNDER*' supertable_clause
    -
    - referenced by: - - typed_table_clause - - supertable_clause: - - - - - - - - supertable_name - - - - -
             ::= supertable_name
    -
    - referenced by: - - subtable_clause - - supertable_name: - - - - - - - - table_name - - - - -
             ::= table_name
    -
    - referenced by: - - supertable_clause - - like_clause: - - - - - - - - LIKE - - - table_name - - - like_options - - - - -
             ::= 'LIKE' table_name like_options?
    -
    - referenced by: - - table_element - - like_options: - - - - - - - - like_option - - - - -
             ::= like_option+
    -
    - referenced by: - - like_clause - - like_option: - - - - - - - - identity_option - - - column_default_option - - - generation_option - - - - -
             ::= identity_option
    -
               | column_default_option
    -
               | generation_option
    -
    - referenced by: - - like_options - - identity_option: - - - - - - - - INCLUDING* - - - EXCLUDING* - - - IDENTITY - - - - - -
             ::= ( 'INCLUDING*' | 'EXCLUDING*' ) 'IDENTITY'
    -
    - referenced by: - - like_option - - column_default_option: - - - - - - - - INCLUDING* - - - EXCLUDING* - - - DEFAULTS* - - - - - -
             ::= ( 'INCLUDING*' | 'EXCLUDING*' ) 'DEFAULTS*'
    -
    - referenced by: - - like_option - - generation_option: - - - - - - - - INCLUDING* - - - EXCLUDING* - - - GENERATED* - - - - - -
             ::= ( 'INCLUDING*' | 'EXCLUDING*' ) 'GENERATED*'
    -
    - referenced by: - - like_option - - as_subquery_clause: - - - - - - - - ( - - - column_name_list - - ) - - - AS - - - table_subquery - - - with_or_without_data - - - - -
             ::= ( '(' column_name_list ')' )? 'AS' table_subquery with_or_without_data
    -
    - referenced by: - - table_contents_source - - with_or_without_data: - - - - - - - - WITH - - - NO - - - DATA* - - - - - -
             ::= 'WITH' 'NO'? 'DATA*'
    -
    - referenced by: - - as_subquery_clause - - table_period_definition: - - - - - - - - system_or_application_time_period_specification - - ( - - - period_begin_column_name - - , - - - period_end_column_name - - ) - - - - - - - - referenced by: - - add_table_period_definition - table_element - - system_or_application_time_period_specification: - - - - - - - - system_time_period_specification - - - application_time_period_specification - - - - -
             ::= system_time_period_specification
    -
    -
    - referenced by: - - drop_table_period_definition - table_period_definition - - system_time_period_specification: - - - - - - - - PERIOD - - - FOR - - - SYSTEM_TIME - - - - - -
             ::= 'PERIOD' 'FOR' 'SYSTEM_TIME'
    -
    - referenced by: - - system_or_application_time_period_specification - - application_time_period_specification: - - - - - - - - PERIOD - - - FOR - - - application_time_period_name - - - - -
             ::= 'PERIOD' 'FOR' application_time_period_name
    -
    - referenced by: - - system_or_application_time_period_specification - - application_time_period_name: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - application_time_period_specification - delete_statement__searched - referenced_period_specification - referencing_period_specification - update_statement__searched - without_overlap_specification - - period_begin_column_name: - - - - - - - - column_name - - - - -
             ::= column_name
    -
    - referenced by: - - table_period_definition - - period_end_column_name: - - - - - - - - column_name - - - - -
             ::= column_name
    -
    - referenced by: - - table_period_definition - - column_definition: - - - - - - - - column_name - - - data_type_or_domain_name - - - default_clause - - - identity_column_specification - - - generation_clause - - - system_time_period_start_column_specification - - - system_time_period_end_column_specification - - - column_constraint_definition - - - collate_clause - - - - - - - referenced by: - - add_column_definition - column_definition_1 - column_definition_2 - table_element - - data_type_or_domain_name: - - - - - - - - data_type - - - domain_name - - - - -
             ::= data_type
    -
               | domain_name
    -
    - referenced by: - - column_definition - - system_time_period_start_column_specification: - - - - - - - - timestamp_generation_rule - - AS - - - ROW - - - START - - - - - -
             ::= timestamp_generation_rule 'AS' 'ROW' 'START'
    -
    - referenced by: - - column_definition - - system_time_period_end_column_specification: - - - - - - - - timestamp_generation_rule - - AS - - - ROW - - - END - - - - - -
             ::= timestamp_generation_rule 'AS' 'ROW' 'END'
    -
    - referenced by: - - column_definition - - timestamp_generation_rule: - - - - - - - - GENERATED* - - - ALWAYS* - - - - - -
             ::= 'GENERATED*' 'ALWAYS*'
    -
    - referenced by: - - system_time_period_end_column_specification - system_time_period_start_column_specification - - column_constraint_definition: - - - - - - - - constraint_name_definition - - - column_constraint - - - constraint_characteristics - - - - - - - referenced by: - - column_definition - column_option_list - - column_constraint: - - - - - - - - NOT - - - NULL - - - unique_specification - - - references_specification - - - check_constraint_definition - - - - -
             ::= 'NOT' 'NULL'
    -
               | unique_specification
    -
               | references_specification
    -
               | check_constraint_definition
    -
    - referenced by: - - column_constraint_definition - - identity_column_specification: - - - - - - - - GENERATED* - - - ALWAYS* - - - BY - - - DEFAULT - - - AS - - - IDENTITY - - - ( - - - common_sequence_generator_options - - ) - - - - - -
             ::= 'GENERATED*' ( 'ALWAYS*' | 'BY' 'DEFAULT' ) 'AS' 'IDENTITY' ( '(' common_sequence_generator_options ')' )?
    -
    - referenced by: - - column_definition - - generation_clause: - - - - - - - - generation_rule - - AS - - - generation_expression - - - - -
             ::= generation_rule 'AS' generation_expression
    -
    - referenced by: - - column_definition - - generation_rule: - - - - - - - - GENERATED* - - - ALWAYS* - - - - - -
             ::= 'GENERATED*' 'ALWAYS*'
    -
    - referenced by: - - generation_clause - - generation_expression: - - - - - - - - ( - - - value_expression - - ) - - - - - -
             ::= '(' value_expression ')'
    -
    - referenced by: - - generation_clause - - default_clause: - - - - - - - - DEFAULT - - - default_option - - - - -
             ::= 'DEFAULT' default_option
    -
    - referenced by: - - attribute_default - column_definition - column_option_list - domain_definition - set_column_default_clause - set_domain_default_clause - - default_option: - - - - - - - - literal - - - datetime_value_function - - USER - - - CURRENT_USER - - - CURRENT_ROLE - - SESSION_USER - - - SYSTEM_USER - - - CURRENT_CATALOG - - - CURRENT_SCHEMA - - - CURRENT_PATH - - - implicitly_typed_value_specification - - - - -
             ::= literal
    -
               | datetime_value_function
    -
               | 'USER'
    -
               | 'CURRENT_USER'
    -
               | CURRENT_ROLE
    -
               | 'SESSION_USER'
    -
               | 'SYSTEM_USER'
    -
               | 'CURRENT_CATALOG'
    -
               | 'CURRENT_SCHEMA'
    -
               | CURRENT_PATH
    -
               | implicitly_typed_value_specification
    -
    - referenced by: - - default_clause - - table_constraint_definition: - - - - - - - - constraint_name_definition - - - table_constraint - - - constraint_characteristics - - - - - - - referenced by: - - add_table_constraint_definition - table_element - typed_table_element - - table_constraint: - - - - - - - - unique_constraint_definition - - - referential_constraint_definition - - - check_constraint_definition - - - - -
             ::= unique_constraint_definition
    -
               | referential_constraint_definition
    -
               | check_constraint_definition
    -
    - referenced by: - - table_constraint_definition - - unique_constraint_definition: - - - - - - - - unique_specification - - ( - - - unique_column_list - - , - - - without_overlap_specification - - ) - - - UNIQUE - - - VALUE - - - - - - -
               | 'UNIQUE' 'VALUE'?
    -
    - referenced by: - - table_constraint - - unique_specification: - - - - - - - - UNIQUE - - - PRIMARY - - - KEY* - - - - - -
             ::= 'UNIQUE'
    -
               | 'PRIMARY' 'KEY*'
    -
    - referenced by: - - column_constraint - unique_constraint_definition - - unique_column_list: - - - - - - - - column_name_list - - - - -
             ::= column_name_list
    -
    - referenced by: - - unique_constraint_definition - - without_overlap_specification: - - - - - - - - application_time_period_name - - WITHOUT - - - OVERLAPS - - - - - -
             ::= application_time_period_name 'WITHOUT' 'OVERLAPS'
    -
    - referenced by: - - unique_constraint_definition - - referential_constraint_definition: - - - - - - - - FOREIGN - - - KEY* - - - ( - - - referencing_column_list - - , - - - referencing_period_specification - - ) - - - references_specification - - - - -
             ::= 'FOREIGN' 'KEY*' '(' referencing_column_list ( ',' referencing_period_specification )? ')' references_specification
    -
    - referenced by: - - table_constraint - - references_specification: - - - - - - - - REFERENCES - - - referenced_table_and_columns - - MATCH - - - match_type - - - referential_triggered_action - - - - -
             ::= 'REFERENCES' referenced_table_and_columns ( 'MATCH' match_type )? referential_triggered_action?
    -
    - referenced by: - - column_constraint - referential_constraint_definition - - match_type: - - - - - - - - FULL - - - PARTIAL* - - - SIMPLE* - - - - - -
             ::= 'FULL'
    -
               | 'PARTIAL*'
    -
               | 'SIMPLE*'
    -
    - referenced by: - - references_specification - - referencing_column_list: - - - - - - - - column_name_list - - - - -
             ::= column_name_list
    -
    - referenced by: - - referential_constraint_definition - - referencing_period_specification: - - - - - - - - PERIOD - - - application_time_period_name - - - - -
             ::= 'PERIOD' application_time_period_name
    -
    - referenced by: - - referential_constraint_definition - - referenced_table_and_columns: - - - - - - - - table_name - - ( - - - referenced_column_list - - , - - - referenced_period_specification - - ) - - - - - -
             ::= table_name ( '(' referenced_column_list ( ',' referenced_period_specification )? ')' )?
    -
    - referenced by: - - references_specification - - referenced_column_list: - - - - - - - - column_name_list - - - - -
             ::= column_name_list
    -
    - referenced by: - - referenced_table_and_columns - - referenced_period_specification: - - - - - - - - PERIOD - - - application_time_period_name - - - - -
             ::= 'PERIOD' application_time_period_name
    -
    - referenced by: - - referenced_table_and_columns - - referential_triggered_action: - - - - - - - - update_rule - - - delete_rule - - - delete_rule - - - update_rule - - - - -
             ::= update_rule delete_rule?
    -
               | delete_rule update_rule?
    -
    - referenced by: - - references_specification - - update_rule: - - - - - - - - ON - - - UPDATE - - - referential_action - - - - -
             ::= 'ON' 'UPDATE' referential_action
    -
    - referenced by: - - referential_triggered_action - - delete_rule: - - - - - - - - ON - - - DELETE - - - referential_action - - - - -
             ::= 'ON' 'DELETE' referential_action
    -
    - referenced by: - - referential_triggered_action - - referential_action: - - - - - - - - CASCADE* - - - SET - - - NULL - - - DEFAULT - - - RESTRICT* - - - NO - - - ACTION* - - - - - -
             ::= 'CASCADE*'
    -
               | 'SET' ( 'NULL' | 'DEFAULT' )
    -
               | 'RESTRICT*'
    -
               | 'NO' 'ACTION*'
    -
    - referenced by: - - delete_rule - update_rule - - check_constraint_definition: - - - - - - - - CHECK - - - ( - - - search_condition - - ) - - - - - -
             ::= 'CHECK' '(' search_condition ')'
    -
    - referenced by: - - column_constraint - domain_constraint - table_constraint - - alter_table_statement: - - - - - - - - ALTER - - - TABLE - - - table_name - - - alter_table_action - - - - -
             ::= 'ALTER' 'TABLE' table_name alter_table_action
    -
    - referenced by: - - SQL_schema_manipulation_statement - - alter_table_action: - - - - - - - - add_column_definition - - - alter_column_definition - - - drop_column_definition - - - add_table_constraint_definition - - - alter_table_constraint_definition - - - drop_table_constraint_definition - - - add_table_period_definition - - - drop_table_period_definition - - - add_system_versioning_clause - - - drop_system_versioning_clause - - - - -
             ::= add_column_definition
    -
               | alter_column_definition
    -
               | drop_column_definition
    -
               | add_table_constraint_definition
    -
               | alter_table_constraint_definition
    -
               | drop_table_constraint_definition
    -
               | add_table_period_definition
    -
               | drop_table_period_definition
    -
               | add_system_versioning_clause
    -
               | drop_system_versioning_clause
    -
    - referenced by: - - alter_table_statement - - add_column_definition: - - - - - - - - ADD* - - - COLUMN - - - column_definition - - - - -
             ::= 'ADD*' 'COLUMN'? column_definition
    -
    - referenced by: - - alter_table_action - - alter_column_definition: - - - - - - - - ALTER - - - COLUMN - - - column_name - - - alter_column_action - - - - -
             ::= 'ALTER' 'COLUMN'? column_name alter_column_action
    -
    - referenced by: - - alter_table_action - - alter_column_action: - - - - - - - - set_column_default_clause - - - drop_column_default_clause - - - set_column_not_null_clause - - - drop_column_not_null_clause - - - add_column_scope_clause - - - drop_column_scope_clause - - - alter_column_data_type_clause - - - alter_identity_column_specification - - - drop_identity_property_clause - - - drop_column_generation_expression_clause - - - - -
             ::= set_column_default_clause
    -
               | drop_column_default_clause
    -
               | set_column_not_null_clause
    -
               | drop_column_not_null_clause
    -
               | add_column_scope_clause
    -
               | drop_column_scope_clause
    -
               | alter_column_data_type_clause
    -
               | alter_identity_column_specification
    -
               | drop_identity_property_clause
    -
    -
    - referenced by: - - alter_column_definition - - set_column_default_clause: - - - - - - - - SET - - - default_clause - - - - -
             ::= 'SET' default_clause
    -
    - referenced by: - - alter_column_action - - drop_column_default_clause: - - - - - - - - DROP - - - DEFAULT - - - - - -
             ::= 'DROP' 'DEFAULT'
    -
    - referenced by: - - alter_column_action - - set_column_not_null_clause: - - - - - - - - SET - - - NOT - - - NULL - - - - - -
             ::= 'SET' 'NOT' 'NULL'
    -
    - referenced by: - - alter_column_action - - drop_column_not_null_clause: - - - - - - - - DROP - - - NOT - - - NULL - - - - - -
             ::= 'DROP' 'NOT' 'NULL'
    -
    - referenced by: - - alter_column_action - - add_column_scope_clause: - - - - - - - - ADD* - - - scope_clause - - - - -
             ::= 'ADD*' scope_clause
    -
    - referenced by: - - alter_column_action - - drop_column_scope_clause: - - - - - - - - DROP - - - SCOPE - - - drop_behavior - - - - -
             ::= 'DROP' 'SCOPE' drop_behavior
    -
    - referenced by: - - alter_column_action - - alter_column_data_type_clause: - - - - - - - - SET - - - DATA* - - - TYPE* - - - data_type - - - - -
             ::= 'SET' 'DATA*' 'TYPE*' data_type
    -
    - referenced by: - - alter_column_action - - alter_identity_column_specification: - - - - - - - - set_identity_column_generation_clause - - - alter_identity_column_option - - - alter_identity_column_option - - - - - - - referenced by: - - alter_column_action - - set_identity_column_generation_clause: - - - - - - - - SET - - - GENERATED* - - - ALWAYS* - - - BY - - - DEFAULT - - - - - -
             ::= 'SET' 'GENERATED*' ( 'ALWAYS*' | 'BY' 'DEFAULT' )
    -
    - referenced by: - - alter_identity_column_specification - - alter_identity_column_option: - - - - - - - - alter_sequence_generator_restart_option - - SET - - - basic_sequence_generator_option - - - - - -
               | 'SET' basic_sequence_generator_option
    -
    - referenced by: - - alter_identity_column_specification - - drop_identity_property_clause: - - - - - - - - DROP - - - IDENTITY - - - - - -
             ::= 'DROP' 'IDENTITY'
    -
    - referenced by: - - alter_column_action - - drop_column_generation_expression_clause: - - - - - - - - DROP - - - EXPRESSION* - - - - - -
             ::= 'DROP' 'EXPRESSION*'
    -
    - referenced by: - - alter_column_action - - drop_column_definition: - - - - - - - - DROP - - - COLUMN - - - column_name - - - drop_behavior - - - - -
             ::= 'DROP' 'COLUMN'? column_name drop_behavior
    -
    - referenced by: - - alter_table_action - - add_table_constraint_definition: - - - - - - - - ADD* - - - table_constraint_definition - - - - -
             ::= 'ADD*' table_constraint_definition
    -
    - referenced by: - - alter_table_action - - alter_table_constraint_definition: - - - - - - - - ALTER - - - CONSTRAINT - - - constraint_name - - - constraint_enforcement - - - - -
             ::= 'ALTER' 'CONSTRAINT' constraint_name constraint_enforcement
    -
    - referenced by: - - alter_table_action - - drop_table_constraint_definition: - - - - - - - - DROP - - - CONSTRAINT - - - constraint_name - - - drop_behavior - - - - -
             ::= 'DROP' 'CONSTRAINT' constraint_name drop_behavior
    -
    - referenced by: - - alter_table_action - - add_table_period_definition: - - - - - - - - ADD* - - - table_period_definition - - - add_system_time_period_column_list - - - - - - - referenced by: - - alter_table_action - - add_system_time_period_column_list: - - - - - - - - ADD* - - - COLUMN - - - column_definition_1 - - ADD* - - - COLUMN - - - column_definition_2 - - - - -
             ::= 'ADD*' 'COLUMN'? column_definition_1 'ADD*' 'COLUMN'? column_definition_2
    -
    - referenced by: - - add_table_period_definition - - column_definition_1: - - - - - - - - column_definition - - - - -
             ::= column_definition
    -
    - referenced by: - - add_system_time_period_column_list - - column_definition_2: - - - - - - - - column_definition - - - - -
             ::= column_definition
    -
    - referenced by: - - add_system_time_period_column_list - - drop_table_period_definition: - - - - - - - - DROP - - - system_or_application_time_period_specification - - - drop_behavior - - - - - - - referenced by: - - alter_table_action - - add_system_versioning_clause: - - - - - - - - ADD* - - - system_versioning_clause - - - - -
             ::= 'ADD*' system_versioning_clause
    -
    - referenced by: - - alter_table_action - - drop_system_versioning_clause: - - - - - - - - DROP - - - SYSTEM - - - VERSIONING - - - drop_behavior - - - - -
             ::= 'DROP' 'SYSTEM' 'VERSIONING' drop_behavior
    -
    - referenced by: - - alter_table_action - - drop_table_statement: - - - - - - - - DROP - - - TABLE - - - table_name - - - drop_behavior - - - - -
             ::= 'DROP' 'TABLE' table_name drop_behavior
    -
    - referenced by: - - SQL_schema_manipulation_statement - - view_definition: - - - - - - - - CREATE - - - RECURSIVE - - - VIEW* - - - table_name - - - view_specification - - AS - - - query_expression - - WITH - - - levels_clause - - CHECK - - - OPTION* - - - - - -
             ::= 'CREATE' 'RECURSIVE'? 'VIEW*' table_name view_specification 'AS' query_expression ( 'WITH' levels_clause? 'CHECK' 'OPTION*' )?
    -
    - referenced by: - - SQL_schema_definition_statement - schema_element - - view_specification: - - - - - - - - regular_view_specification - - - referenceable_view_specification - - - - -
             ::= regular_view_specification
    -
               | referenceable_view_specification
    -
    - referenced by: - - view_definition - - regular_view_specification: - - - - - - - - ( - - - view_column_list - - ) - - - - - -
             ::= ( '(' view_column_list ')' )?
    -
    - referenced by: - - view_specification - - referenceable_view_specification: - - - - - - - - OF - - - path_resolved_user_defined_type_name - - - subview_clause - - - view_element_list - - - - - - - referenced by: - - view_specification - - subview_clause: - - - - - - - - UNDER* - - - table_name - - - - -
             ::= 'UNDER*' table_name
    -
    - referenced by: - - referenceable_view_specification - - view_element_list: - - - - - - - - ( - - - view_element - - , - - - ) - - - - - -
             ::= '(' view_element ( ',' view_element )* ')'
    -
    - referenced by: - - referenceable_view_specification - - view_element: - - - - - - - - self_referencing_column_specification - - - view_column_option - - - - - -
               | view_column_option
    -
    - referenced by: - - view_element_list - - view_column_option: - - - - - - - - column_name - - WITH - - - OPTIONS* - - - scope_clause - - - - -
             ::= column_name 'WITH' 'OPTIONS*' scope_clause
    -
    - referenced by: - - view_element - - levels_clause: - - - - - - - - CASCADED - - - LOCAL - - - - - -
             ::= 'CASCADED'
    -
               | 'LOCAL'
    -
    - referenced by: - - view_definition - - view_column_list: - - - - - - - - column_name_list - - - - -
             ::= column_name_list
    -
    - referenced by: - - regular_view_specification - - drop_view_statement: - - - - - - - - DROP - - - VIEW* - - - table_name - - - drop_behavior - - - - -
             ::= 'DROP' 'VIEW*' table_name drop_behavior
    -
    - referenced by: - - SQL_schema_manipulation_statement - - domain_definition: - - - - - - - - CREATE - - - DOMAIN* - - - domain_name - - AS - - - predefined_type - - - default_clause - - - domain_constraint - - - collate_clause - - - - -
             ::= 'CREATE' 'DOMAIN*' domain_name 'AS'? predefined_type default_clause? domain_constraint* collate_clause?
    -
    - referenced by: - - SQL_schema_definition_statement - schema_element - - domain_constraint: - - - - - - - - constraint_name_definition - - - check_constraint_definition - - - constraint_characteristics - - - - - - - referenced by: - - add_domain_constraint_definition - domain_definition - - alter_domain_statement: - - - - - - - - ALTER - - - DOMAIN* - - - domain_name - - - alter_domain_action - - - - -
             ::= 'ALTER' 'DOMAIN*' domain_name alter_domain_action
    -
    - referenced by: - - SQL_schema_manipulation_statement - - alter_domain_action: - - - - - - - - set_domain_default_clause - - - drop_domain_default_clause - - - add_domain_constraint_definition - - - drop_domain_constraint_definition - - - - -
             ::= set_domain_default_clause
    -
               | drop_domain_default_clause
    -
               | add_domain_constraint_definition
    -
               | drop_domain_constraint_definition
    -
    - referenced by: - - alter_domain_statement - - set_domain_default_clause: - - - - - - - - SET - - - default_clause - - - - -
             ::= 'SET' default_clause
    -
    - referenced by: - - alter_domain_action - - drop_domain_default_clause: - - - - - - - - DROP - - - DEFAULT - - - - - -
             ::= 'DROP' 'DEFAULT'
    -
    - referenced by: - - alter_domain_action - - add_domain_constraint_definition: - - - - - - - - ADD* - - - domain_constraint - - - - -
             ::= 'ADD*' domain_constraint
    -
    - referenced by: - - alter_domain_action - - drop_domain_constraint_definition: - - - - - - - - DROP - - - CONSTRAINT - - - constraint_name - - - - -
             ::= 'DROP' 'CONSTRAINT' constraint_name
    -
    - referenced by: - - alter_domain_action - - drop_domain_statement: - - - - - - - - DROP - - - DOMAIN* - - - domain_name - - - drop_behavior - - - - -
             ::= 'DROP' 'DOMAIN*' domain_name drop_behavior
    -
    - referenced by: - - SQL_schema_manipulation_statement - - character_set_definition: - - - - - - - - CREATE - - - CHARACTER - - - SET - - - character_set_name - - AS - - - character_set_source - - - collate_clause - - - - -
             ::= 'CREATE' 'CHARACTER' 'SET' character_set_name 'AS'? character_set_source collate_clause?
    -
    - referenced by: - - SQL_schema_definition_statement - schema_element - - character_set_source: - - - - - - - - GET - - - character_set_specification - - - - -
             ::= 'GET' character_set_specification
    -
    - referenced by: - - character_set_definition - - drop_character_set_statement: - - - - - - - - DROP - - - CHARACTER - - - SET - - - character_set_name - - - - -
             ::= 'DROP' 'CHARACTER' 'SET' character_set_name
    -
    - referenced by: - - SQL_schema_manipulation_statement - - collation_definition: - - - - - - - - CREATE - - - COLLATION* - - - collation_name - - FOR - - - character_set_specification - - FROM - - - existing_collation_name - - - pad_characteristic - - - - -
             ::= 'CREATE' 'COLLATION*' collation_name 'FOR' character_set_specification 'FROM' existing_collation_name pad_characteristic?
    -
    - referenced by: - - SQL_schema_definition_statement - schema_element - - existing_collation_name: - - - - - - - - collation_name - - - - -
             ::= collation_name
    -
    - referenced by: - - collation_definition - - pad_characteristic: - - - - - - - - NO - - - PAD* - - - PAD* - - - SPACE* - - - - - -
             ::= 'NO' 'PAD*'
    -
               | 'PAD*' 'SPACE*'
    -
    - referenced by: - - collation_definition - - drop_collation_statement: - - - - - - - - DROP - - - COLLATION* - - - collation_name - - - drop_behavior - - - - -
             ::= 'DROP' 'COLLATION*' collation_name drop_behavior
    -
    - referenced by: - - SQL_schema_manipulation_statement - - transliteration_definition: - - - - - - - - CREATE - - - TRANSLATION - - - transliteration_name - - FOR - - - source_character_set_specification - - TO - - - target_character_set_specification - - FROM - - - transliteration_source - - - - - - - referenced by: - - SQL_schema_definition_statement - schema_element - - source_character_set_specification: - - - - - - - - character_set_specification - - - - -
             ::= character_set_specification
    -
    - referenced by: - - transliteration_definition - - target_character_set_specification: - - - - - - - - character_set_specification - - - - -
             ::= character_set_specification
    -
    - referenced by: - - transliteration_definition - - transliteration_source: - - - - - - - - existing_transliteration_name - - - transliteration_routine - - - - -
             ::= existing_transliteration_name
    -
               | transliteration_routine
    -
    - referenced by: - - transliteration_definition - - existing_transliteration_name: - - - - - - - - transliteration_name - - - - -
             ::= transliteration_name
    -
    - referenced by: - - transliteration_source - - transliteration_routine: - - - - - - - - specific_routine_designator - - - - -
             ::= specific_routine_designator
    -
    - referenced by: - - transliteration_source - - drop_transliteration_statement: - - - - - - - - DROP - - - TRANSLATION - - - transliteration_name - - - - -
             ::= 'DROP' 'TRANSLATION' transliteration_name
    -
    - referenced by: - - SQL_schema_manipulation_statement - - assertion_definition: - - - - - - - - CREATE - - - ASSERTION* - - - constraint_name - - CHECK - - - ( - - - search_condition - - ) - - - constraint_characteristics - - - - -
             ::= 'CREATE' 'ASSERTION*' constraint_name 'CHECK' '(' search_condition ')' constraint_characteristics?
    -
    - referenced by: - - SQL_schema_definition_statement - schema_element - - drop_assertion_statement: - - - - - - - - DROP - - - ASSERTION* - - - constraint_name - - - drop_behavior - - - - -
             ::= 'DROP' 'ASSERTION*' constraint_name drop_behavior?
    -
    - referenced by: - - SQL_schema_manipulation_statement - - trigger_definition: - - - - - - - - CREATE - - - TRIGGER - - - trigger_name - - - trigger_action_time - - - trigger_event - - ON - - - table_name - - REFERENCING - - - transition_table_or_variable_list - - - triggered_action - - - - -
             ::= 'CREATE' 'TRIGGER' trigger_name trigger_action_time trigger_event 'ON' table_name ( 'REFERENCING' transition_table_or_variable_list )? triggered_action
    -
    - referenced by: - - SQL_schema_definition_statement - schema_element - - trigger_action_time: - - - - - - - - BEFORE* - - - AFTER* - - - INSTEAD* - - - OF - - - - - -
             ::= 'BEFORE*'
    -
               | 'AFTER*'
    -
               | 'INSTEAD*' 'OF'
    -
    - referenced by: - - trigger_definition - - trigger_event: - - - - - - - - INSERT - - - DELETE - - - UPDATE - - - OF - - - trigger_column_list - - - - -
             ::= 'INSERT'
    -
               | 'DELETE'
    -
               | 'UPDATE' ( 'OF' trigger_column_list )?
    -
    - referenced by: - - trigger_definition - - trigger_column_list: - - - - - - - - column_name_list - - - - -
             ::= column_name_list
    -
    - referenced by: - - trigger_event - - triggered_action: - - - - - - - - FOR - - - EACH - - - ROW - - - STATEMENT* - - - triggered_when_clause - - - triggered_SQL_statement - - - - -
             ::= ( 'FOR' 'EACH' ( 'ROW' | 'STATEMENT*' ) )? triggered_when_clause? triggered_SQL_statement
    -
    - referenced by: - - trigger_definition - - triggered_when_clause: - - - - - - - - WHEN - - - ( - - - search_condition - - ) - - - - - -
             ::= 'WHEN' '(' search_condition ')'
    -
    - referenced by: - - triggered_action - - triggered_SQL_statement: - - - - - - - - SQL_procedure_statement - - BEGIN - - - ATOMIC - - - SQL_procedure_statement - - ; - - - END - - - - - -
             ::= SQL_procedure_statement
    -
               | 'BEGIN' 'ATOMIC' ( SQL_procedure_statement ';' )+ 'END'
    -
    - referenced by: - - triggered_action - - transition_table_or_variable_list: - - - - - - - - transition_table_or_variable - - - - -
             ::= transition_table_or_variable+
    -
    - referenced by: - - trigger_definition - - transition_table_or_variable: - - - - - - - - OLD - - - ROW - - - AS - - - old_transition_variable_name - - TABLE - - - AS - - - old_transition_table_name - - NEW - - - ROW - - - AS - - - new_transition_variable_name - - TABLE - - - AS - - - new_transition_table_name - - - - -
             ::= 'OLD' ( 'ROW'? 'AS'? old_transition_variable_name | 'TABLE' 'AS'? old_transition_table_name )
    -
               | 'NEW' ( 'ROW'? 'AS'? new_transition_variable_name | 'TABLE' 'AS'? new_transition_table_name )
    -
    - referenced by: - - transition_table_or_variable_list - - old_transition_table_name: - - - - - - - - transition_table_name - - - - -
             ::= transition_table_name
    -
    - referenced by: - - transition_table_or_variable - - new_transition_table_name: - - - - - - - - transition_table_name - - - - -
             ::= transition_table_name
    -
    - referenced by: - - transition_table_or_variable - - transition_table_name: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - new_transition_table_name - old_transition_table_name - table_or_query_name - - old_transition_variable_name: - - - - - - - - correlation_name - - - - -
             ::= correlation_name
    -
    - referenced by: - - transition_table_or_variable - - new_transition_variable_name: - - - - - - - - correlation_name - - - - -
             ::= correlation_name
    -
    - referenced by: - - transition_table_or_variable - - drop_trigger_statement: - - - - - - - - DROP - - - TRIGGER - - - trigger_name - - - - -
             ::= 'DROP' 'TRIGGER' trigger_name
    -
    - referenced by: - - SQL_schema_manipulation_statement - - user_defined_type_definition: - - - - - - - - CREATE - - - TYPE* - - - user_defined_type_body - - - - -
             ::= 'CREATE' 'TYPE*' user_defined_type_body
    -
    - referenced by: - - SQL_schema_definition_statement - schema_element - - user_defined_type_body: - - - - - - - - schema_resolved_user_defined_type_name - - - subtype_clause - - AS - - - representation - - - user_defined_type_option_list - - - method_specification_list - - - - - - - referenced by: - - user_defined_type_definition - - user_defined_type_option_list: - - - - - - - - user_defined_type_option - - - - -
             ::= user_defined_type_option+
    -
    - referenced by: - - user_defined_type_body - - user_defined_type_option: - - - - - - - - instantiable_clause - - - finality - - - reference_type_specification - - - cast_to_ref - - - cast_to_type - - - cast_to_distinct - - - cast_to_source - - - - -
             ::= instantiable_clause
    -
               | finality
    -
               | reference_type_specification
    -
               | cast_to_ref
    -
               | cast_to_type
    -
               | cast_to_distinct
    -
               | cast_to_source
    -
    - referenced by: - - user_defined_type_option_list - - subtype_clause: - - - - - - - - UNDER* - - - supertype_name - - - - -
             ::= 'UNDER*' supertype_name
    -
    - referenced by: - - user_defined_type_body - - supertype_name: - - - - - - - - path_resolved_user_defined_type_name - - - - - - - referenced by: - - subtype_clause - - representation: - - - - - - - - predefined_type - - - collection_type - - - member_list - - - - -
             ::= predefined_type
    -
               | collection_type
    -
               | member_list
    -
    - referenced by: - - user_defined_type_body - - member_list: - - - - - - - - ( - - - member - - , - - - ) - - - - - -
             ::= '(' member ( ',' member )* ')'
    -
    - referenced by: - - representation - - member: - - - - - - - - attribute_definition - - - - - - referenced by: - - member_list - - instantiable_clause: - - - - - - - - NOT - - - INSTANTIABLE* - - - - - -
             ::= 'NOT'? 'INSTANTIABLE*'
    -
    - referenced by: - - user_defined_type_option - - finality: - - - - - - - - NOT - - - FINAL* - - - - -
    finality ::= 'NOT'? 'FINAL*'
    -
    - referenced by: - - user_defined_type_option - - reference_type_specification: - - - - - - - - user_defined_representation - - - derived_representation - - - system_generated_representation - - - - -
             ::= user_defined_representation
    -
               | derived_representation
    -
               | system_generated_representation
    -
    - referenced by: - - user_defined_type_option - - user_defined_representation: - - - - - - - - REF - - - USING - - - predefined_type - - - - -
             ::= 'REF' 'USING' predefined_type
    -
    - referenced by: - - reference_type_specification - - derived_representation: - - - - - - - - REF - - - FROM - - - list_of_attributes - - - - -
             ::= 'REF' 'FROM' list_of_attributes
    -
    - referenced by: - - reference_type_specification - - system_generated_representation: - - - - - - - - REF - - - IS - - - SYSTEM - - - GENERATED* - - - - - -
             ::= 'REF' 'IS' 'SYSTEM' 'GENERATED*'
    -
    - referenced by: - - reference_type_specification - - cast_to_ref: - - - - - - - - CAST - - - ( - - - SOURCE* - - - AS - - - REF - - - ) - - - WITH - - - cast_to_ref_identifier - - - - -
             ::= 'CAST' '(' 'SOURCE*' 'AS' 'REF' ')' 'WITH' cast_to_ref_identifier
    -
    - referenced by: - - user_defined_type_option - - cast_to_ref_identifier: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - cast_to_ref - - cast_to_type: - - - - - - - - CAST - - - ( - - - REF - - - AS - - - SOURCE* - - - ) - - - WITH - - - cast_to_type_identifier - - - - -
             ::= 'CAST' '(' 'REF' 'AS' 'SOURCE*' ')' 'WITH' cast_to_type_identifier
    -
    - referenced by: - - user_defined_type_option - - cast_to_type_identifier: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - cast_to_type - - list_of_attributes: - - - - - - - - ( - - - attribute_name - - , - - - ) - - - - - -
             ::= '(' attribute_name ( ',' attribute_name )* ')'
    -
    - referenced by: - - derived_representation - - cast_to_distinct: - - - - - - - - CAST - - - ( - - - SOURCE* - - - AS - - - DISTINCT - - - ) - - - WITH - - - cast_to_distinct_identifier - - - - -
             ::= 'CAST' '(' 'SOURCE*' 'AS' 'DISTINCT' ')' 'WITH' cast_to_distinct_identifier
    -
    - referenced by: - - user_defined_type_option - - cast_to_distinct_identifier: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - cast_to_distinct - - cast_to_source: - - - - - - - - CAST - - - ( - - - DISTINCT - - - AS - - - SOURCE* - - - ) - - - WITH - - - cast_to_source_identifier - - - - -
             ::= 'CAST' '(' 'DISTINCT' 'AS' 'SOURCE*' ')' 'WITH' cast_to_source_identifier
    -
    - referenced by: - - user_defined_type_option - - cast_to_source_identifier: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - cast_to_source - - method_specification_list: - - - - - - - - method_specification - - , - - - - - -
             ::= method_specification ( ',' method_specification )*
    -
    - referenced by: - - user_defined_type_body - - method_specification: - - - - - - - - original_method_specification - - - overriding_method_specification - - - - -
             ::= original_method_specification
    -
               | overriding_method_specification
    -
    - referenced by: - - method_specification_list - - original_method_specification: - - - - - - - - partial_method_specification - - SELF* - - - AS - - - RESULT - - - SELF* - - - AS - - - LOCATOR* - - - method_characteristics - - - - -
             ::= partial_method_specification 'SELF*' 'AS' 'RESULT' 'SELF*' 'AS' 'LOCATOR*' method_characteristics?
    -
    - referenced by: - - add_original_method_specification - method_specification - - overriding_method_specification: - - - - - - - - OVERRIDING* - - - partial_method_specification - - - - -
             ::= 'OVERRIDING*' partial_method_specification
    -
    - referenced by: - - add_overriding_method_specification - method_specification - - partial_method_specification: - - - - - - - - INSTANCE* - - - STATIC - - - CONSTRUCTOR* - - - METHOD - - - method_name - - - SQL_parameter_declaration_list - - - returns_clause - - SPECIFIC - - - specific_method_name - - - - -
             ::= ( 'INSTANCE*' | 'STATIC' | 'CONSTRUCTOR*' ) 'METHOD' method_name SQL_parameter_declaration_list returns_clause 'SPECIFIC' specific_method_name
    -
    - referenced by: - - original_method_specification - overriding_method_specification - - specific_method_name: - - - - - - - - schema_name - - . - - - qualified_identifier - - - - -
             ::= ( schema_name '.' )? qualified_identifier
    -
    - referenced by: - - method_specification_designator - partial_method_specification - - method_characteristics: - - - - - - - - method_characteristic - - - - -
             ::= method_characteristic+
    -
    - referenced by: - - original_method_specification - - method_characteristic: - - - - - - - - language_clause - - - parameter_style_clause - - - deterministic_characteristic - - - SQL_data_access_indication - - - null_call_clause - - - - -
             ::= language_clause
    -
               | parameter_style_clause
    -
               | deterministic_characteristic
    -
               | SQL_data_access_indication
    -
               | null_call_clause
    -
    - referenced by: - - method_characteristics - - attribute_definition: - - - - - - - - attribute_name - - - data_type - - - attribute_default - - - collate_clause - - - - - - - referenced by: - - add_attribute_definition - member - - attribute_default: - - - - - - - - default_clause - - - - -
             ::= default_clause
    -
    - referenced by: - - attribute_definition - - alter_type_statement: - - - - - - - - ALTER - - - TYPE* - - - schema_resolved_user_defined_type_name - - - alter_type_action - - - - -
             ::= 'ALTER' 'TYPE*' schema_resolved_user_defined_type_name alter_type_action
    -
    - referenced by: - - SQL_schema_manipulation_statement - - alter_type_action: - - - - - - - - add_attribute_definition - - - drop_attribute_definition - - - add_original_method_specification - - - add_overriding_method_specification - - - drop_method_specification - - - - -
             ::= add_attribute_definition
    -
               | drop_attribute_definition
    -
               | add_original_method_specification
    -
               | add_overriding_method_specification
    -
               | drop_method_specification
    -
    - referenced by: - - alter_type_statement - - add_attribute_definition: - - - - - - - - ADD* - - - ATTRIBUTE* - - - attribute_definition - - - - -
             ::= 'ADD*' 'ATTRIBUTE*' attribute_definition
    -
    - referenced by: - - alter_type_action - - drop_attribute_definition: - - - - - - - - DROP - - - ATTRIBUTE* - - - attribute_name - - RESTRICT* - - - - - -
             ::= 'DROP' 'ATTRIBUTE*' attribute_name 'RESTRICT*'
    -
    - referenced by: - - alter_type_action - - add_original_method_specification: - - - - - - - - ADD* - - - original_method_specification - - - - -
             ::= 'ADD*' original_method_specification
    -
    - referenced by: - - alter_type_action - - add_overriding_method_specification: - - - - - - - - ADD* - - - overriding_method_specification - - - - -
             ::= 'ADD*' overriding_method_specification
    -
    - referenced by: - - alter_type_action - - drop_method_specification: - - - - - - - - DROP - - - specific_method_specification_designator - - RESTRICT* - - - - - -
             ::= 'DROP' specific_method_specification_designator 'RESTRICT*'
    -
    - referenced by: - - alter_type_action - - specific_method_specification_designator: - - - - - - - - INSTANCE* - - - STATIC - - - CONSTRUCTOR* - - - METHOD - - - method_name - - - data_type_list - - - - -
             ::= ( 'INSTANCE*' | 'STATIC' | 'CONSTRUCTOR*' )? 'METHOD' method_name data_type_list
    -
    - referenced by: - - drop_method_specification - - drop_data_type_statement: - - - - - - - - DROP - - - TYPE* - - - schema_resolved_user_defined_type_name - - - drop_behavior - - - - -
             ::= 'DROP' 'TYPE*' schema_resolved_user_defined_type_name drop_behavior
    -
    - referenced by: - - SQL_schema_manipulation_statement - - SQL_invoked_routine: - - - - - - - - schema_routine - - - - -
             ::= schema_routine
    -
    - referenced by: - - SQL_schema_definition_statement - - schema_routine: - - - - - - - - schema_procedure - - - schema_function - - - - -
             ::= schema_procedure
    -
               | schema_function
    -
    - referenced by: - - SQL_invoked_routine - schema_element - - schema_procedure: - - - - - - - - CREATE - - - SQL_invoked_procedure - - - - -
             ::= 'CREATE' SQL_invoked_procedure
    -
    - referenced by: - - schema_routine - - schema_function: - - - - - - - - CREATE - - - SQL_invoked_function - - - - -
             ::= 'CREATE' SQL_invoked_function
    -
    - referenced by: - - schema_routine - - SQL_invoked_procedure: - - - - - - - - PROCEDURE - - - schema_qualified_routine_name - - - SQL_parameter_declaration_list - - - routine_characteristics - - - routine_body - - - - - - - referenced by: - - schema_procedure - - SQL_invoked_function: - - - - - - - - function_specification - - - method_specification_designator - - - routine_body - - - - - - - referenced by: - - schema_function - - SQL_parameter_declaration_list: - - - - - - - - ( - - - SQL_parameter_declaration - - , - - - ) - - - - - -
             ::= '(' ( SQL_parameter_declaration ( ',' SQL_parameter_declaration )* )? ')'
    -
    - referenced by: - - SQL_invoked_procedure - function_specification - method_specification_designator - partial_method_specification - - SQL_parameter_declaration: - - - - - - - - parameter_mode - - - SQL_parameter_name - - - parameter_type - - RESULT - - - DEFAULT - - - parameter_default - - - - -
             ::= parameter_mode? SQL_parameter_name? parameter_type 'RESULT'? ( 'DEFAULT' parameter_default )?
    -
    - referenced by: - - SQL_parameter_declaration_list - private_parameter_declaration_list - - parameter_default: - - - - - - - - value_expression - - - contextually_typed_value_specification - - - descriptor_value_constructor - - - - -
             ::= value_expression
    - -
               | descriptor_value_constructor
    -
    - referenced by: - - SQL_parameter_declaration - - parameter_mode: - - - - - - - - IN - - - OUT - - - INOUT - - - - - -
             ::= 'IN'
    -
               | 'OUT'
    -
               | 'INOUT'
    -
    - referenced by: - - SQL_parameter_declaration - - parameter_type: - - - - - - - - data_type - - - locator_indication - - - generic_table_parameter_type - - DESCRIPTOR* - - - - - -
             ::= data_type locator_indication?
    -
               | generic_table_parameter_type
    -
               | 'DESCRIPTOR*'
    -
    - referenced by: - - SQL_parameter_declaration - - generic_table_parameter_type: - - - - - - - - TABLE - - - pass_through_option - - - generic_table_semantics - - - - -
             ::= 'TABLE' pass_through_option? generic_table_semantics?
    -
    - referenced by: - - parameter_type - - pass_through_option: - - - - - - - - NO - - - PASS* - - - THROUGH* - - - - - -
             ::= 'NO'? 'PASS*' 'THROUGH*'
    -
    - referenced by: - - generic_table_parameter_type - - generic_table_semantics: - - - - - - - - WITH - - - ROW - - - SEMANTICS - - SET - - - SEMANTICS - - - generic_table_pruning - - - - -
             ::= 'WITH' ( 'ROW' SEMANTICS | 'SET' SEMANTICS generic_table_pruning? )
    -
    - referenced by: - - generic_table_parameter_type - - generic_table_pruning: - - - - - - - - PRUNE* - - - KEEP* - - - ON - - - EMPTY - - - - - -
             ::= ( 'PRUNE*' | 'KEEP*' ) 'ON' 'EMPTY'
    -
    - referenced by: - - generic_table_semantics - - locator_indication: - - - - - - - - AS - - - LOCATOR* - - - - - -
             ::= 'AS' 'LOCATOR*'
    -
    - referenced by: - - host_parameter_data_type - parameter_type - result_cast_from_type - returns_data_type - - function_specification: - - - - - - - - FUNCTION - - - schema_qualified_routine_name - - - SQL_parameter_declaration_list - - - returns_clause - - - routine_characteristics - - - dispatch_clause - - - - - - - referenced by: - - SQL_invoked_function - - method_specification_designator: - - - - - - - - SPECIFIC - - - METHOD - - - specific_method_name - - INSTANCE* - - - STATIC - - - CONSTRUCTOR* - - - METHOD - - - method_name - - - SQL_parameter_declaration_list - - - returns_clause - - FOR - - - schema_resolved_user_defined_type_name - - - - -
             ::= 'SPECIFIC' 'METHOD' specific_method_name
    -
               | ( 'INSTANCE*' | 'STATIC' | 'CONSTRUCTOR*' ) 'METHOD' method_name SQL_parameter_declaration_list returns_clause? 'FOR' schema_resolved_user_defined_type_name
    -
    - referenced by: - - SQL_invoked_function - - routine_characteristics: - - - - - - - - routine_characteristic - - - - -
             ::= routine_characteristic*
    -
    - referenced by: - - SQL_invoked_procedure - function_specification - - routine_characteristic: - - - - - - - - language_clause - - - parameter_style_clause - - SPECIFIC - - - specific_name - - - deterministic_characteristic - - - SQL_data_access_indication - - - null_call_clause - - - returned_result_sets_characteristic - - - savepoint_level_indication - - - - -
             ::= language_clause
    -
               | parameter_style_clause
    -
               | 'SPECIFIC' specific_name
    -
               | deterministic_characteristic
    -
               | SQL_data_access_indication
    -
               | null_call_clause
    -
               | returned_result_sets_characteristic
    -
               | savepoint_level_indication
    -
    - referenced by: - - routine_characteristics - - savepoint_level_indication: - - - - - - - - NEW - - - OLD - - - SAVEPOINT - - - LEVEL* - - - - - -
             ::= ( 'NEW' | 'OLD' ) 'SAVEPOINT' 'LEVEL*'
    -
    - referenced by: - - routine_characteristic - - returned_result_sets_characteristic: - - - - - - - - DYNAMIC - - - RESULT - - - SETS* - - - maximum_returned_result_sets - - - - -
             ::= 'DYNAMIC' 'RESULT' 'SETS*' maximum_returned_result_sets
    -
    - referenced by: - - alter_routine_characteristic - routine_characteristic - - parameter_style_clause: - - - - - - - - PARAMETER - - - STYLE* - - - parameter_style - - - - -
             ::= 'PARAMETER' 'STYLE*' parameter_style
    -
    - referenced by: - - alter_routine_characteristic - external_body_reference - method_characteristic - routine_characteristic - - dispatch_clause: - - - - - - - - STATIC - - - DISPATCH* - - - - - -
             ::= 'STATIC' 'DISPATCH*'
    -
    - referenced by: - - function_specification - - returns_clause: - - - - - - - - RETURNS - - - returns_type - - - - -
             ::= 'RETURNS' returns_type
    -
    - referenced by: - - function_specification - method_specification_designator - partial_method_specification - - returns_type: - - - - - - - - returns_data_type - - - result_cast - - - returns_table_type - - - - -
             ::= returns_data_type result_cast?
    -
               | returns_table_type
    -
    - referenced by: - - returns_clause - - returns_table_type: - - - - - - - - TABLE - - - table_function_column_list - - ONLY - - - PASS* - - - THROUGH* - - - - - -
             ::= 'TABLE' table_function_column_list?
    -
               | 'ONLY' 'PASS*' 'THROUGH*'
    -
    - referenced by: - - returns_type - - table_function_column_list: - - - - - - - - ( - - - table_function_column_list_element - - , - - - ) - - - - - - - - referenced by: - - returns_table_type - - table_function_column_list_element: - - - - - - - - column_name - - - data_type - - - - -
             ::= column_name data_type
    -
    - referenced by: - - table_function_column_list - - result_cast: - - - - - - - - CAST - - - FROM - - - result_cast_from_type - - - - -
             ::= 'CAST' 'FROM' result_cast_from_type
    -
    - referenced by: - - returns_type - - result_cast_from_type: - - - - - - - - data_type - - - locator_indication - - - - -
             ::= data_type locator_indication?
    -
    - referenced by: - - result_cast - - returns_data_type: - - - - - - - - data_type - - - locator_indication - - - - -
             ::= data_type locator_indication?
    -
    - referenced by: - - returns_type - - routine_body: - - - - - - - - SQL_routine_spec - - - external_body_reference - - - polymorphic_table_function_body - - - - -
             ::= SQL_routine_spec
    -
               | external_body_reference
    -
               | polymorphic_table_function_body
    -
    - referenced by: - - SQL_invoked_function - SQL_invoked_procedure - - SQL_routine_spec: - - - - - - - - rights_clause - - - SQL_routine_body - - - - -
             ::= rights_clause? SQL_routine_body
    -
    - referenced by: - - routine_body - - rights_clause: - - - - - - - - SQL - - - SECURITY* - - - INVOKER* - - - DEFINER* - - - - - -
             ::= 'SQL' 'SECURITY*' ( 'INVOKER*' | 'DEFINER*' )
    -
    - referenced by: - - SQL_routine_spec - - SQL_routine_body: - - - - - - - - SQL_procedure_statement - - - - -
             ::= SQL_procedure_statement
    -
    - referenced by: - - SQL_routine_spec - - external_body_reference: - - - - - - - - EXTERNAL - - - NAME* - - - external_routine_name - - - parameter_style_clause - - - transform_group_specification - - - external_security_clause - - - - - - - referenced by: - - routine_body - - polymorphic_table_function_body: - - - - - - - - PTF_private_parameters - - DESCRIBE - - - WITH - - - PTF_describe_component_procedure - - START - - - WITH - - - PTF_start_component_procedure - - FULFILL* - - - WITH - - - PTF_fulfill_component_procedure - - FINISH* - - - WITH - - - PTF_finish_component_procedure - - - - -
             ::= PTF_private_parameters? ( 'DESCRIBE' 'WITH' PTF_describe_component_procedure )? ( 'START' 'WITH' PTF_start_component_procedure )? 'FULFILL*' 'WITH' PTF_fulfill_component_procedure ( 'FINISH*' 'WITH' PTF_finish_component_procedure )?
    -
    - referenced by: - - routine_body - - PTF_private_parameters: - - - - - - - - PRIVATE* - - - DATA* - - - private_parameter_declaration_list - - - - -
             ::= 'PRIVATE*' 'DATA*'? private_parameter_declaration_list
    -
    - referenced by: - - polymorphic_table_function_body - - private_parameter_declaration_list: - - - - - - - - ( - - - SQL_parameter_declaration - - , - - - ) - - - - - -
             ::= '(' ( SQL_parameter_declaration ( ',' SQL_parameter_declaration )* )? ')'
    -
    - referenced by: - - PTF_private_parameters - - PTF_describe_component_procedure: - - - - - - - - specific_routine_designator - - - - -
             ::= specific_routine_designator
    -
    - referenced by: - - polymorphic_table_function_body - - PTF_start_component_procedure: - - - - - - - - specific_routine_designator - - - - -
             ::= specific_routine_designator
    -
    - referenced by: - - polymorphic_table_function_body - - PTF_fulfill_component_procedure: - - - - - - - - specific_routine_designator - - - - -
             ::= specific_routine_designator
    -
    - referenced by: - - polymorphic_table_function_body - - PTF_finish_component_procedure: - - - - - - - - specific_routine_designator - - - - -
             ::= specific_routine_designator
    -
    - referenced by: - - polymorphic_table_function_body - - external_security_clause: - - - - - - - - EXTERNAL - - - SECURITY* - - - DEFINER* - - - INVOKER* - - - IMPLEMENTATION* - - - DEFINED* - - - - - -
             ::= 'EXTERNAL' 'SECURITY*' ( 'DEFINER*' | 'INVOKER*' | 'IMPLEMENTATION*' - 'DEFINED*' )
    -
    - referenced by: - - external_body_reference - - parameter_style: - - - - - - - - SQL - - - GENERAL* - - - - - -
             ::= 'SQL'
    -
               | 'GENERAL*'
    -
    - referenced by: - - parameter_style_clause - - deterministic_characteristic: - - - - - - - - NOT - - - DETERMINISTIC - - - - - -
             ::= 'NOT'? 'DETERMINISTIC'
    -
    - referenced by: - - method_characteristic - routine_characteristic - - SQL_data_access_indication: - - - - - - - - NO - - - CONTAINS - - - SQL - - - READS - - - MODIFIES - - - SQL - - - DATA* - - - - - -
             ::= ( 'NO' | 'CONTAINS' ) 'SQL'
    -
               | ( 'READS' | 'MODIFIES' ) 'SQL' 'DATA*'
    -
    - referenced by: - - alter_routine_characteristic - method_characteristic - routine_characteristic - - null_call_clause: - - - - - - - - RETURNS - - - NULL - - - CALLED - - - ON - - - NULL - - - INPUT* - - - - - -
             ::= ( 'RETURNS' 'NULL' | 'CALLED' ) 'ON' 'NULL' 'INPUT*'
    -
    - referenced by: - - alter_routine_characteristic - method_characteristic - routine_characteristic - - maximum_returned_result_sets: - - - - - - - - unsigned_integer - - - - -
             ::= unsigned_integer
    -
    - referenced by: - - returned_result_sets_characteristic - - transform_group_specification: - - - - - - - - TRANSFORM* - - - GROUP - - - single_group_specification - - - multiple_group_specification - - - - -
             ::= 'TRANSFORM*' 'GROUP' ( single_group_specification | multiple_group_specification )
    -
    - referenced by: - - embedded_transform_group_specification - external_body_reference - module_transform_group_specification - - single_group_specification: - - - - - - - - group_name - - - - -
             ::= group_name
    -
    - referenced by: - - transform_group_specification - - multiple_group_specification: - - - - - - - - group_specification - - , - - - - - -
             ::= group_specification ( ',' group_specification )*
    -
    - referenced by: - - transform_group_specification - - group_specification: - - - - - - - - group_name - - FOR - - - TYPE* - - - path_resolved_user_defined_type_name - - - - -
             ::= group_name 'FOR' 'TYPE*' path_resolved_user_defined_type_name
    -
    - referenced by: - - multiple_group_specification - - alter_routine_statement: - - - - - - - - ALTER - - - specific_routine_designator - - - alter_routine_characteristics - - RESTRICT* - - - - - -
             ::= 'ALTER' specific_routine_designator alter_routine_characteristics 'RESTRICT*'
    -
    - referenced by: - - SQL_schema_manipulation_statement - - alter_routine_characteristics: - - - - - - - - alter_routine_characteristic - - - - -
             ::= alter_routine_characteristic+
    -
    - referenced by: - - alter_routine_statement - - alter_routine_characteristic: - - - - - - - - language_clause - - - parameter_style_clause - - - SQL_data_access_indication - - - null_call_clause - - - returned_result_sets_characteristic - - NAME* - - - external_routine_name - - - - -
             ::= language_clause
    -
               | parameter_style_clause
    -
               | SQL_data_access_indication
    -
               | null_call_clause
    -
               | returned_result_sets_characteristic
    -
               | 'NAME*' external_routine_name
    -
    - referenced by: - - alter_routine_characteristics - - drop_routine_statement: - - - - - - - - DROP - - - specific_routine_designator - - - drop_behavior - - - - -
             ::= 'DROP' specific_routine_designator drop_behavior
    -
    - referenced by: - - SQL_schema_manipulation_statement - - user_defined_cast_definition: - - - - - - - - CREATE - - - CAST - - - ( - - - source_data_type - - AS - - - target_data_type - - ) - - - WITH - - - cast_function - - AS - - - ASSIGNMENT* - - - - - -
             ::= 'CREATE' 'CAST' '(' source_data_type 'AS' target_data_type ')' 'WITH' cast_function ( 'AS' 'ASSIGNMENT*' )?
    -
    - referenced by: - - SQL_schema_definition_statement - schema_element - - cast_function: - - - - - - - - specific_routine_designator - - - - -
             ::= specific_routine_designator
    -
    - referenced by: - - user_defined_cast_definition - - source_data_type: - - - - - - - - data_type - - - - -
             ::= data_type
    -
    - referenced by: - - drop_user_defined_cast_statement - user_defined_cast_definition - - target_data_type: - - - - - - - - data_type - - - - -
             ::= data_type
    -
    - referenced by: - - drop_user_defined_cast_statement - user_defined_cast_definition - - drop_user_defined_cast_statement: - - - - - - - - DROP - - - CAST - - - ( - - - source_data_type - - AS - - - target_data_type - - ) - - - drop_behavior - - - - -
             ::= 'DROP' 'CAST' '(' source_data_type 'AS' target_data_type ')' drop_behavior
    -
    - referenced by: - - SQL_schema_manipulation_statement - - user_defined_ordering_definition: - - - - - - - - CREATE - - - ORDERING* - - - FOR - - - schema_resolved_user_defined_type_name - - - ordering_form - - - - -
             ::= 'CREATE' 'ORDERING*' 'FOR' schema_resolved_user_defined_type_name ordering_form
    -
    - referenced by: - - SQL_schema_definition_statement - schema_element - - ordering_form: - - - - - - - - equals_ordering_form - - - full_ordering_form - - - - -
             ::= equals_ordering_form
    -
               | full_ordering_form
    -
    - referenced by: - - user_defined_ordering_definition - - equals_ordering_form: - - - - - - - - EQUALS - - - ONLY - - - BY - - - ordering_category - - - - -
             ::= 'EQUALS' 'ONLY' 'BY' ordering_category
    -
    - referenced by: - - ordering_form - - full_ordering_form: - - - - - - - - ORDER - - - FULL - - - BY - - - ordering_category - - - - -
             ::= 'ORDER' 'FULL' 'BY' ordering_category
    -
    - referenced by: - - ordering_form - - ordering_category: - - - - - - - - relative_category - - - map_category - - - state_category - - - - -
             ::= relative_category
    -
               | map_category
    -
               | state_category
    -
    - referenced by: - - equals_ordering_form - full_ordering_form - - relative_category: - - - - - - - - RELATIVE* - - - WITH - - - relative_function_specification - - - - -
             ::= 'RELATIVE*' 'WITH' relative_function_specification
    -
    - referenced by: - - ordering_category - - map_category: - - - - - - - - MAP* - - - WITH - - - map_function_specification - - - - -
             ::= 'MAP*' 'WITH' map_function_specification
    -
    - referenced by: - - ordering_category - - state_category: - - - - - - - - STATE* - - - specific_name - - - - -
             ::= 'STATE*' specific_name?
    -
    - referenced by: - - ordering_category - - relative_function_specification: - - - - - - - - specific_routine_designator - - - - -
             ::= specific_routine_designator
    -
    - referenced by: - - relative_category - - map_function_specification: - - - - - - - - specific_routine_designator - - - - -
             ::= specific_routine_designator
    -
    - referenced by: - - map_category - - drop_user_defined_ordering_statement: - - - - - - - - DROP - - - ORDERING* - - - FOR - - - schema_resolved_user_defined_type_name - - - drop_behavior - - - - -
             ::= 'DROP' 'ORDERING*' 'FOR' schema_resolved_user_defined_type_name drop_behavior
    -
    - referenced by: - - SQL_schema_manipulation_statement - - transform_definition: - - - - - - - - CREATE - - - TRANSFORM* - - - TRANSFORMS* - - - FOR - - - schema_resolved_user_defined_type_name - - - transform_group - - - - -
             ::= 'CREATE' ( 'TRANSFORM*' | 'TRANSFORMS*' ) 'FOR' schema_resolved_user_defined_type_name transform_group+
    -
    - referenced by: - - SQL_schema_definition_statement - schema_element - - transform_group: - - - - - - - - group_name - - ( - - - transform_element_list - - ) - - - - - -
             ::= group_name '(' transform_element_list ')'
    -
    - referenced by: - - transform_definition - - group_name: - - - - - - - - identifier - - - - -
             ::= identifier
    -
    - referenced by: - - alter_group - group_specification - single_group_specification - transform_group - transform_group_element - - transform_element_list: - - - - - - - - transform_element - - , - - - transform_element - - - - -
             ::= transform_element ( ',' transform_element )?
    -
    - referenced by: - - add_transform_element_list - transform_group - - transform_element: - - - - - - - - to_sql - - - from_sql - - - - -
             ::= to_sql
    -
               | from_sql
    -
    - referenced by: - - transform_element_list - - to_sql: - - - - - - - - TO - - - SQL - - - WITH - - - to_sql_function - - - -
    to_sql   ::= 'TO' 'SQL' 'WITH' to_sql_function
    -
    - referenced by: - - transform_element - - from_sql: - - - - - - - - FROM - - - SQL - - - WITH - - - from_sql_function - - - -
    from_sql ::= 'FROM' 'SQL' 'WITH' from_sql_function
    -
    - referenced by: - - transform_element - - to_sql_function: - - - - - - - - specific_routine_designator - - - - -
             ::= specific_routine_designator
    -
    - referenced by: - - to_sql - - from_sql_function: - - - - - - - - specific_routine_designator - - - - -
             ::= specific_routine_designator
    -
    - referenced by: - - from_sql - - alter_transform_statement: - - - - - - - - ALTER - - - TRANSFORM* - - - TRANSFORMS* - - - FOR - - - schema_resolved_user_defined_type_name - - - alter_group - - - - -
             ::= 'ALTER' ( 'TRANSFORM*' | 'TRANSFORMS*' ) 'FOR' schema_resolved_user_defined_type_name alter_group+
    -
    - referenced by: - - SQL_schema_manipulation_statement - - alter_group: - - - - - - - - group_name - - ( - - - alter_transform_action_list - - ) - - - - - -
             ::= group_name '(' alter_transform_action_list ')'
    -
    - referenced by: - - alter_transform_statement - - alter_transform_action_list: - - - - - - - - alter_transform_action - - , - - - - - -
             ::= alter_transform_action ( ',' alter_transform_action )*
    -
    - referenced by: - - alter_group - - alter_transform_action: - - - - - - - - add_transform_element_list - - - drop_transform_element_list - - - - -
             ::= add_transform_element_list
    -
               | drop_transform_element_list
    -
    - referenced by: - - alter_transform_action_list - - add_transform_element_list: - - - - - - - - ADD* - - - ( - - - transform_element_list - - ) - - - - - -
             ::= 'ADD*' '(' transform_element_list ')'
    -
    - referenced by: - - alter_transform_action - - drop_transform_element_list: - - - - - - - - DROP - - - ( - - - transform_kind - - , - - - transform_kind - - - drop_behavior - - ) - - - - - -
             ::= 'DROP' '(' transform_kind ( ',' transform_kind )? drop_behavior ')'
    -
    - referenced by: - - alter_transform_action - - transform_kind: - - - - - - - - TO - - - FROM - - - SQL - - - - - -
             ::= ( 'TO' | 'FROM' ) 'SQL'
    -
    - referenced by: - - drop_transform_element_list - - drop_transform_statement: - - - - - - - - DROP - - - TRANSFORM* - - - TRANSFORMS* - - - transforms_to_be_dropped - - FOR - - - schema_resolved_user_defined_type_name - - - drop_behavior - - - - -
             ::= 'DROP' ( 'TRANSFORM*' | 'TRANSFORMS*' ) transforms_to_be_dropped 'FOR' schema_resolved_user_defined_type_name drop_behavior
    -
    - referenced by: - - SQL_schema_manipulation_statement - - transforms_to_be_dropped: - - - - - - - - ALL - - - transform_group_element - - - - -
             ::= 'ALL'
    -
               | transform_group_element
    -
    - referenced by: - - drop_transform_statement - - transform_group_element: - - - - - - - - group_name - - - - -
             ::= group_name
    -
    - referenced by: - - transforms_to_be_dropped - - sequence_generator_definition: - - - - - - - - CREATE - - - SEQUENCE* - - - sequence_generator_name - - - sequence_generator_options - - - - -
             ::= 'CREATE' 'SEQUENCE*' sequence_generator_name sequence_generator_options?
    -
    - referenced by: - - SQL_schema_definition_statement - schema_element - - sequence_generator_options: - - - - - - - - sequence_generator_option - - - - -
             ::= sequence_generator_option+
    -
    - referenced by: - - sequence_generator_definition - - sequence_generator_option: - - - - - - - - sequence_generator_data_type_option - - - common_sequence_generator_options - - - - - -
               | common_sequence_generator_options
    -
    - referenced by: - - sequence_generator_options - - common_sequence_generator_options: - - - - - - - - common_sequence_generator_option - - - - -
             ::= common_sequence_generator_option+
    -
    - referenced by: - - identity_column_specification - sequence_generator_option - - common_sequence_generator_option: - - - - - - - - sequence_generator_start_with_option - - - basic_sequence_generator_option - - - - - -
               | basic_sequence_generator_option
    -
    - referenced by: - - common_sequence_generator_options - - basic_sequence_generator_option: - - - - - - - - sequence_generator_increment_by_option - - - sequence_generator_maxvalue_option - - - sequence_generator_minvalue_option - - - sequence_generator_cycle_option - - - - - -
               | sequence_generator_maxvalue_option
    -
               | sequence_generator_minvalue_option
    -
               | sequence_generator_cycle_option
    -
    - referenced by: - - alter_identity_column_option - alter_sequence_generator_option - common_sequence_generator_option - - sequence_generator_data_type_option: - - - - - - - - AS - - - data_type - - - - -
             ::= 'AS' data_type
    -
    - referenced by: - - sequence_generator_option - - sequence_generator_start_with_option: - - - - - - - - START - - - WITH - - - sequence_generator_start_value - - - - -
             ::= 'START' 'WITH' sequence_generator_start_value
    -
    - referenced by: - - common_sequence_generator_option - - sequence_generator_start_value: - - - - - - - - signed_numeric_literal - - - - -
             ::= signed_numeric_literal
    -
    - referenced by: - - sequence_generator_start_with_option - - sequence_generator_increment_by_option: - - - - - - - - INCREMENT* - - - BY - - - sequence_generator_increment - - - - -
             ::= 'INCREMENT*' 'BY' sequence_generator_increment
    -
    - referenced by: - - basic_sequence_generator_option - - sequence_generator_increment: - - - - - - - - signed_numeric_literal - - - - -
             ::= signed_numeric_literal
    -
    - referenced by: - - sequence_generator_increment_by_option - - sequence_generator_maxvalue_option: - - - - - - - - MAXVALUE* - - - sequence_generator_max_value - - NO - - - MAXVALUE* - - - - - -
             ::= 'MAXVALUE*' sequence_generator_max_value
    -
               | 'NO' 'MAXVALUE*'
    -
    - referenced by: - - basic_sequence_generator_option - - sequence_generator_max_value: - - - - - - - - signed_numeric_literal - - - - -
             ::= signed_numeric_literal
    -
    - referenced by: - - sequence_generator_maxvalue_option - - sequence_generator_minvalue_option: - - - - - - - - MINVALUE* - - - sequence_generator_min_value - - NO - - - MINVALUE* - - - - - -
             ::= 'MINVALUE*' sequence_generator_min_value
    -
               | 'NO' 'MINVALUE*'
    -
    - referenced by: - - basic_sequence_generator_option - - sequence_generator_min_value: - - - - - - - - signed_numeric_literal - - - - -
             ::= signed_numeric_literal
    -
    - referenced by: - - sequence_generator_minvalue_option - - sequence_generator_cycle_option: - - - - - - - - NO - - - CYCLE - - - - - -
             ::= 'NO'? 'CYCLE'
    -
    - referenced by: - - basic_sequence_generator_option - - alter_sequence_generator_statement: - - - - - - - - ALTER - - - SEQUENCE* - - - sequence_generator_name - - - alter_sequence_generator_options - - - - -
             ::= 'ALTER' 'SEQUENCE*' sequence_generator_name alter_sequence_generator_options
    -
    - referenced by: - - SQL_schema_manipulation_statement - - alter_sequence_generator_options: - - - - - - - - alter_sequence_generator_option - - - - -
             ::= alter_sequence_generator_option+
    -
    - referenced by: - - alter_sequence_generator_statement - - alter_sequence_generator_option: - - - - - - - - alter_sequence_generator_restart_option - - - basic_sequence_generator_option - - - - - -
               | basic_sequence_generator_option
    -
    - referenced by: - - alter_sequence_generator_options - - alter_sequence_generator_restart_option: - - - - - - - - RESTART* - - - WITH - - - sequence_generator_restart_value - - - - -
             ::= 'RESTART*' ( 'WITH' sequence_generator_restart_value )?
    -
    - referenced by: - - alter_identity_column_option - alter_sequence_generator_option - - sequence_generator_restart_value: - - - - - - - - signed_numeric_literal - - - - -
             ::= signed_numeric_literal
    -
    - referenced by: - - alter_sequence_generator_restart_option - - drop_sequence_generator_statement: - - - - - - - - DROP - - - SEQUENCE* - - - sequence_generator_name - - - drop_behavior - - - - -
             ::= 'DROP' 'SEQUENCE*' sequence_generator_name drop_behavior
    -
    - referenced by: - - SQL_schema_manipulation_statement - - grant_statement: - - - - - - - - grant_privilege_statement - - - grant_role_statement - - - - -
             ::= grant_privilege_statement
    -
               | grant_role_statement
    -
    - referenced by: - - SQL_schema_definition_statement - schema_element - - grant_privilege_statement: - - - - - - - - GRANT - - - privileges - - TO - - - grantee - - , - - - WITH - - - HIERARCHY* - - - OPTION* - - - WITH - - - GRANT - - - OPTION* - - - GRANTED* - - - BY - - - grantor - - - - -
             ::= 'GRANT' privileges 'TO' grantee ( ',' grantee )* ( 'WITH' 'HIERARCHY*' 'OPTION*' )? ( 'WITH' 'GRANT' 'OPTION*' )? ( 'GRANTED*' - 'BY' grantor )?
    -
    - referenced by: - - grant_statement - - privileges: - - - - - - - - object_privileges - - ON - - - object_name - - - - -
             ::= object_privileges 'ON' object_name
    -
    - referenced by: - - grant_privilege_statement - revoke_privilege_statement - - object_name: - - - - - - - - TABLE - - - table_name - - DOMAIN* - - - domain_name - - COLLATION* - - - collation_name - - CHARACTER - - - SET - - - character_set_name - - TRANSLATION - - - transliteration_name - - TYPE* - - - schema_resolved_user_defined_type_name - - SEQUENCE* - - - sequence_generator_name - - - specific_routine_designator - - - - -
             ::= 'TABLE'? table_name
    -
               | 'DOMAIN*' domain_name
    -
               | 'COLLATION*' collation_name
    -
               | 'CHARACTER' 'SET' character_set_name
    -
               | 'TRANSLATION' transliteration_name
    -
               | 'TYPE*' schema_resolved_user_defined_type_name
    -
               | 'SEQUENCE*' sequence_generator_name
    -
               | specific_routine_designator
    -
    - referenced by: - - privileges - - object_privileges: - - - - - - - - ALL - - - PRIVILEGES* - - - action - - , - - - - - -
             ::= 'ALL' 'PRIVILEGES*'
    -
               | action ( ',' action )*
    -
    - referenced by: - - privileges - - action: - - - - - - - - SELECT - - - ( - - - privilege_column_list - - - privilege_method_list - - ) - - - DELETE - - - INSERT - - - UPDATE - - - REFERENCES - - - ( - - - privilege_column_list - - ) - - - USAGE* - - - TRIGGER - - - UNDER* - - - EXECUTE - - - - -
    action   ::= 'SELECT' ( '(' ( privilege_column_list | privilege_method_list ) ')' )?
    -
               | 'DELETE'
    -
               | ( 'INSERT' | 'UPDATE' | 'REFERENCES' ) ( '(' privilege_column_list ')' )?
    -
               | 'USAGE*'
    -
               | 'TRIGGER'
    -
               | 'UNDER*'
    -
               | 'EXECUTE'
    -
    - referenced by: - - object_privileges - - privilege_method_list: - - - - - - - - specific_routine_designator - - , - - - - - - - - referenced by: - - action - - privilege_column_list: - - - - - - - - column_name_list - - - - -
             ::= column_name_list
    -
    - referenced by: - - action - - grantee: - - - - - - - - PUBLIC* - - - authorization_identifier - - - -
    grantee  ::= 'PUBLIC*'
    -
               | authorization_identifier
    -
    - referenced by: - - grant_privilege_statement - grant_role_statement - revoke_privilege_statement - revoke_role_statement - - grantor: - - - - - - - - CURRENT_USER - - - CURRENT_ROLE - - - -
    grantor  ::= 'CURRENT_USER'
    -
               | CURRENT_ROLE
    -
    - referenced by: - - grant_privilege_statement - grant_role_statement - revoke_privilege_statement - revoke_role_statement - role_definition - - role_definition: - - - - - - - - CREATE - - - ROLE* - - - role_name - - WITH - - - ADMIN* - - - grantor - - - - -
             ::= 'CREATE' 'ROLE*' role_name ( 'WITH' 'ADMIN*' grantor )?
    -
    - referenced by: - - SQL_schema_definition_statement - schema_element - - grant_role_statement: - - - - - - - - GRANT - - - role_granted - - , - - - TO - - - grantee - - , - - - WITH - - - ADMIN* - - - OPTION* - - - GRANTED* - - - BY - - - grantor - - - - -
             ::= 'GRANT' role_granted ( ',' role_granted )* 'TO' grantee ( ',' grantee )* ( 'WITH' 'ADMIN*' 'OPTION*' )? ( 'GRANTED*' 'BY' grantor )?
    -
    - referenced by: - - grant_statement - - role_granted: - - - - - - - - role_name - - - - -
             ::= role_name
    -
    - referenced by: - - grant_role_statement - - drop_role_statement: - - - - - - - - DROP - - - ROLE* - - - role_name - - - - -
             ::= 'DROP' 'ROLE*' role_name
    -
    - referenced by: - - SQL_schema_manipulation_statement - - revoke_statement: - - - - - - - - revoke_privilege_statement - - - revoke_role_statement - - - - -
             ::= revoke_privilege_statement
    -
               | revoke_role_statement
    -
    - referenced by: - - SQL_schema_manipulation_statement - - revoke_privilege_statement: - - - - - - - - REVOKE - - - revoke_option_extension - - - privileges - - FROM - - - grantee - - , - - - GRANTED* - - - BY - - - grantor - - - drop_behavior - - - - -
             ::= 'REVOKE' revoke_option_extension? privileges 'FROM' grantee ( ',' grantee )* ( 'GRANTED*' 'BY' grantor )? drop_behavior
    -
    - referenced by: - - revoke_statement - - revoke_option_extension: - - - - - - - - GRANT - - - HIERARCHY* - - - OPTION* - - - FOR - - - - - -
             ::= ( 'GRANT' | 'HIERARCHY*' ) 'OPTION*' 'FOR'
    -
    - referenced by: - - revoke_privilege_statement - - revoke_role_statement: - - - - - - - - REVOKE - - - ADMIN* - - - OPTION* - - - FOR - - - role_revoked - - , - - - FROM - - - grantee - - , - - - GRANTED* - - - BY - - - grantor - - - drop_behavior - - - - -
             ::= 'REVOKE' ( 'ADMIN*' 'OPTION*' 'FOR' )? role_revoked ( ',' role_revoked )* 'FROM' grantee ( ',' grantee )* ( 'GRANTED*' 'BY' grantor )? drop_behavior
    -
    - referenced by: - - revoke_statement - - role_revoked: - - - - - - - - role_name - - - - -
             ::= role_name
    -
    - referenced by: - - revoke_role_statement - - SQL_client_module_definition: - - - - - - - - module_name_clause - - - language_clause - - - module_authorization_clause - - - module_path_specification - - - module_transform_group_specification - - - module_collations - - - temporary_table_declaration - - - module_contents - - - - - - - no referencesmodule_authorization_clause: - - - - - - - - SCHEMA* - - - schema_name - - AUTHORIZATION - - - module_authorization_identifier - - FOR - - - STATIC - - - ONLY - - - AND - - - DYNAMIC - - - AUTHORIZATION - - - module_authorization_identifier - - FOR - - - STATIC - - - ONLY - - - AND - - - DYNAMIC - - - - - -
             ::= 'SCHEMA*' schema_name ( 'AUTHORIZATION' module_authorization_identifier ( 'FOR' 'STATIC' ( 'ONLY' | 'AND' 'DYNAMIC' ) )? )?
    -
               | 'AUTHORIZATION' module_authorization_identifier ( 'FOR' 'STATIC' ( 'ONLY' | 'AND' 'DYNAMIC' ) )?
    -
    - referenced by: - - SQL_client_module_definition - - module_authorization_identifier: - - - - - - - - authorization_identifier - - - - -
             ::= authorization_identifier
    -
    - referenced by: - - embedded_authorization_identifier - module_authorization_clause - - module_path_specification: - - - - - - - - path_specification - - - - -
             ::= path_specification
    -
    - referenced by: - - SQL_client_module_definition - - module_transform_group_specification: - - - - - - - - transform_group_specification - - - - -
             ::= transform_group_specification
    -
    - referenced by: - - SQL_client_module_definition - - module_collations: - - - - - - - - module_collation_specification - - - - -
             ::= module_collation_specification+
    -
    - referenced by: - - SQL_client_module_definition - embedded_collation_specification - - module_collation_specification: - - - - - - - - COLLATION* - - - collation_name - - FOR - - - character_set_specification_list - - - - -
             ::= 'COLLATION*' collation_name ( 'FOR' character_set_specification_list )?
    -
    - referenced by: - - module_collations - - character_set_specification_list: - - - - - - - - character_set_specification - - , - - - - - - - - referenced by: - - module_collation_specification - set_session_collation_statement - - module_contents: - - - - - - - - declare_cursor - - - dynamic_declare_cursor - - - externally_invoked_procedure - - - - -
             ::= declare_cursor
    -
               | dynamic_declare_cursor
    -
               | externally_invoked_procedure
    -
    - referenced by: - - SQL_client_module_definition - - module_name_clause: - - - - - - - - MODULE - - - SQL_client_module_name - - - module_character_set_specification - - - - - - - referenced by: - - SQL_client_module_definition - - module_character_set_specification: - - - - - - - - NAMES* - - - ARE - - - character_set_specification - - - - -
             ::= 'NAMES*' 'ARE' character_set_specification
    -
    - referenced by: - - module_name_clause - - externally_invoked_procedure: - - - - - - - - PROCEDURE - - - procedure_name - - - host_parameter_declaration_list - - ; - - - SQL_procedure_statement - - ; - - - - - - - - referenced by: - - module_contents - - host_parameter_declaration_list: - - - - - - - - ( - - - host_parameter_declaration - - , - - - host_parameter_declaration - - ) - - - - - -
             ::= '(' host_parameter_declaration ( ',' host_parameter_declaration )? ')'
    -
    - referenced by: - - externally_invoked_procedure - - host_parameter_declaration: - - - - - - - - host_parameter_name - - - host_parameter_data_type - - SQLSTATE - - - - - - -
               | 'SQLSTATE'
    -
    - referenced by: - - host_parameter_declaration_list - - host_parameter_data_type: - - - - - - - - data_type - - - locator_indication - - - - -
             ::= data_type locator_indication?
    -
    - referenced by: - - host_parameter_declaration - - SQL_procedure_statement: - - - - - - - - SQL_executable_statement - - - - -
             ::= SQL_executable_statement
    -
    - referenced by: - - SQL_routine_body - externally_invoked_procedure - statement_or_declaration - triggered_SQL_statement - - SQL_executable_statement: - - - - - - - - SQL_schema_statement - - - SQL_data_statement - - - SQL_control_statement - - - SQL_transaction_statement - - - SQL_connection_statement - - - SQL_session_statement - - - SQL_diagnostics_statement - - - SQL_dynamic_statement - - - - -
             ::= SQL_schema_statement
    -
               | SQL_data_statement
    -
               | SQL_control_statement
    -
               | SQL_transaction_statement
    -
               | SQL_connection_statement
    -
               | SQL_session_statement
    -
               | SQL_diagnostics_statement
    -
               | SQL_dynamic_statement
    -
    - referenced by: - - SQL_procedure_statement - - SQL_schema_statement: - - - - - - - - SQL_schema_definition_statement - - - SQL_schema_manipulation_statement - - - - -
             ::= SQL_schema_definition_statement
    -
               | SQL_schema_manipulation_statement
    -
    - referenced by: - - SQL_executable_statement - directly_executable_statement - preparable_SQL_schema_statement - - SQL_schema_definition_statement: - - - - - - - - schema_definition - - - table_definition - - - view_definition - - - SQL_invoked_routine - - - grant_statement - - - role_definition - - - domain_definition - - - character_set_definition - - - collation_definition - - - transliteration_definition - - - assertion_definition - - - trigger_definition - - - user_defined_type_definition - - - user_defined_cast_definition - - - user_defined_ordering_definition - - - transform_definition - - - sequence_generator_definition - - - - -
             ::= schema_definition
    -
               | table_definition
    -
               | view_definition
    -
               | SQL_invoked_routine
    -
               | grant_statement
    -
               | role_definition
    -
               | domain_definition
    -
               | character_set_definition
    -
               | collation_definition
    -
               | transliteration_definition
    -
               | assertion_definition
    -
               | trigger_definition
    -
               | user_defined_type_definition
    -
               | user_defined_cast_definition
    -
               | user_defined_ordering_definition
    -
               | transform_definition
    -
               | sequence_generator_definition
    -
    - referenced by: - - SQL_schema_statement - - SQL_schema_manipulation_statement: - - - - - - - - drop_schema_statement - - - alter_table_statement - - - drop_table_statement - - - drop_view_statement - - - alter_routine_statement - - - drop_routine_statement - - - drop_user_defined_cast_statement - - - revoke_statement - - - drop_role_statement - - - alter_domain_statement - - - drop_domain_statement - - - drop_character_set_statement - - - drop_collation_statement - - - drop_transliteration_statement - - - drop_assertion_statement - - - drop_trigger_statement - - - alter_type_statement - - - drop_data_type_statement - - - drop_user_defined_ordering_statement - - - alter_transform_statement - - - drop_transform_statement - - - alter_sequence_generator_statement - - - drop_sequence_generator_statement - - - - -
             ::= drop_schema_statement
    -
               | alter_table_statement
    -
               | drop_table_statement
    -
               | drop_view_statement
    -
               | alter_routine_statement
    -
               | drop_routine_statement
    -
               | drop_user_defined_cast_statement
    -
               | revoke_statement
    -
               | drop_role_statement
    -
               | alter_domain_statement
    -
               | drop_domain_statement
    -
               | drop_character_set_statement
    -
               | drop_collation_statement
    -
               | drop_transliteration_statement
    -
               | drop_assertion_statement
    -
               | drop_trigger_statement
    -
               | alter_type_statement
    -
               | drop_data_type_statement
    -
               | drop_user_defined_ordering_statement
    -
               | alter_transform_statement
    -
               | drop_transform_statement
    -
               | alter_sequence_generator_statement
    -
               | drop_sequence_generator_statement
    -
    - referenced by: - - SQL_schema_statement - - SQL_data_statement: - - - - - - - - open_statement - - - fetch_statement - - - close_statement - - - select_statement__single_row - - - free_locator_statement - - - hold_locator_statement - - - SQL_data_change_statement - - - - -
             ::= open_statement
    -
               | fetch_statement
    -
               | close_statement
    -
               | select_statement__single_row
    -
               | free_locator_statement
    -
               | hold_locator_statement
    -
               | SQL_data_change_statement
    -
    - referenced by: - - SQL_executable_statement - - SQL_data_change_statement: - - - - - - - - delete_statement__positioned - - - delete_statement__searched - - - insert_statement - - - update_statement__positioned - - - update_statement__searched - - - truncate_table_statement - - - merge_statement - - - - -
             ::= delete_statement__positioned
    -
               | delete_statement__searched
    -
               | insert_statement
    -
               | update_statement__positioned
    -
               | update_statement__searched
    -
               | truncate_table_statement
    -
               | merge_statement
    -
    - referenced by: - - SQL_data_statement - - SQL_control_statement: - - - - - - - - call_statement - - - return_statement - - - - -
             ::= call_statement
    -
               | return_statement
    -
    - referenced by: - - SQL_executable_statement - preparable_SQL_control_statement - - SQL_transaction_statement: - - - - - - - - start_transaction_statement - - - set_transaction_statement - - - set_constraints_mode_statement - - - savepoint_statement - - - release_savepoint_statement - - - commit_statement - - - rollback_statement - - - - -
             ::= start_transaction_statement
    -
               | set_transaction_statement
    -
               | set_constraints_mode_statement
    -
               | savepoint_statement
    -
               | release_savepoint_statement
    -
               | commit_statement
    -
               | rollback_statement
    -
    - referenced by: - - SQL_executable_statement - directly_executable_statement - preparable_SQL_transaction_statement - - SQL_connection_statement: - - - - - - - - connect_statement - - - set_connection_statement - - - disconnect_statement - - - - -
             ::= connect_statement
    -
               | set_connection_statement
    -
               | disconnect_statement
    -
    - referenced by: - - SQL_executable_statement - directly_executable_statement - - SQL_session_statement: - - - - - - - - set_session_user_identifier_statement - - - set_role_statement - - - set_local_time_zone_statement - - - set_session_characteristics_statement - - - set_catalog_statement - - - set_schema_statement - - - set_names_statement - - - set_path_statement - - - set_transform_group_statement - - - set_session_collation_statement - - - - - -
               | set_role_statement
    -
               | set_local_time_zone_statement
    - -
               | set_catalog_statement
    -
               | set_schema_statement
    -
               | set_names_statement
    -
               | set_path_statement
    -
               | set_transform_group_statement
    -
               | set_session_collation_statement
    -
    - referenced by: - - SQL_executable_statement - directly_executable_statement - preparable_SQL_session_statement - - SQL_diagnostics_statement: - - - - - - - - get_diagnostics_statement - - - - -
             ::= get_diagnostics_statement
    -
    - referenced by: - - SQL_executable_statement - - SQL_dynamic_statement: - - - - - - - - SQL_descriptor_statement - - - prepare_statement - - - deallocate_prepared_statement - - - describe_statement - - - execute_statement - - - execute_immediate_statement - - - SQL_dynamic_data_statement - - - copy_descriptor_statement - - - pipe_row_statement - - - - -
             ::= SQL_descriptor_statement
    -
               | prepare_statement
    -
               | deallocate_prepared_statement
    -
               | describe_statement
    -
               | execute_statement
    -
               | execute_immediate_statement
    -
               | SQL_dynamic_data_statement
    -
               | copy_descriptor_statement
    -
               | pipe_row_statement
    -
    - referenced by: - - SQL_executable_statement - - SQL_dynamic_data_statement: - - - - - - - - allocate_extended_dynamic_cursor_statement - - - allocate_received_cursor_statement - - - dynamic_open_statement - - - dynamic_fetch_statement - - - dynamic_close_statement - - - dynamic_delete_statement__positioned - - - dynamic_update_statement__positioned - - - - - -
               | allocate_received_cursor_statement
    -
               | dynamic_open_statement
    -
               | dynamic_fetch_statement
    -
               | dynamic_close_statement
    -
               | dynamic_delete_statement__positioned
    -
               | dynamic_update_statement__positioned
    -
    - referenced by: - - SQL_dynamic_statement - - SQL_descriptor_statement: - - - - - - - - allocate_descriptor_statement - - - deallocate_descriptor_statement - - - set_descriptor_statement - - - get_descriptor_statement - - - - -
             ::= allocate_descriptor_statement
    -
               | deallocate_descriptor_statement
    -
               | set_descriptor_statement
    -
               | get_descriptor_statement
    -
    - referenced by: - - SQL_dynamic_statement - - declare_cursor: - - - - - - - - DECLARE - - - cursor_name - - - cursor_properties - - FOR - - - cursor_specification - - - - -
             ::= 'DECLARE' cursor_name cursor_properties 'FOR' cursor_specification
    -
    - referenced by: - - module_contents - statement_or_declaration - - cursor_properties: - - - - - - - - cursor_sensitivity - - - cursor_scrollability - - CURSOR - - - cursor_holdability - - - cursor_returnability - - - - - - - referenced by: - - allocate_extended_dynamic_cursor_statement - declare_cursor - dynamic_declare_cursor - - cursor_sensitivity: - - - - - - - - SENSITIVE - - - INSENSITIVE - - - ASENSITIVE - - - - - -
             ::= 'SENSITIVE'
    -
               | 'INSENSITIVE'
    -
               | 'ASENSITIVE'
    -
    - referenced by: - - cursor_attribute - cursor_properties - - cursor_scrollability: - - - - - - - - NO - - - SCROLL - - - - - -
             ::= 'NO'? 'SCROLL'
    -
    - referenced by: - - cursor_attribute - cursor_properties - - cursor_holdability: - - - - - - - - WITH - - - WITHOUT - - - HOLD - - - - - -
             ::= ( 'WITH' | 'WITHOUT' ) 'HOLD'
    -
    - referenced by: - - cursor_attribute - cursor_properties - - cursor_returnability: - - - - - - - - WITH - - - WITHOUT - - - RETURN - - - - - -
             ::= ( 'WITH' | 'WITHOUT' ) 'RETURN'
    -
    - referenced by: - - cursor_attribute - cursor_properties - - cursor_specification: - - - - - - - - query_expression - - - updatability_clause - - - - -
             ::= query_expression updatability_clause?
    -
    - referenced by: - - declare_cursor - direct_select_statement__multiple_rows - dynamic_select_statement - - updatability_clause: - - - - - - - - FOR - - - READ* - - - ONLY - - - UPDATE - - - OF - - - column_name_list - - - - -
             ::= 'FOR' ( 'READ*' 'ONLY' | 'UPDATE' ( 'OF' column_name_list )? )
    -
    - referenced by: - - cursor_specification - - open_statement: - - - - - - - - OPEN - - - cursor_name - - - - -
             ::= 'OPEN' cursor_name
    -
    - referenced by: - - SQL_data_statement - - fetch_statement: - - - - - - - - FETCH - - - fetch_orientation - - FROM - - - cursor_name - - INTO - - - fetch_target_list - - - - -
             ::= 'FETCH' ( fetch_orientation? 'FROM' )? cursor_name 'INTO' fetch_target_list
    -
    - referenced by: - - SQL_data_statement - - fetch_orientation: - - - - - - - - NEXT* - - - PRIOR* - - - FIRST* - - - LAST* - - - ABSOLUTE* - - - RELATIVE* - - - simple_value_specification - - - - -
             ::= 'NEXT*'
    -
               | 'PRIOR*'
    -
               | 'FIRST*'
    -
               | 'LAST*'
    -
               | ( 'ABSOLUTE*' | 'RELATIVE*' ) simple_value_specification
    -
    - referenced by: - - dynamic_fetch_statement - fetch_statement - - fetch_target_list: - - - - - - - - target_specification - - , - - - target_specification - - - - -
             ::= target_specification ( ',' target_specification )?
    -
    - referenced by: - - fetch_statement - - close_statement: - - - - - - - - CLOSE - - - cursor_name - - - - -
             ::= 'CLOSE' cursor_name
    -
    - referenced by: - - SQL_data_statement - - select_statement__single_row: - - - - - - - - SELECT - - - set_quantifier - - - select_list - - INTO - - - select_target_list - - - table_expression - - - - -
             ::= 'SELECT' set_quantifier? select_list 'INTO' select_target_list table_expression
    -
    - referenced by: - - SQL_data_statement - - select_target_list: - - - - - - - - target_specification - - , - - - - - -
             ::= target_specification ( ',' target_specification )*
    -
    - referenced by: - - select_statement__single_row - - delete_statement__positioned: - - - - - - - - DELETE - - - FROM - - - target_table - - AS - - - correlation_name - - WHERE - - - CURRENT - - - OF - - - cursor_name - - - - -
             ::= 'DELETE' 'FROM' target_table ( 'AS'? correlation_name )? 'WHERE' 'CURRENT' 'OF' cursor_name
    -
    - referenced by: - - SQL_data_change_statement - - target_table: - - - - - - - - table_name - - ONLY - - - ( - - - table_name - - ) - - - - - -
             ::= table_name
    -
               | 'ONLY' '(' table_name ')'
    -
    - referenced by: - - delete_statement__positioned - delete_statement__searched - dynamic_delete_statement__positioned - dynamic_update_statement__positioned - merge_statement - preparable_dynamic_delete_statement__positioned - preparable_dynamic_update_statement__positioned - truncate_table_statement - update_statement__positioned - update_statement__searched - - delete_statement__searched: - - - - - - - - DELETE - - - FROM - - - target_table - - FOR - - - PORTION - - - OF - - - application_time_period_name - - FROM - - - point_in_time_1 - - TO - - - point_in_time_2 - - AS - - - correlation_name - - WHERE - - - search_condition - - - - -
             ::= 'DELETE' 'FROM' target_table ( 'FOR' 'PORTION' 'OF' application_time_period_name 'FROM' point_in_time_1 'TO' point_in_time_2 )? ( 'AS'? correlation_name )? ( 'WHERE' search_condition )?
    -
    - referenced by: - - SQL_data_change_statement - data_change_statement - direct_SQL_data_statement - preparable_SQL_data_statement - - truncate_table_statement: - - - - - - - - TRUNCATE - - - TABLE - - - target_table - - - identity_column_restart_option - - - - -
             ::= 'TRUNCATE' 'TABLE' target_table identity_column_restart_option?
    -
    - referenced by: - - SQL_data_change_statement - direct_SQL_data_statement - preparable_SQL_data_statement - - identity_column_restart_option: - - - - - - - - CONTINUE* - - - RESTART* - - - IDENTITY - - - - - -
             ::= ( 'CONTINUE*' | 'RESTART*' ) 'IDENTITY'
    -
    - referenced by: - - truncate_table_statement - - insert_statement: - - - - - - - - INSERT - - - INTO - - - insertion_target - - - insert_columns_and_source - - - - -
             ::= 'INSERT' 'INTO' insertion_target insert_columns_and_source
    -
    - referenced by: - - SQL_data_change_statement - data_change_statement - direct_SQL_data_statement - preparable_SQL_data_statement - - insertion_target: - - - - - - - - table_name - - - - -
             ::= table_name
    -
    - referenced by: - - insert_statement - - insert_columns_and_source: - - - - - - - - from_subquery - - - from_constructor - - - from_default - - - - -
             ::= from_subquery
    -
               | from_constructor
    -
               | from_default
    -
    - referenced by: - - insert_statement - - from_subquery: - - - - - - - - ( - - - insert_column_list - - ) - - - override_clause - - - query_expression - - - - -
             ::= ( '(' insert_column_list ')' )? override_clause? query_expression
    -
    - referenced by: - - insert_columns_and_source - - from_constructor: - - - - - - - - ( - - - insert_column_list - - ) - - - override_clause - - - contextually_typed_table_value_constructor - - - - - - - referenced by: - - insert_columns_and_source - - override_clause: - - - - - - - - OVERRIDING* - - - USER - - - SYSTEM - - - VALUE - - - - - -
             ::= 'OVERRIDING*' ( 'USER' | 'SYSTEM' ) 'VALUE'
    -
    - referenced by: - - from_constructor - from_subquery - merge_insert_specification - - from_default: - - - - - - - - DEFAULT - - - VALUES - - - - - -
             ::= 'DEFAULT' 'VALUES'
    -
    - referenced by: - - insert_columns_and_source - - insert_column_list: - - - - - - - - column_name_list - - - - -
             ::= column_name_list
    -
    - referenced by: - - from_constructor - from_subquery - merge_insert_specification - - merge_statement: - - - - - - - - MERGE - - - INTO - - - target_table - - AS - - - merge_correlation_name - - USING - - - table_reference - - ON - - - search_condition - - - merge_operation_specification - - - - - - - referenced by: - - SQL_data_change_statement - data_change_statement - direct_SQL_data_statement - preparable_SQL_data_statement - - merge_correlation_name: - - - - - - - - correlation_name - - - - -
             ::= correlation_name
    -
    - referenced by: - - merge_statement - - merge_operation_specification: - - - - - - - - merge_when_clause - - - - -
             ::= merge_when_clause+
    -
    - referenced by: - - merge_statement - - merge_when_clause: - - - - - - - - merge_when_matched_clause - - - merge_when_not_matched_clause - - - - -
             ::= merge_when_matched_clause
    -
               | merge_when_not_matched_clause
    -
    - referenced by: - - merge_operation_specification - - merge_when_matched_clause: - - - - - - - - WHEN - - - MATCHED* - - - AND - - - search_condition - - THEN - - - merge_update_or_delete_specification - - - - -
             ::= 'WHEN' 'MATCHED*' ( 'AND' search_condition )? 'THEN' merge_update_or_delete_specification
    -
    - referenced by: - - merge_when_clause - - merge_update_or_delete_specification: - - - - - - - - merge_update_specification - - DELETE - - - - - -
             ::= merge_update_specification
    -
               | 'DELETE'
    -
    - referenced by: - - merge_when_matched_clause - - merge_when_not_matched_clause: - - - - - - - - WHEN - - - NOT - - - MATCHED* - - - AND - - - search_condition - - THEN - - - merge_insert_specification - - - - -
             ::= 'WHEN' 'NOT' 'MATCHED*' ( 'AND' search_condition )? 'THEN' merge_insert_specification
    -
    - referenced by: - - merge_when_clause - - merge_update_specification: - - - - - - - - UPDATE - - - SET - - - set_clause_list - - - - -
             ::= 'UPDATE' 'SET' set_clause_list
    -
    - referenced by: - - merge_update_or_delete_specification - - merge_insert_specification: - - - - - - - - INSERT - - - ( - - - insert_column_list - - ) - - - override_clause - - VALUES - - - merge_insert_value_list - - - - -
             ::= 'INSERT' ( '(' insert_column_list ')' )? override_clause? 'VALUES' merge_insert_value_list
    -
    - referenced by: - - merge_when_not_matched_clause - - merge_insert_value_list: - - - - - - - - ( - - - merge_insert_value_element - - , - - - ) - - - - - -
             ::= '(' merge_insert_value_element ( ',' merge_insert_value_element )* ')'
    -
    - referenced by: - - merge_insert_specification - - merge_insert_value_element: - - - - - - - - value_expression - - - contextually_typed_value_specification - - - - -
             ::= value_expression
    -
    -
    - referenced by: - - merge_insert_value_list - - update_statement__positioned: - - - - - - - - UPDATE - - - target_table - - AS - - - correlation_name - - SET - - - set_clause_list - - WHERE - - - CURRENT - - - OF - - - cursor_name - - - - -
             ::= 'UPDATE' target_table ( 'AS'? correlation_name )? 'SET' set_clause_list 'WHERE' 'CURRENT' 'OF' cursor_name
    -
    - referenced by: - - SQL_data_change_statement - - update_statement__searched: - - - - - - - - UPDATE - - - target_table - - FOR - - - PORTION - - - OF - - - application_time_period_name - - FROM - - - point_in_time_1 - - TO - - - point_in_time_2 - - AS - - - correlation_name - - SET - - - set_clause_list - - WHERE - - - search_condition - - - - -
             ::= 'UPDATE' target_table ( 'FOR' 'PORTION' 'OF' application_time_period_name 'FROM' point_in_time_1 'TO' point_in_time_2 )? ( 'AS'? correlation_name )? 'SET' set_clause_list ( 'WHERE' search_condition )?
    -
    - referenced by: - - SQL_data_change_statement - data_change_statement - direct_SQL_data_statement - preparable_SQL_data_statement - - set_clause_list: - - - - - - - - set_clause - - , - - - - - -
             ::= set_clause ( ',' set_clause )*
    -
    - referenced by: - - dynamic_update_statement__positioned - merge_update_specification - preparable_dynamic_update_statement__positioned - update_statement__positioned - update_statement__searched - - set_clause: - - - - - - - - multiple_column_assignment - - - set_target - - = - - - update_source - - - - -
             ::= multiple_column_assignment
    -
               | set_target '=' update_source
    -
    - referenced by: - - set_clause_list - - set_target: - - - - - - - - update_target - - - mutated_set_clause - - - - -
             ::= update_target
    -
               | mutated_set_clause
    -
    - referenced by: - - set_clause - set_target_list - - multiple_column_assignment: - - - - - - - - set_target_list - - = - - - assigned_row - - - - -
             ::= set_target_list '=' assigned_row
    -
    - referenced by: - - set_clause - - set_target_list: - - - - - - - - ( - - - set_target - - , - - - ) - - - - - -
             ::= '(' set_target ( ',' set_target )* ')'
    -
    - referenced by: - - multiple_column_assignment - - assigned_row: - - - - - - - - contextually_typed_row_value_expression - - - - - - - referenced by: - - multiple_column_assignment - - update_target: - - - - - - - - object_column - - - left_bracket_or_trigraph - - - simple_value_specification - - - right_bracket_or_trigraph - - - - - - - referenced by: - - set_target - - object_column: - - - - - - - - column_name - - - - -
             ::= column_name
    -
    - referenced by: - - mutated_target - update_target - - mutated_set_clause: - - - - - - - - mutated_target - - . - - - method_name - - - - -
             ::= mutated_target '.' method_name
    -
    - referenced by: - - mutated_target - set_target - - mutated_target: - - - - - - - - object_column - - - mutated_set_clause - - - - -
             ::= object_column
    -
               | mutated_set_clause
    -
    - referenced by: - - mutated_set_clause - - update_source: - - - - - - - - value_expression - - - contextually_typed_value_specification - - - - -
             ::= value_expression
    -
    -
    - referenced by: - - set_clause - - temporary_table_declaration: - - - - - - - - DECLARE - - - LOCAL - - - TEMPORARY* - - - TABLE - - - table_name - - - table_element_list - - ON - - - COMMIT - - - table_commit_action - - ROWS - - - - - -
             ::= 'DECLARE' 'LOCAL' 'TEMPORARY*' 'TABLE' table_name table_element_list ( 'ON' 'COMMIT' table_commit_action 'ROWS' )?
    -
    - referenced by: - - SQL_client_module_definition - direct_SQL_data_statement - statement_or_declaration - - free_locator_statement: - - - - - - - - FREE - - - LOCATOR* - - - locator_reference - - , - - - - - -
             ::= 'FREE' 'LOCATOR*' locator_reference ( ',' locator_reference )*
    -
    - referenced by: - - SQL_data_statement - preparable_SQL_data_statement - - locator_reference: - - - - - - - - host_parameter_name - - - embedded_variable_name - - ? - - - - - -
             ::= host_parameter_name
    -
               | embedded_variable_name
    -
               | '?'
    -
    - referenced by: - - free_locator_statement - hold_locator_statement - - hold_locator_statement: - - - - - - - - HOLD - - - LOCATOR* - - - locator_reference - - , - - - - - -
             ::= 'HOLD' 'LOCATOR*' locator_reference ( ',' locator_reference )*
    -
    - referenced by: - - SQL_data_statement - preparable_SQL_data_statement - - call_statement: - - - - - - - - CALL - - - routine_invocation - - - - -
             ::= 'CALL' routine_invocation
    -
    - referenced by: - - SQL_control_statement - - return_statement: - - - - - - - - RETURN - - - return_value - - - - -
             ::= 'RETURN' return_value
    -
    - referenced by: - - SQL_control_statement - - return_value: - - - - - - - - value_expression - - NULL - - - - - -
             ::= value_expression
    -
               | 'NULL'
    -
    - referenced by: - - return_statement - - start_transaction_statement: - - - - - - - - START - - - TRANSACTION* - - - transaction_characteristics - - - - -
             ::= 'START' 'TRANSACTION*' transaction_characteristics?
    -
    - referenced by: - - SQL_transaction_statement - - set_transaction_statement: - - - - - - - - SET - - - LOCAL - - - TRANSACTION* - - - transaction_characteristics - - - - -
             ::= 'SET' 'LOCAL'? 'TRANSACTION*' transaction_characteristics
    -
    - referenced by: - - SQL_transaction_statement - - transaction_characteristics: - - - - - - - - transaction_mode - - , - - - - - -
             ::= ( transaction_mode ( ',' transaction_mode )* )?
    -
    - referenced by: - - set_transaction_statement - start_transaction_statement - - transaction_mode: - - - - - - - - isolation_level - - - transaction_access_mode - - - diagnostics_size - - - - -
             ::= isolation_level
    -
               | transaction_access_mode
    -
               | diagnostics_size
    -
    - referenced by: - - session_transaction_characteristics - transaction_characteristics - - transaction_access_mode: - - - - - - - - READ* - - - ONLY - - - WRITE* - - - - - -
             ::= 'READ*' ( 'ONLY' | 'WRITE*' )
    -
    - referenced by: - - transaction_mode - - isolation_level: - - - - - - - - ISOLATION* - - - LEVEL* - - - level_of_isolation - - - - -
             ::= 'ISOLATION*' 'LEVEL*' level_of_isolation
    -
    - referenced by: - - transaction_mode - - level_of_isolation: - - - - - - - - READ* - - - UNCOMMITTED* - - - COMMITTED* - - - REPEATABLE* - - - READ* - - - SERIALIZABLE* - - - - - -
             ::= 'READ*' ( 'UNCOMMITTED*' | 'COMMITTED*' )
    -
               | 'REPEATABLE*' 'READ*'
    -
               | 'SERIALIZABLE*'
    -
    - referenced by: - - isolation_level - - diagnostics_size: - - - - - - - - DIAGNOSTICS* - - - SIZE* - - - number_of_conditions - - - - -
             ::= 'DIAGNOSTICS*' 'SIZE*' number_of_conditions
    -
    - referenced by: - - transaction_mode - - number_of_conditions: - - - - - - - - simple_value_specification - - - - -
             ::= simple_value_specification
    -
    - referenced by: - - diagnostics_size - - set_constraints_mode_statement: - - - - - - - - SET - - - CONSTRAINTS* - - - constraint_name_list - - DEFERRED* - - - IMMEDIATE* - - - - - -
             ::= 'SET' 'CONSTRAINTS*' constraint_name_list ( 'DEFERRED*' | 'IMMEDIATE*' )
    -
    - referenced by: - - SQL_transaction_statement - - constraint_name_list: - - - - - - - - ALL - - - constraint_name - - , - - - - - -
             ::= 'ALL'
    -
               | constraint_name ( ',' constraint_name )*
    -
    - referenced by: - - set_constraints_mode_statement - - savepoint_statement: - - - - - - - - SAVEPOINT - - - savepoint_specifier - - - - -
             ::= 'SAVEPOINT' savepoint_specifier
    -
    - referenced by: - - SQL_transaction_statement - - savepoint_specifier: - - - - - - - - savepoint_name - - - - -
             ::= savepoint_name
    -
    - referenced by: - - release_savepoint_statement - savepoint_clause - savepoint_statement - - release_savepoint_statement: - - - - - - - - RELEASE - - - SAVEPOINT - - - savepoint_specifier - - - - -
             ::= 'RELEASE' 'SAVEPOINT' savepoint_specifier
    -
    - referenced by: - - SQL_transaction_statement - - commit_statement: - - - - - - - - COMMIT - - - WORK* - - - AND - - - NO - - - CHAIN* - - - - - -
             ::= 'COMMIT' 'WORK*'? ( 'AND' 'NO'? 'CHAIN*' )?
    -
    - referenced by: - - SQL_transaction_statement - - rollback_statement: - - - - - - - - ROLLBACK - - - WORK* - - - AND - - - NO - - - CHAIN* - - - savepoint_clause - - - - -
             ::= 'ROLLBACK' 'WORK*'? ( 'AND' 'NO'? 'CHAIN*' )? savepoint_clause?
    -
    - referenced by: - - SQL_transaction_statement - - savepoint_clause: - - - - - - - - TO - - - SAVEPOINT - - - savepoint_specifier - - - - -
             ::= 'TO' 'SAVEPOINT' savepoint_specifier
    -
    - referenced by: - - rollback_statement - - connect_statement: - - - - - - - - CONNECT - - - TO - - - connection_target - - - - -
             ::= 'CONNECT' 'TO' connection_target
    -
    - referenced by: - - SQL_connection_statement - - connection_target: - - - - - - - - SQL_server_name - - AS - - - connection_name - - USER - - - connection_user_name - - DEFAULT - - - - - -
             ::= SQL_server_name ( 'AS' connection_name )? ( 'USER' connection_user_name )?
    -
               | 'DEFAULT'
    -
    - referenced by: - - connect_statement - - set_connection_statement: - - - - - - - - SET - - - CONNECTION* - - - connection_object - - - - -
             ::= 'SET' 'CONNECTION*' connection_object
    -
    - referenced by: - - SQL_connection_statement - - connection_object: - - - - - - - - DEFAULT - - - connection_name - - - - -
             ::= 'DEFAULT'
    -
               | connection_name
    -
    - referenced by: - - disconnect_object - set_connection_statement - - disconnect_statement: - - - - - - - - DISCONNECT - - - disconnect_object - - - - -
             ::= 'DISCONNECT' disconnect_object
    -
    - referenced by: - - SQL_connection_statement - - disconnect_object: - - - - - - - - connection_object - - ALL - - - CURRENT - - - - - -
             ::= connection_object
    -
               | 'ALL'
    -
               | 'CURRENT'
    -
    - referenced by: - - disconnect_statement - - set_session_characteristics_statement: - - - - - - - - SET - - - SESSION* - - - CHARACTERISTICS* - - - AS - - - session_characteristic_list - - - - -
             ::= 'SET' 'SESSION*' 'CHARACTERISTICS*' 'AS' session_characteristic_list
    -
    - referenced by: - - SQL_session_statement - - session_characteristic_list: - - - - - - - - session_characteristic - - , - - - - - -
             ::= session_characteristic ( ',' session_characteristic )*
    -
    - referenced by: - - set_session_characteristics_statement - - session_characteristic: - - - - - - - - session_transaction_characteristics - - - - - - - referenced by: - - session_characteristic_list - - session_transaction_characteristics: - - - - - - - - TRANSACTION* - - - transaction_mode - - , - - - - - -
             ::= 'TRANSACTION*' transaction_mode ( ',' transaction_mode )*
    -
    - referenced by: - - session_characteristic - - set_session_user_identifier_statement: - - - - - - - - SET - - - SESSION* - - - AUTHORIZATION - - - value_specification - - - - -
             ::= 'SET' 'SESSION*' 'AUTHORIZATION' value_specification
    -
    - referenced by: - - SQL_session_statement - - set_role_statement: - - - - - - - - SET - - - ROLE* - - - role_specification - - - - -
             ::= 'SET' 'ROLE*' role_specification
    -
    - referenced by: - - SQL_session_statement - - role_specification: - - - - - - - - value_specification - - NONE - - - - - -
             ::= value_specification
    -
               | 'NONE'
    -
    - referenced by: - - set_role_statement - - set_local_time_zone_statement: - - - - - - - - SET - - - TIME - - - ZONE* - - - set_time_zone_value - - - - -
             ::= 'SET' 'TIME' 'ZONE*' set_time_zone_value
    -
    - referenced by: - - SQL_session_statement - - set_time_zone_value: - - - - - - - - interval_value_expression - - LOCAL - - - - - -
             ::= interval_value_expression
    -
               | 'LOCAL'
    -
    - referenced by: - - set_local_time_zone_statement - - set_catalog_statement: - - - - - - - - SET - - - catalog_name_characteristic - - - - -
             ::= 'SET' catalog_name_characteristic
    -
    - referenced by: - - SQL_session_statement - - catalog_name_characteristic: - - - - - - - - CATALOG* - - - value_specification - - - - -
             ::= 'CATALOG*' value_specification
    -
    - referenced by: - - set_catalog_statement - - set_schema_statement: - - - - - - - - SET - - - schema_name_characteristic - - - - -
             ::= 'SET' schema_name_characteristic
    -
    - referenced by: - - SQL_session_statement - - schema_name_characteristic: - - - - - - - - SCHEMA* - - - value_specification - - - - -
             ::= 'SCHEMA*' value_specification
    -
    - referenced by: - - set_schema_statement - - set_names_statement: - - - - - - - - SET - - - character_set_name_characteristic - - - - -
             ::= 'SET' character_set_name_characteristic
    -
    - referenced by: - - SQL_session_statement - - character_set_name_characteristic: - - - - - - - - NAMES* - - - value_specification - - - - -
             ::= 'NAMES*' value_specification
    -
    - referenced by: - - set_names_statement - - set_path_statement: - - - - - - - - SET - - - SQL_path_characteristic - - - - -
             ::= 'SET' SQL_path_characteristic
    -
    - referenced by: - - SQL_session_statement - - SQL_path_characteristic: - - - - - - - - PATH* - - - value_specification - - - - -
             ::= 'PATH*' value_specification
    -
    - referenced by: - - set_path_statement - - set_transform_group_statement: - - - - - - - - SET - - - transform_group_characteristic - - - - -
             ::= 'SET' transform_group_characteristic
    -
    - referenced by: - - SQL_session_statement - - transform_group_characteristic: - - - - - - - - DEFAULT - - - TRANSFORM* - - - GROUP - - - TRANSFORM* - - - GROUP - - - FOR - - - TYPE* - - - path_resolved_user_defined_type_name - - - value_specification - - - - -
             ::= ( 'DEFAULT' 'TRANSFORM*' 'GROUP' | 'TRANSFORM*' 'GROUP' 'FOR' 'TYPE*' - path_resolved_user_defined_type_name ) value_specification
    -
    - referenced by: - - set_transform_group_statement - - set_session_collation_statement: - - - - - - - - SET - - - COLLATION* - - - collation_specification - - NO - - - COLLATION* - - - FOR - - - character_set_specification_list - - - - -
             ::= 'SET' ( 'COLLATION*' collation_specification | 'NO' 'COLLATION*' ) ( 'FOR' character_set_specification_list )?
    -
    - referenced by: - - SQL_session_statement - - collation_specification: - - - - - - - - value_specification - - - - -
             ::= value_specification
    -
    - referenced by: - - set_session_collation_statement - - allocate_descriptor_statement: - - - - - - - - ALLOCATE - - - SQL - - - DESCRIPTOR* - - - conventional_descriptor_name - - WITH - - - MAX - - - occurrences - - - - -
             ::= 'ALLOCATE' 'SQL'? 'DESCRIPTOR*' conventional_descriptor_name ( 'WITH' 'MAX' occurrences )?
    -
    - referenced by: - - SQL_descriptor_statement - - occurrences: - - - - - - - - simple_value_specification - - - - -
             ::= simple_value_specification
    -
    - referenced by: - - allocate_descriptor_statement - - deallocate_descriptor_statement: - - - - - - - - DEALLOCATE - - - SQL - - - DESCRIPTOR* - - - conventional_descriptor_name - - - - -
             ::= 'DEALLOCATE' 'SQL'? 'DESCRIPTOR*' conventional_descriptor_name
    -
    - referenced by: - - SQL_descriptor_statement - - get_descriptor_statement: - - - - - - - - GET - - - SQL - - - DESCRIPTOR* - - - descriptor_name - - - get_descriptor_information - - - - -
             ::= 'GET' 'SQL'? 'DESCRIPTOR*' descriptor_name get_descriptor_information
    -
    - referenced by: - - SQL_descriptor_statement - - get_descriptor_information: - - - - - - - - get_header_information - - , - - - VALUE - - - item_number - - - get_item_information - - , - - - - - -
             ::= get_header_information ( ',' get_header_information )*
    -
               | 'VALUE' item_number get_item_information ( ',' get_item_information )*
    -
    - referenced by: - - get_descriptor_statement - - get_header_information: - - - - - - - - simple_target_specification_1 - - = - - - header_item_name - - - - - - - referenced by: - - get_descriptor_information - - header_item_name: - - - - - - - - COUNT - - - KEY_TYPE* - - - DYNAMIC_FUNCTION* - - - DYNAMIC_FUNCTION_CODE* - - - TOP_LEVEL_COUNT* - - - - - -
             ::= 'COUNT'
    -
               | 'KEY_TYPE*'
    -
               | 'DYNAMIC_FUNCTION*'
    -
               | 'DYNAMIC_FUNCTION_CODE*'
    -
               | 'TOP_LEVEL_COUNT*'
    -
    - referenced by: - - get_header_information - set_header_information - - get_item_information: - - - - - - - - simple_target_specification_2 - - = - - - descriptor_item_name - - - - - - - referenced by: - - get_descriptor_information - - item_number: - - - - - - - - simple_value_specification - - - - -
             ::= simple_value_specification
    -
    - referenced by: - - get_descriptor_information - set_descriptor_information - - simple_target_specification_1: - - - - - - - - simple_target_specification - - - - -
             ::= simple_target_specification
    -
    - referenced by: - - get_header_information - - simple_target_specification_2: - - - - - - - - simple_target_specification - - - - -
             ::= simple_target_specification
    -
    - referenced by: - - get_item_information - - descriptor_item_name: - - - - - - - - CARDINALITY - - - CHARACTER_SET_CATALOG* - - - CHARACTER_SET_NAME* - - - CHARACTER_SET_SCHEMA* - - - COLLATION_CATALOG* - - - COLLATION_NAME* - - - COLLATION_SCHEMA* - - - DATA* - - - DATETIME_INTERVAL_CODE* - - - DATETIME_INTERVAL_PRECISION* - - - DEGREE* - - - INDICATOR - - - KEY_MEMBER* - - - LENGTH* - - - LEVEL* - - - NAME* - - - NULLABLE* - - - NULL_ORDERING - - OCTET_LENGTH - - - PARAMETER_MODE* - - - PARAMETER_ORDINAL_POSITION* - - - PARAMETER_SPECIFIC_CATALOG* - - - PARAMETER_SPECIFIC_NAME* - - - PARAMETER_SPECIFIC_SCHEMA* - - - PRECISION - - - RETURNED_CARDINALITY* - - - RETURNED_LENGTH* - - - RETURNED_OCTET_LENGTH* - - - SCALE* - - - SCOPE_CATALOG* - - - SCOPE_NAME* - - - SCOPE_SCHEMA* - - - SORT_DIRECTION - - TYPE* - - - UNNAMED* - - - USER_DEFINED_TYPE_CATALOG* - - - USER_DEFINED_TYPE_NAME* - - - USER_DEFINED_TYPE_SCHEMA* - - - USER_DEFINED_TYPE_CODE* - - - - - -
             ::= 'CARDINALITY'
    -
               | 'CHARACTER_SET_CATALOG*'
    -
               | 'CHARACTER_SET_NAME*'
    -
               | 'CHARACTER_SET_SCHEMA*'
    -
               | 'COLLATION_CATALOG*'
    -
               | 'COLLATION_NAME*'
    -
               | 'COLLATION_SCHEMA*'
    -
               | 'DATA*'
    -
               | 'DATETIME_INTERVAL_CODE*'
    -
               | 'DATETIME_INTERVAL_PRECISION*'
    -
               | 'DEGREE*'
    -
               | 'INDICATOR'
    -
               | 'KEY_MEMBER*'
    -
               | 'LENGTH*'
    -
               | 'LEVEL*'
    -
               | 'NAME*'
    -
               | 'NULLABLE*'
    -
               | NULL_ORDERING
    -
               | 'OCTET_LENGTH'
    -
               | 'PARAMETER_MODE*'
    -
               | 'PARAMETER_ORDINAL_POSITION*'
    -
               | 'PARAMETER_SPECIFIC_CATALOG*'
    -
               | 'PARAMETER_SPECIFIC_NAME*'
    -
               | 'PARAMETER_SPECIFIC_SCHEMA*'
    -
               | 'PRECISION'
    -
               | 'RETURNED_CARDINALITY*'
    -
               | 'RETURNED_LENGTH*'
    -
               | 'RETURNED_OCTET_LENGTH*'
    -
               | 'SCALE*'
    -
               | 'SCOPE_CATALOG*'
    -
               | 'SCOPE_NAME*'
    -
               | 'SCOPE_SCHEMA*'
    -
               | SORT_DIRECTION
    -
               | 'TYPE*'
    -
               | 'UNNAMED*'
    -
               | 'USER_DEFINED_TYPE_CATALOG*'
    -
               | 'USER_DEFINED_TYPE_NAME*'
    -
               | 'USER_DEFINED_TYPE_SCHEMA*'
    -
               | 'USER_DEFINED_TYPE_CODE*'
    -
    - referenced by: - - get_item_information - set_item_information - - set_descriptor_statement: - - - - - - - - SET - - - SQL - - - DESCRIPTOR* - - - descriptor_name - - - set_descriptor_information - - - - -
             ::= 'SET' 'SQL'? 'DESCRIPTOR*' descriptor_name set_descriptor_information
    -
    - referenced by: - - SQL_descriptor_statement - - set_descriptor_information: - - - - - - - - set_header_information - - , - - - VALUE - - - item_number - - - set_item_information - - , - - - - - -
             ::= set_header_information ( ',' set_header_information )*
    -
               | 'VALUE' item_number set_item_information ( ',' set_item_information )*
    -
    - referenced by: - - set_descriptor_statement - - set_header_information: - - - - - - - - header_item_name - - = - - - simple_value_specification_1 - - - - - - - referenced by: - - set_descriptor_information - - set_item_information: - - - - - - - - descriptor_item_name - - = - - - simple_value_specification_2 - - - - - - - referenced by: - - set_descriptor_information - - simple_value_specification_1: - - - - - - - - simple_value_specification - - - - -
             ::= simple_value_specification
    -
    - referenced by: - - set_header_information - - simple_value_specification_2: - - - - - - - - simple_value_specification - - - - -
             ::= simple_value_specification
    -
    - referenced by: - - set_item_information - - copy_descriptor_statement: - - - - - - - - copy_whole_descriptor_statement - - - copy_item_descriptor_statement - - - - -
             ::= copy_whole_descriptor_statement
    -
               | copy_item_descriptor_statement
    -
    - referenced by: - - SQL_dynamic_statement - - copy_whole_descriptor_statement: - - - - - - - - COPY - - - source_descriptor_name - - TO - - - target_descriptor_name - - - - -
             ::= 'COPY' source_descriptor_name 'TO' target_descriptor_name
    -
    - referenced by: - - copy_descriptor_statement - - copy_item_descriptor_statement: - - - - - - - - COPY - - - source_descriptor_name - - VALUE - - - item_number_1 - - ( - - - copy_descriptor_options - - ) - - - TO - - - target_descriptor_name - - VALUE - - - item_number_2 - - - - -
             ::= 'COPY' source_descriptor_name 'VALUE' item_number_1 '(' copy_descriptor_options ')' 'TO' target_descriptor_name 'VALUE' item_number_2
    -
    - referenced by: - - copy_descriptor_statement - - source_descriptor_name: - - - - - - - - descriptor_name - - - - -
             ::= descriptor_name
    -
    - referenced by: - - copy_item_descriptor_statement - copy_whole_descriptor_statement - - target_descriptor_name: - - - - - - - - PTF_descriptor_name - - - - -
             ::= PTF_descriptor_name
    -
    - referenced by: - - copy_item_descriptor_statement - copy_whole_descriptor_statement - - item_number_1: - - - - - - - - simple_value_specification - - - - -
             ::= simple_value_specification
    -
    - referenced by: - - copy_item_descriptor_statement - - item_number_2: - - - - - - - - simple_value_specification - - - - -
             ::= simple_value_specification
    -
    - referenced by: - - copy_item_descriptor_statement - - copy_descriptor_options: - - - - - - - - NAME* - - - , - - - TYPE* - - - TYPE* - - - DATA* - - - - - -
             ::= 'NAME*' ( ',' 'TYPE*' )?
    -
               | 'TYPE*'
    -
               | 'DATA*'
    -
    - referenced by: - - copy_item_descriptor_statement - - prepare_statement: - - - - - - - - PREPARE - - - SQL_statement_name - - - attributes_specification - - FROM - - - SQL_statement_variable - - - - - - - referenced by: - - SQL_dynamic_statement - - attributes_specification: - - - - - - - - ATTRIBUTES* - - - attributes_variable - - - - -
             ::= 'ATTRIBUTES*' attributes_variable
    -
    - referenced by: - - prepare_statement - - attributes_variable: - - - - - - - - simple_value_specification - - - - -
             ::= simple_value_specification
    -
    - referenced by: - - attributes_specification - - SQL_statement_variable: - - - - - - - - simple_value_specification - - - - -
             ::= simple_value_specification
    -
    - referenced by: - - execute_immediate_statement - prepare_statement - - preparable_statement: - - - - - - - - preparable_SQL_data_statement - - - preparable_SQL_schema_statement - - - preparable_SQL_transaction_statement - - - preparable_SQL_control_statement - - - preparable_SQL_session_statement - - !! See the Syntax Rules. - - - - - -
             ::= preparable_SQL_data_statement
    -
               | preparable_SQL_schema_statement
    -
               | preparable_SQL_transaction_statement
    -
               | preparable_SQL_control_statement
    -
               | preparable_SQL_session_statement
    -
               | '!! See the Syntax Rules.'
    -
    - no referencespreparable_SQL_data_statement: - - - - - - - - delete_statement__searched - - - dynamic_single_row_select_statement - - - insert_statement - - - dynamic_select_statement - - - update_statement__searched - - - truncate_table_statement - - - merge_statement - - - preparable_dynamic_delete_statement__positioned - - - preparable_dynamic_update_statement__positioned - - - hold_locator_statement - - - free_locator_statement - - - - -
             ::= delete_statement__searched
    -
               | dynamic_single_row_select_statement
    -
               | insert_statement
    -
               | dynamic_select_statement
    -
               | update_statement__searched
    -
               | truncate_table_statement
    -
               | merge_statement
    - - -
               | hold_locator_statement
    -
               | free_locator_statement
    -
    - referenced by: - - preparable_statement - - preparable_SQL_schema_statement: - - - - - - - - SQL_schema_statement - - - - -
             ::= SQL_schema_statement
    -
    - referenced by: - - preparable_statement - - preparable_SQL_transaction_statement: - - - - - - - - SQL_transaction_statement - - - - -
             ::= SQL_transaction_statement
    -
    - referenced by: - - preparable_statement - - preparable_SQL_control_statement: - - - - - - - - SQL_control_statement - - - - -
             ::= SQL_control_statement
    -
    - referenced by: - - preparable_statement - - preparable_SQL_session_statement: - - - - - - - - SQL_session_statement - - - - -
             ::= SQL_session_statement
    -
    - referenced by: - - preparable_statement - - dynamic_select_statement: - - - - - - - - cursor_specification - - - - -
             ::= cursor_specification
    -
    - referenced by: - - preparable_SQL_data_statement - - cursor_attributes: - - - - - - - - cursor_attribute - - - - -
             ::= cursor_attribute+
    -
    - no referencescursor_attribute: - - - - - - - - cursor_sensitivity - - - cursor_scrollability - - - cursor_holdability - - - cursor_returnability - - - - -
             ::= cursor_sensitivity
    -
               | cursor_scrollability
    -
               | cursor_holdability
    -
               | cursor_returnability
    -
    - referenced by: - - cursor_attributes - - deallocate_prepared_statement: - - - - - - - - DEALLOCATE - - - PREPARE - - - SQL_statement_name - - - - -
             ::= 'DEALLOCATE' 'PREPARE' SQL_statement_name
    -
    - referenced by: - - SQL_dynamic_statement - - describe_statement: - - - - - - - - describe_input_statement - - - describe_output_statement - - - - -
             ::= describe_input_statement
    -
               | describe_output_statement
    -
    - referenced by: - - SQL_dynamic_statement - - describe_input_statement: - - - - - - - - DESCRIBE - - - INPUT* - - - SQL_statement_name - - - using_descriptor - - - nesting_option - - - - -
             ::= 'DESCRIBE' 'INPUT*' SQL_statement_name using_descriptor nesting_option?
    -
    - referenced by: - - describe_statement - - describe_output_statement: - - - - - - - - DESCRIBE - - - OUTPUT* - - - described_object - - - using_descriptor - - - nesting_option - - - - -
             ::= 'DESCRIBE' 'OUTPUT*'? described_object using_descriptor nesting_option?
    -
    - referenced by: - - describe_statement - - nesting_option: - - - - - - - - WITH - - - WITHOUT - - - NESTING* - - - - - -
             ::= ( 'WITH' | 'WITHOUT' ) 'NESTING*'
    -
    - referenced by: - - describe_input_statement - describe_output_statement - - using_descriptor: - - - - - - - - USING - - - SQL - - - DESCRIPTOR* - - - descriptor_name - - - - -
             ::= 'USING' 'SQL'? 'DESCRIPTOR*' descriptor_name
    -
    - referenced by: - - describe_input_statement - describe_output_statement - using_input_descriptor - - described_object: - - - - - - - - SQL_statement_name - - CURSOR - - - cursor_name - - STRUCTURE* - - - - - -
             ::= SQL_statement_name
    -
               | 'CURSOR' cursor_name 'STRUCTURE*'
    -
    - referenced by: - - describe_output_statement - - input_using_clause: - - - - - - - - using_arguments - - - using_input_descriptor - - - - -
             ::= using_arguments
    -
               | using_input_descriptor
    -
    - referenced by: - - dynamic_open_statement - parameter_using_clause - - using_arguments: - - - - - - - - USING - - - using_argument - - , - - - - - -
             ::= 'USING' using_argument ( ',' using_argument )*
    -
    - referenced by: - - input_using_clause - - using_argument: - - - - - - - - general_value_specification - - - - -
             ::= general_value_specification
    -
    - referenced by: - - using_arguments - - using_input_descriptor: - - - - - - - - using_descriptor - - - - -
             ::= using_descriptor
    -
    - referenced by: - - input_using_clause - - output_using_clause: - - - - - - - - into_arguments - - - into_descriptor - - - - -
             ::= into_arguments
    -
               | into_descriptor
    -
    - referenced by: - - dynamic_fetch_statement - result_using_clause - - into_arguments: - - - - - - - - INTO - - - into_argument - - , - - - - - -
             ::= 'INTO' into_argument ( ',' into_argument )*
    -
    - referenced by: - - output_using_clause - - into_argument: - - - - - - - - target_specification - - - - -
             ::= target_specification
    -
    - referenced by: - - into_arguments - - into_descriptor: - - - - - - - - INTO - - - SQL - - - DESCRIPTOR* - - - descriptor_name - - - - -
             ::= 'INTO' 'SQL'? 'DESCRIPTOR*' descriptor_name
    -
    - referenced by: - - output_using_clause - - execute_statement: - - - - - - - - EXECUTE - - - SQL_statement_name - - - result_using_clause - - - parameter_using_clause - - - - - - - referenced by: - - SQL_dynamic_statement - - result_using_clause: - - - - - - - - output_using_clause - - - - -
             ::= output_using_clause
    -
    - referenced by: - - execute_statement - - parameter_using_clause: - - - - - - - - input_using_clause - - - - -
             ::= input_using_clause
    -
    - referenced by: - - execute_statement - - execute_immediate_statement: - - - - - - - - EXECUTE - - - IMMEDIATE* - - - SQL_statement_variable - - - - -
             ::= 'EXECUTE' 'IMMEDIATE*' SQL_statement_variable
    -
    - referenced by: - - SQL_dynamic_statement - - dynamic_declare_cursor: - - - - - - - - DECLARE - - - cursor_name - - - cursor_properties - - FOR - - - statement_name - - - - -
             ::= 'DECLARE' cursor_name cursor_properties 'FOR' statement_name
    -
    - referenced by: - - module_contents - statement_or_declaration - - descriptor_value_constructor: - - - - - - - - DESCRIPTOR* - - - ( - - - descriptor_column_list - - ) - - - - - -
             ::= 'DESCRIPTOR*' '(' descriptor_column_list ')'
    -
    - referenced by: - - descriptor_argument - parameter_default - - descriptor_column_list: - - - - - - - - descriptor_column_specification - - , - - - - - - - - referenced by: - - descriptor_value_constructor - - descriptor_column_specification: - - - - - - - - column_name - - - data_type - - - - -
             ::= column_name data_type?
    -
    - referenced by: - - descriptor_column_list - - allocate_extended_dynamic_cursor_statement: - - - - - - - - ALLOCATE - - - extended_cursor_name - - - cursor_properties - - FOR - - - extended_statement_name - - - - -
             ::= 'ALLOCATE' extended_cursor_name cursor_properties 'FOR' extended_statement_name
    -
    - referenced by: - - SQL_dynamic_data_statement - - allocate_received_cursor_statement: - - - - - - - - ALLOCATE - - - cursor_name - - CURSOR - - - FOR - - - PROCEDURE - - - specific_routine_designator - - - - -
             ::= 'ALLOCATE' cursor_name 'CURSOR'? 'FOR' 'PROCEDURE' specific_routine_designator
    -
    - referenced by: - - SQL_dynamic_data_statement - - dynamic_open_statement: - - - - - - - - OPEN - - - conventional_dynamic_cursor_name - - - input_using_clause - - - - - - - referenced by: - - SQL_dynamic_data_statement - - dynamic_fetch_statement: - - - - - - - - FETCH - - - fetch_orientation - - FROM - - - dynamic_cursor_name - - - output_using_clause - - - - -
             ::= 'FETCH' ( fetch_orientation? 'FROM' )? dynamic_cursor_name output_using_clause
    -
    - referenced by: - - SQL_dynamic_data_statement - - dynamic_single_row_select_statement: - - - - - - - - query_specification - - - - -
             ::= query_specification
    -
    - referenced by: - - preparable_SQL_data_statement - - dynamic_close_statement: - - - - - - - - CLOSE - - - conventional_dynamic_cursor_name - - - - -
             ::= 'CLOSE' conventional_dynamic_cursor_name
    -
    - referenced by: - - SQL_dynamic_data_statement - - dynamic_delete_statement__positioned: - - - - - - - - DELETE - - - FROM - - - target_table - - WHERE - - - CURRENT - - - OF - - - conventional_dynamic_cursor_name - - - - -
             ::= 'DELETE' 'FROM' target_table 'WHERE' 'CURRENT' 'OF' conventional_dynamic_cursor_name
    -
    - referenced by: - - SQL_dynamic_data_statement - - dynamic_update_statement__positioned: - - - - - - - - UPDATE - - - target_table - - SET - - - set_clause_list - - WHERE - - - CURRENT - - - OF - - - conventional_dynamic_cursor_name - - - - -
             ::= 'UPDATE' target_table 'SET' set_clause_list 'WHERE' 'CURRENT' 'OF' conventional_dynamic_cursor_name
    -
    - referenced by: - - SQL_dynamic_data_statement - - preparable_dynamic_delete_statement__positioned: - - - - - - - - DELETE - - - FROM - - - target_table - - WHERE - - - CURRENT - - - OF - - - preparable_dynamic_cursor_name - - - - -
             ::= 'DELETE' ( 'FROM' target_table )? 'WHERE' 'CURRENT' 'OF' preparable_dynamic_cursor_name
    -
    - referenced by: - - preparable_SQL_data_statement - - preparable_dynamic_cursor_name: - - - - - - - - scope_option - - - cursor_name - - - - -
             ::= scope_option? cursor_name
    -
    - referenced by: - - preparable_dynamic_delete_statement__positioned - preparable_dynamic_update_statement__positioned - - preparable_dynamic_update_statement__positioned: - - - - - - - - UPDATE - - - target_table - - SET - - - set_clause_list - - WHERE - - - CURRENT - - - OF - - - preparable_dynamic_cursor_name - - - - -
             ::= 'UPDATE' target_table? 'SET' set_clause_list 'WHERE' 'CURRENT' 'OF' preparable_dynamic_cursor_name
    -
    - referenced by: - - preparable_SQL_data_statement - - pipe_row_statement: - - - - - - - - PIPE - - ROW - - - PTF_descriptor_name - - - - -
             ::= PIPE 'ROW' PTF_descriptor_name
    -
    - referenced by: - - SQL_dynamic_statement - - embedded_SQL_host_program: - - - - - - - - !! See the Syntax Rules. - - - - - -
             ::= '!! See the Syntax Rules.'
    -
    - no referencesembedded_SQL_statement: - - - - - - - - SQL_prefix - - - statement_or_declaration - - - SQL_terminator - - - - - - - no referencesstatement_or_declaration: - - - - - - - - declare_cursor - - - dynamic_declare_cursor - - - temporary_table_declaration - - - embedded_authorization_declaration - - - embedded_path_specification - - - embedded_transform_group_specification - - - embedded_collation_specification - - - embedded_exception_declaration - - - SQL_procedure_statement - - - - -
             ::= declare_cursor
    -
               | dynamic_declare_cursor
    -
               | temporary_table_declaration
    -
               | embedded_authorization_declaration
    -
               | embedded_path_specification
    - -
               | embedded_collation_specification
    -
               | embedded_exception_declaration
    -
               | SQL_procedure_statement
    -
    - referenced by: - - embedded_SQL_statement - - SQL_prefix: - - - - - - - - EXEC - - - SQL - - - & - - - SQL - - - ( - - - - - -
             ::= 'EXEC' 'SQL'
    -
               | '&' 'SQL' '('
    -
    - referenced by: - - embedded_SQL_MUMPS_declare - embedded_SQL_begin_declare - embedded_SQL_end_declare - embedded_SQL_statement - - SQL_terminator: - - - - - - - - END - - - EXEC - - - ; - - - ) - - - - - -
             ::= 'END' 'EXEC'
    -
               | ';'
    -
               | ')'
    -
    - referenced by: - - embedded_SQL_MUMPS_declare - embedded_SQL_begin_declare - embedded_SQL_end_declare - embedded_SQL_statement - - embedded_authorization_declaration: - - - - - - - - DECLARE - - - embedded_authorization_clause - - - - -
             ::= 'DECLARE' embedded_authorization_clause
    -
    - referenced by: - - statement_or_declaration - - embedded_authorization_clause: - - - - - - - - SCHEMA* - - - schema_name - - AUTHORIZATION - - - embedded_authorization_identifier - - FOR - - - STATIC - - - ONLY - - - AND - - - DYNAMIC - - - AUTHORIZATION - - - embedded_authorization_identifier - - FOR - - - STATIC - - - ONLY - - - AND - - - DYNAMIC - - - - - -
             ::= 'SCHEMA*' schema_name ( 'AUTHORIZATION' embedded_authorization_identifier ( 'FOR' 'STATIC' ( 'ONLY' | 'AND' 'DYNAMIC' ) )? )?
    -
               | 'AUTHORIZATION' embedded_authorization_identifier ( 'FOR' 'STATIC' ( 'ONLY' | 'AND' 'DYNAMIC' ) )?
    -
    - referenced by: - - embedded_authorization_declaration - - embedded_authorization_identifier: - - - - - - - - module_authorization_identifier - - - - -
             ::= module_authorization_identifier
    -
    - referenced by: - - embedded_authorization_clause - - embedded_path_specification: - - - - - - - - path_specification - - - - -
             ::= path_specification
    -
    - referenced by: - - statement_or_declaration - - embedded_transform_group_specification: - - - - - - - - transform_group_specification - - - - -
             ::= transform_group_specification
    -
    - referenced by: - - statement_or_declaration - - embedded_collation_specification: - - - - - - - - module_collations - - - - -
             ::= module_collations
    -
    - referenced by: - - statement_or_declaration - - embedded_SQL_declare_section: - - - - - - - - embedded_SQL_begin_declare - - - embedded_character_set_declaration - - - host_variable_definition - - - embedded_SQL_end_declare - - - embedded_SQL_MUMPS_declare - - - - - -
               | embedded_SQL_MUMPS_declare
    -
    - no referencesembedded_character_set_declaration: - - - - - - - - SQL - - - NAMES* - - - ARE - - - character_set_specification - - - - -
             ::= 'SQL' 'NAMES*' 'ARE' character_set_specification
    -
    - referenced by: - - embedded_SQL_MUMPS_declare - embedded_SQL_declare_section - - embedded_SQL_begin_declare: - - - - - - - - SQL_prefix - - BEGIN - - - DECLARE - - - SECTION* - - - SQL_terminator - - - - -
             ::= SQL_prefix 'BEGIN' 'DECLARE' 'SECTION*' SQL_terminator?
    -
    - referenced by: - - embedded_SQL_declare_section - - embedded_SQL_end_declare: - - - - - - - - SQL_prefix - - END - - - DECLARE - - - SECTION* - - - SQL_terminator - - - - -
             ::= SQL_prefix 'END' 'DECLARE' 'SECTION*' SQL_terminator?
    -
    - referenced by: - - embedded_SQL_declare_section - - embedded_SQL_MUMPS_declare: - - - - - - - - SQL_prefix - - BEGIN - - - DECLARE - - - SECTION* - - - embedded_character_set_declaration - - - host_variable_definition - - END - - - DECLARE - - - SECTION* - - - SQL_terminator - - - - -
             ::= SQL_prefix 'BEGIN' 'DECLARE' 'SECTION*' embedded_character_set_declaration? host_variable_definition* 'END' 'DECLARE' 'SECTION*' SQL_terminator
    -
    - referenced by: - - embedded_SQL_declare_section - - host_variable_definition: - - - - - - - - Ada_variable_definition - - - C_variable_definition - - - COBOL_variable_definition - - - Fortran_variable_definition - - - MUMPS_variable_definition - - - Pascal_variable_definition - - - PL_I_variable_definition - - - - -
             ::= Ada_variable_definition
    -
               | C_variable_definition
    -
               | COBOL_variable_definition
    -
               | Fortran_variable_definition
    -
               | MUMPS_variable_definition
    -
               | Pascal_variable_definition
    -
               | PL_I_variable_definition
    -
    - referenced by: - - embedded_SQL_MUMPS_declare - embedded_SQL_declare_section - - embedded_variable_name: - - - - - - - - : - - - host_identifier - - - - -
             ::= ':' host_identifier
    -
    - referenced by: - - embedded_variable_specification - indicator_variable - locator_reference - simple_target_specification - simple_value_specification - - host_identifier: - - - - - - - - !! See the Syntax Rules. - - - - - -
             ::= '!! See the Syntax Rules.'
    -
    - referenced by: - - embedded_variable_name - - embedded_exception_declaration: - - - - - - - - WHENEVER - - - condition - - - condition_action - - - - -
             ::= 'WHENEVER' condition condition_action
    -
    - referenced by: - - statement_or_declaration - - condition: - - - - - - - - SQL_condition - - - - -
             ::= SQL_condition
    -
    - referenced by: - - embedded_exception_declaration - - SQL_condition: - - - - - - - - major_category - - SQLSTATE - - - SQLSTATE_class_code - - , - - - SQLSTATE_subclass_code - - CONSTRAINT - - - constraint_name - - - - -
             ::= major_category
    -
               | 'SQLSTATE' SQLSTATE_class_code ( ',' SQLSTATE_subclass_code )?
    -
               | 'CONSTRAINT' constraint_name
    -
    - referenced by: - - condition - - major_category: - - - - - - - - SQLEXCEPTION - - - SQLWARNING - - - NOT - - - FOUND* - - - - - -
             ::= 'SQLEXCEPTION'
    -
               | 'SQLWARNING'
    -
               | 'NOT' 'FOUND*'
    -
    - referenced by: - - SQL_condition - - SQLSTATE_class_code: - - - - - - - - SQLSTATE_char - - - SQLSTATE_char - - !! See the Syntax Rules. - - - - - -
             ::= SQLSTATE_char SQLSTATE_char '!! See the Syntax Rules.'
    -
    - referenced by: - - SQL_condition - - SQLSTATE_subclass_code: - - - - - - - - SQLSTATE_char - - - SQLSTATE_char - - - SQLSTATE_char - - !! See the Syntax Rules. - - - - - -
             ::= SQLSTATE_char SQLSTATE_char SQLSTATE_char '!! See the Syntax Rules.'
    -
    - referenced by: - - SQL_condition - - SQLSTATE_char: - - - - - - - - simple_Latin_upper_case_letter - - - digit - - - - -
             ::= simple_Latin_upper_case_letter
    -
               | digit
    -
    - referenced by: - - SQLSTATE_class_code - SQLSTATE_subclass_code - - condition_action: - - - - - - - - CONTINUE* - - - go_to - - - - -
             ::= 'CONTINUE*'
    -
               | go_to
    -
    - referenced by: - - embedded_exception_declaration - - go_to: - - - - - - - - GOTO* - - - GO* - - - TO - - - goto_target - - - -
    go_to    ::= ( 'GOTO*' | 'GO*' 'TO' ) goto_target
    -
    - referenced by: - - condition_action - - goto_target: - - - - - - - - !! See the Syntax Rules. - - - unsigned_integer - - - - -
             ::= '!! See the Syntax Rules.'
    -
               | unsigned_integer
    -
    - referenced by: - - go_to - - Ada_variable_definition: - - - - - - - - !! See the Syntax Rules. - - - , - - - : - - - Ada_type_specification - - - Ada_initial_value - - - - -
             ::= '!! See the Syntax Rules.' ( ',' '!! See the Syntax Rules.' )* ':' Ada_type_specification Ada_initial_value?
    -
    - referenced by: - - host_variable_definition - - Ada_initial_value: - - - - - - - - Ada_assignment_operator - - - character_representation - - - - - - - referenced by: - - Ada_variable_definition - - Ada_assignment_operator: - - - - - - - - : - - - = - - - - - -
             ::= ':' '='
    -
    - referenced by: - - Ada_initial_value - - Ada_type_specification: - - - - - - - - Ada_qualified_type_specification - - - Ada_unqualified_type_specification - - - Ada_derived_type_specification - - - - -
             ::= Ada_qualified_type_specification
    -
               | Ada_unqualified_type_specification
    -
               | Ada_derived_type_specification
    -
    - referenced by: - - Ada_variable_definition - - Ada_qualified_type_specification: - - - - - - - - Interfaces.SQL.CHAR - - CHARACTER - - - SET - - - IS - - - character_set_specification - - ( - - - 1 - - - .. - - - character_length - - ) - - - Interfaces.SQL.SMALLINT - - - Interfaces.SQL.INT - - - Interfaces.SQL.BIGINT - - - Interfaces.SQL.REAL - - - Interfaces.SQL.DOUBLE_PRECISION - - - Interfaces.SQL.BOOLEAN - - - Interfaces.SQL.SQLSTATE_TYPE - - - Interfaces.SQL.INDICATOR_TYPE - - - - -
             ::= Interfaces.SQL.CHAR ( 'CHARACTER' 'SET' 'IS'? character_set_specification )? '(' '1' '..' character_length ')'
    -
               | Interfaces.SQL.SMALLINT
    -
               | Interfaces.SQL.INT
    -
               | Interfaces.SQL.BIGINT
    -
               | Interfaces.SQL.REAL
    -
               | Interfaces.SQL.DOUBLE_PRECISION
    -
               | Interfaces.SQL.BOOLEAN
    -
               | Interfaces.SQL.SQLSTATE_TYPE
    -
               | Interfaces.SQL.INDICATOR_TYPE
    -
    - referenced by: - - Ada_type_specification - - Ada_unqualified_type_specification: - - - - - - - - CHAR - - - ( - - - 1 - - - .. - - - character_length - - ) - - - SMALLINT - - - INT - - - BIGINT - - - REAL - - - DOUBLE_PRECISION - - BOOLEAN - - - SQLSTATE_TYPE - - - INDICATOR_TYPE - - - - -
             ::= 'CHAR' '(' '1' '..' character_length ')'
    -
               | 'SMALLINT'
    -
               | 'INT'
    -
               | 'BIGINT'
    -
               | 'REAL'
    -
               | DOUBLE_PRECISION
    -
               | 'BOOLEAN'
    -
               | SQLSTATE_TYPE
    -
               | INDICATOR_TYPE
    -
    - referenced by: - - Ada_type_specification - - Ada_derived_type_specification: - - - - - - - - Ada_CLOB_variable - - - Ada_CLOB_locator_variable - - - Ada_BINARY_variable - - - Ada_VARBINARY_variable - - - Ada_BLOB_variable - - - Ada_BLOB_locator_variable - - - Ada_user_defined_type_variable - - - Ada_user_defined_type_locator_variable - - - Ada_REF_variable - - - Ada_array_locator_variable - - - Ada_multiset_locator_variable - - - - -
             ::= Ada_CLOB_variable
    -
               | Ada_CLOB_locator_variable
    -
               | Ada_BINARY_variable
    -
               | Ada_VARBINARY_variable
    -
               | Ada_BLOB_variable
    -
               | Ada_BLOB_locator_variable
    -
               | Ada_user_defined_type_variable
    - -
               | Ada_REF_variable
    -
               | Ada_array_locator_variable
    -
               | Ada_multiset_locator_variable
    -
    - referenced by: - - Ada_type_specification - - Ada_CLOB_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - CLOB - - - ( - - - character_large_object_length - - ) - - - CHARACTER - - - SET - - - IS - - - character_set_specification - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' '(' character_large_object_length ')' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )?
    -
    - referenced by: - - Ada_derived_type_specification - - Ada_CLOB_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - CLOB - - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' 'AS' 'LOCATOR*'
    -
    - referenced by: - - Ada_derived_type_specification - - Ada_BINARY_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - BINARY - - - ( - - - length - - ) - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'BINARY' '(' length ')'
    -
    - referenced by: - - Ada_derived_type_specification - - Ada_VARBINARY_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - VARBINARY - - - ( - - - length - - ) - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'VARBINARY' '(' length ')'
    -
    - referenced by: - - Ada_derived_type_specification - - Ada_BLOB_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - BLOB - - - ( - - - large_object_length - - ) - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' '(' large_object_length ')'
    -
    - referenced by: - - Ada_derived_type_specification - - Ada_BLOB_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - BLOB - - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' 'AS' 'LOCATOR*'
    -
    - referenced by: - - Ada_derived_type_specification - - Ada_user_defined_type_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - path_resolved_user_defined_type_name - - AS - - - predefined_type - - - - -
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' predefined_type
    -
    - referenced by: - - Ada_derived_type_specification - - Ada_user_defined_type_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - path_resolved_user_defined_type_name - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' 'LOCATOR*'
    -
    - referenced by: - - Ada_derived_type_specification - - Ada_REF_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - reference_type - - - - -
             ::= 'SQL' 'TYPE*' 'IS' reference_type
    -
    - referenced by: - - Ada_derived_type_specification - - Ada_array_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - array_type - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' array_type 'AS' 'LOCATOR*'
    -
    - referenced by: - - Ada_derived_type_specification - - Ada_multiset_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - multiset_type - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' multiset_type 'AS' 'LOCATOR*'
    -
    - referenced by: - - Ada_derived_type_specification - - C_variable_definition: - - - - - - - - C_storage_class - - - C_class_modifier - - - C_variable_specification - - ; - - - - - - - - referenced by: - - host_variable_definition - - C_variable_specification: - - - - - - - - C_numeric_variable - - - C_character_variable - - - C_derived_variable - - - - -
             ::= C_numeric_variable
    -
               | C_character_variable
    -
               | C_derived_variable
    -
    - referenced by: - - C_variable_definition - - C_storage_class: - - - - - - - - auto - - - extern - - - static - - - - - -
             ::= 'auto'
    -
               | 'extern'
    -
               | 'static'
    -
    - referenced by: - - C_variable_definition - - C_class_modifier: - - - - - - - - const - - - volatile - - - - - -
             ::= 'const'
    -
               | 'volatile'
    -
    - referenced by: - - C_variable_definition - - C_numeric_variable: - - - - - - - - long - - - long - - - short - - - float - - - double - - - !! See the Syntax Rules. - - - C_initial_value - - , - - - - - -
             ::= ( 'long' 'long'? | 'short' | 'float' | 'double' ) '!! See the Syntax - Rules.' C_initial_value? ( ',' '!! See the Syntax Rules.' C_initial_value? )*
    -
    - referenced by: - - C_variable_specification - - C_character_variable: - - - - - - - - C_character_type - - CHARACTER - - - SET - - - IS - - - character_set_specification - - !! See the Syntax Rules. - - - C_array_specification - - - C_initial_value - - , - - - - - -
             ::= C_character_type ( 'CHARACTER' 'SET' 'IS'? character_set_specification )? '!! See the Syntax Rules.' C_array_specification C_initial_value? ( ',' '!! See the Syntax Rules.' C_array_specification C_initial_value? )*
    -
    - referenced by: - - C_variable_specification - - C_character_type: - - - - - - - - char - - - unsigned - - - char - - - short - - - - - -
             ::= 'char'
    -
               | 'unsigned' ( 'char' | 'short' )
    -
    - referenced by: - - C_character_variable - - C_array_specification: - - - - - - - - [ - - - character_length - - ] - - - - - -
             ::= '[' character_length ']'
    -
    - referenced by: - - C_NCHAR_VARYING_variable - C_NCHAR_variable - C_VARCHAR_variable - C_character_variable - - C_derived_variable: - - - - - - - - C_VARCHAR_variable - - - C_NCHAR_variable - - - C_NCHAR_VARYING_variable - - - C_CLOB_variable - - - C_NCLOB_variable - - - C_BINARY_variable - - - C_VARBINARY_variable - - - C_BLOB_variable - - - C_user_defined_type_variable - - - C_CLOB_locator_variable - - - C_BLOB_locator_variable - - - C_array_locator_variable - - - C_multiset_locator_variable - - - C_user_defined_type_locator_variable - - - C_REF_variable - - - - -
             ::= C_VARCHAR_variable
    -
               | C_NCHAR_variable
    -
               | C_NCHAR_VARYING_variable
    -
               | C_CLOB_variable
    -
               | C_NCLOB_variable
    -
               | C_BINARY_variable
    -
               | C_VARBINARY_variable
    -
               | C_BLOB_variable
    -
               | C_user_defined_type_variable
    -
               | C_CLOB_locator_variable
    -
               | C_BLOB_locator_variable
    -
               | C_array_locator_variable
    -
               | C_multiset_locator_variable
    -
               | C_user_defined_type_locator_variable
    -
               | C_REF_variable
    -
    - referenced by: - - C_variable_specification - - C_VARCHAR_variable: - - - - - - - - VARCHAR - - - CHARACTER - - - SET - - - IS - - - character_set_specification - - !! See the Syntax Rules. - - - C_array_specification - - - C_initial_value - - , - - - - - -
             ::= 'VARCHAR' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )? '!! See the Syntax Rules.' C_array_specification C_initial_value? ( ',' '!! See the Syntax Rules.' C_array_specification C_initial_value? )*
    -
    - referenced by: - - C_derived_variable - - C_NCHAR_variable: - - - - - - - - NCHAR - - - !! See the Syntax Rules. - - - C_array_specification - - - C_initial_value - - , - - - - - -
             ::= 'NCHAR' '!! See the Syntax Rules.' C_array_specification C_initial_value? ( ',' '!! See the Syntax Rules.' C_array_specification C_initial_value? )*
    -
    - referenced by: - - C_derived_variable - - C_NCHAR_VARYING_variable: - - - - - - - - NCHAR - - - VARYING - - - !! See the Syntax Rules. - - - C_array_specification - - - C_initial_value - - , - - - - - -
             ::= 'NCHAR' 'VARYING' '!! See the Syntax Rules.' C_array_specification C_initial_value? ( ',' '!! See the Syntax Rules.' C_array_specification C_initial_value? )*
    -
    - referenced by: - - C_derived_variable - - C_CLOB_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - CLOB - - - ( - - - character_large_object_length - - ) - - - CHARACTER - - - SET - - - IS - - - character_set_specification - - !! See the Syntax Rules. - - - C_initial_value - - , - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' '(' character_large_object_length ')' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )? '!! See the Syntax Rules.' C_initial_value? ( ',' '!! See the Syntax Rules.' C_initial_value? )*
    -
    - referenced by: - - C_derived_variable - - C_NCLOB_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - NCLOB - - - ( - - - character_large_object_length - - ) - - - !! See the Syntax Rules. - - - C_initial_value - - , - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'NCLOB' '(' character_large_object_length ')' '!! See the Syntax Rules.' C_initial_value? ( ',' '!! See the Syntax Rules.' C_initial_value? )*
    -
    - referenced by: - - C_derived_variable - - C_user_defined_type_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - path_resolved_user_defined_type_name - - AS - - - predefined_type - - !! See the Syntax Rules. - - - C_initial_value - - , - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' predefined_type '!! See the Syntax Rules.' C_initial_value? ( ',' '!! See the Syntax Rules.' C_initial_value? )*
    -
    - referenced by: - - C_derived_variable - - C_BINARY_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - BINARY - - - ( - - - length - - ) - - - !! See the Syntax Rules. - - - C_initial_value - - , - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'BINARY' '(' length ')' '!! See the Syntax Rules.' C_initial_value? ( ',' '!! See the Syntax Rules.' C_initial_value? )*
    -
    - referenced by: - - C_derived_variable - - C_VARBINARY_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - VARBINARY - - - ( - - - length - - ) - - - !! See the Syntax Rules. - - - C_initial_value - - , - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'VARBINARY' '(' length ')' '!! See the Syntax Rules.' C_initial_value? ( ',' '!! See the Syntax Rules.' C_initial_value? )*
    -
    - referenced by: - - C_derived_variable - - C_BLOB_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - BLOB - - - ( - - - large_object_length - - ) - - - !! See the Syntax Rules. - - - C_initial_value - - , - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' '(' large_object_length ')' '!! See the Syntax Rules.' C_initial_value? ( ',' '!! See the Syntax Rules.' C_initial_value? )*
    -
    - referenced by: - - C_derived_variable - - C_CLOB_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - CLOB - - - AS - - - LOCATOR* - - - !! See the Syntax Rules. - - - C_initial_value - - , - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' 'AS' 'LOCATOR*' '!! See the Syntax Rules.' - C_initial_value? ( ',' '!! See the Syntax Rules.' C_initial_value? )*
    -
    - referenced by: - - C_derived_variable - - C_BLOB_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - BLOB - - - AS - - - LOCATOR* - - - !! See the Syntax Rules. - - - C_initial_value - - , - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' 'AS' 'LOCATOR*' '!! See the Syntax Rules.' - C_initial_value? ( ',' '!! See the Syntax Rules.' C_initial_value? )*
    -
    - referenced by: - - C_derived_variable - - C_array_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - array_type - - AS - - - LOCATOR* - - - !! See the Syntax Rules. - - - C_initial_value - - , - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' array_type 'AS' 'LOCATOR*' '!! See the Syntax Rules.' C_initial_value? ( ',' '!! See the Syntax Rules.' C_initial_value? )*
    -
    - referenced by: - - C_derived_variable - - C_multiset_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - multiset_type - - AS - - - LOCATOR* - - - !! See the Syntax Rules. - - - C_initial_value - - , - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' multiset_type 'AS' 'LOCATOR*' '!! See the Syntax Rules.' C_initial_value? ( ',' '!! See the Syntax Rules.' C_initial_value? )*
    -
    - referenced by: - - C_derived_variable - - C_user_defined_type_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - path_resolved_user_defined_type_name - - AS - - - LOCATOR* - - - !! See the Syntax Rules. - - - C_initial_value - - , - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' 'LOCATOR*' '!! See the Syntax Rules.' C_initial_value? ( ',' '!! See the Syntax Rules.' C_initial_value? )*
    -
    - referenced by: - - C_derived_variable - - C_REF_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - reference_type - - !! See the Syntax Rules. - - - C_initial_value - - , - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' reference_type '!! See the Syntax Rules.' C_initial_value? ( ',' '!! See the Syntax Rules.' C_initial_value? )*
    -
    - referenced by: - - C_derived_variable - - C_initial_value: - - - - - - - - = - - - character_representation - - - - -
             ::= '=' character_representation+
    -
    - referenced by: - - C_BINARY_variable - C_BLOB_locator_variable - C_BLOB_variable - C_CLOB_locator_variable - C_CLOB_variable - C_NCHAR_VARYING_variable - C_NCHAR_variable - C_NCLOB_variable - C_REF_variable - C_VARBINARY_variable - C_VARCHAR_variable - C_array_locator_variable - C_character_variable - C_multiset_locator_variable - C_numeric_variable - C_user_defined_type_locator_variable - C_user_defined_type_variable - - COBOL_variable_definition: - - - - - - - - 01 - - - 77 - - - !! See the Syntax Rules. - - - COBOL_type_specification - - - character_representation - - . - - - - - -
             ::= ( '01' | '77' ) '!! See the Syntax Rules.' COBOL_type_specification character_representation* '.'
    -
    - referenced by: - - host_variable_definition - - COBOL_type_specification: - - - - - - - - COBOL_character_type - - - COBOL_national_character_type - - - COBOL_numeric_type - - - COBOL_integer_type - - - COBOL_derived_type_specification - - - - -
             ::= COBOL_character_type
    -
               | COBOL_national_character_type
    -
               | COBOL_numeric_type
    -
               | COBOL_integer_type
    -
               | COBOL_derived_type_specification
    -
    - referenced by: - - COBOL_variable_definition - - COBOL_derived_type_specification: - - - - - - - - COBOL_CLOB_variable - - - COBOL_NCLOB_variable - - - COBOL_BINARY_variable - - - COBOL_BLOB_variable - - - COBOL_user_defined_type_variable - - - COBOL_CLOB_locator_variable - - - COBOL_BLOB_locator_variable - - - COBOL_array_locator_variable - - - COBOL_multiset_locator_variable - - - COBOL_user_defined_type_locator_variable - - - COBOL_REF_variable - - - - -
             ::= COBOL_CLOB_variable
    -
               | COBOL_NCLOB_variable
    -
               | COBOL_BINARY_variable
    -
               | COBOL_BLOB_variable
    -
               | COBOL_user_defined_type_variable
    -
               | COBOL_CLOB_locator_variable
    -
               | COBOL_BLOB_locator_variable
    -
               | COBOL_array_locator_variable
    -
               | COBOL_multiset_locator_variable
    - -
               | COBOL_REF_variable
    -
    - referenced by: - - COBOL_type_specification - - COBOL_character_type: - - - - - - - - CHARACTER - - - SET - - - IS - - - character_set_specification - - - PIC - - - PICTURE - - IS - - - X - - - ( - - - character_length - - ) - - - - - -
             ::= ( 'CHARACTER' 'SET' 'IS'? character_set_specification )? ( PIC | PICTURE ) 'IS'? ( 'X' ( '(' character_length ')' )? )+
    -
    - referenced by: - - COBOL_type_specification - - COBOL_national_character_type: - - - - - - - - PIC - - - PICTURE - - IS - - - N - - - ( - - - character_length - - ) - - - - - -
             ::= ( PIC | PICTURE ) 'IS'? ( 'N' ( '(' character_length ')' )? )+
    -
    - referenced by: - - COBOL_type_specification - - COBOL_CLOB_variable: - - - - - - - - USAGE* - - - IS - - - SQL - - - TYPE* - - - IS - - - CLOB - - - ( - - - character_large_object_length - - ) - - - CHARACTER - - - SET - - - IS - - - character_set_specification - - - - -
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' 'CLOB' '(' character_large_object_length ')' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )?
    -
    - referenced by: - - COBOL_derived_type_specification - - COBOL_NCLOB_variable: - - - - - - - - USAGE* - - - IS - - - SQL - - - TYPE* - - - IS - - - NCLOB - - - ( - - - character_large_object_length - - ) - - - - - -
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' 'NCLOB' '(' character_large_object_length ')'
    -
    - referenced by: - - COBOL_derived_type_specification - - COBOL_BINARY_variable: - - - - - - - - USAGE* - - - IS - - - SQL - - - TYPE* - - - IS - - - BINARY - - - ( - - - length - - ) - - - - - -
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' 'BINARY' '(' length ')'
    -
    - referenced by: - - COBOL_derived_type_specification - - COBOL_BLOB_variable: - - - - - - - - USAGE* - - - IS - - - SQL - - - TYPE* - - - IS - - - BLOB - - - ( - - - large_object_length - - ) - - - - - -
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' 'BLOB' '(' large_object_length ')'
    -
    - referenced by: - - COBOL_derived_type_specification - - COBOL_user_defined_type_variable: - - - - - - - - USAGE* - - - IS - - - SQL - - - TYPE* - - - IS - - - path_resolved_user_defined_type_name - - AS - - - predefined_type - - - - -
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' predefined_type
    -
    - referenced by: - - COBOL_derived_type_specification - - COBOL_CLOB_locator_variable: - - - - - - - - USAGE* - - - IS - - - SQL - - - TYPE* - - - IS - - - CLOB - - - AS - - - LOCATOR* - - - - - -
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' 'CLOB' 'AS' 'LOCATOR*'
    -
    - referenced by: - - COBOL_derived_type_specification - - COBOL_BLOB_locator_variable: - - - - - - - - USAGE* - - - IS - - - SQL - - - TYPE* - - - IS - - - BLOB - - - AS - - - LOCATOR* - - - - - -
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' 'BLOB' 'AS' 'LOCATOR*'
    -
    - referenced by: - - COBOL_derived_type_specification - - COBOL_array_locator_variable: - - - - - - - - USAGE* - - - IS - - - SQL - - - TYPE* - - - IS - - - array_type - - AS - - - LOCATOR* - - - - - -
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' array_type 'AS' 'LOCATOR*'
    -
    - referenced by: - - COBOL_derived_type_specification - - COBOL_multiset_locator_variable: - - - - - - - - USAGE* - - - IS - - - SQL - - - TYPE* - - - IS - - - multiset_type - - AS - - - LOCATOR* - - - - - -
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' multiset_type 'AS' 'LOCATOR*'
    -
    - referenced by: - - COBOL_derived_type_specification - - COBOL_user_defined_type_locator_variable: - - - - - - - - USAGE* - - - IS - - - SQL - - - TYPE* - - - IS - - - path_resolved_user_defined_type_name - - AS - - - LOCATOR* - - - - - -
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' 'LOCATOR*'
    -
    - referenced by: - - COBOL_derived_type_specification - - COBOL_REF_variable: - - - - - - - - USAGE* - - - IS - - - SQL - - - TYPE* - - - IS - - - reference_type - - - - -
             ::= ( 'USAGE*' 'IS'? )? 'SQL' 'TYPE*' 'IS' reference_type
    -
    - referenced by: - - COBOL_derived_type_specification - - COBOL_numeric_type: - - - - - - - - PIC - - - PICTURE - - IS - - - S - - - COBOL_nines_specification - - USAGE* - - - IS - - - DISPLAY - - - SIGN - - LEADING - - - SEPARATE - - - - -
             ::= ( PIC | PICTURE ) 'IS'? 'S' COBOL_nines_specification ( 'USAGE*' 'IS'? )? DISPLAY SIGN 'LEADING' SEPARATE
    -
    - referenced by: - - COBOL_type_specification - - COBOL_nines_specification: - - - - - - - - COBOL_nines - - V - - - COBOL_nines - - V - - - COBOL_nines - - - - -
             ::= COBOL_nines ( 'V' COBOL_nines? )?
    -
               | 'V' COBOL_nines
    -
    - referenced by: - - COBOL_numeric_type - - COBOL_integer_type: - - - - - - - - PIC - - - PICTURE - - IS - - - S - - - COBOL_nines - - USAGE* - - - IS - - - BINARY - - - - - -
             ::= ( PIC | PICTURE ) 'IS'? 'S' COBOL_nines ( 'USAGE*' 'IS'? )? 'BINARY'
    -
    - referenced by: - - COBOL_type_specification - - COBOL_nines: - - - - - - - - 9 - - - ( - - - length - - ) - - - - - -
             ::= ( '9' ( '(' length ')' )? )+
    -
    - referenced by: - - COBOL_integer_type - COBOL_nines_specification - - Fortran_variable_definition: - - - - - - - - Fortran_type_specification - - !! See the Syntax Rules. - - - , - - - - - -
             ::= Fortran_type_specification '!! See the Syntax Rules.' ( ',' '!! See the Syntax Rules.' )*
    -
    - referenced by: - - host_variable_definition - - Fortran_type_specification: - - - - - - - - CHARACTER - - - KIND - - = - - - n - - - * - - - character_length - - CHARACTER - - - SET - - - IS - - - character_set_specification - - INTEGER - - - REAL - - - DOUBLE - - - PRECISION - - - LOGICAL - - - Fortran_derived_type_specification - - - - -
             ::= 'CHARACTER' ( KIND '=' 'n' )? ( '*' character_length )? ( 'CHARACTER' 'SET' 'IS'? character_set_specification )?
    -
               | 'INTEGER'
    -
               | 'REAL'
    -
               | 'DOUBLE' 'PRECISION'
    -
               | LOGICAL
    -
               | Fortran_derived_type_specification
    -
    - referenced by: - - Fortran_variable_definition - - Fortran_derived_type_specification: - - - - - - - - Fortran_CLOB_variable - - - Fortran_BINARY_variable - - - Fortran_VARBINARY_variable - - - Fortran_BLOB_variable - - - Fortran_user_defined_type_variable - - - Fortran_CLOB_locator_variable - - - Fortran_BLOB_locator_variable - - - Fortran_user_defined_type_locator_variable - - - Fortran_array_locator_variable - - - Fortran_multiset_locator_variable - - - Fortran_REF_variable - - - - -
             ::= Fortran_CLOB_variable
    -
               | Fortran_BINARY_variable
    -
               | Fortran_VARBINARY_variable
    -
               | Fortran_BLOB_variable
    -
               | Fortran_user_defined_type_variable
    -
               | Fortran_CLOB_locator_variable
    -
               | Fortran_BLOB_locator_variable
    - -
               | Fortran_array_locator_variable
    -
               | Fortran_multiset_locator_variable
    -
               | Fortran_REF_variable
    -
    - referenced by: - - Fortran_type_specification - - Fortran_CLOB_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - CLOB - - - ( - - - character_large_object_length - - ) - - - CHARACTER - - - SET - - - IS - - - character_set_specification - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' '(' character_large_object_length ')' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )?
    -
    - referenced by: - - Fortran_derived_type_specification - - Fortran_BINARY_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - BINARY - - - ( - - - length - - ) - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'BINARY' '(' length ')'
    -
    - referenced by: - - Fortran_derived_type_specification - - Fortran_VARBINARY_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - VARBINARY - - - ( - - - length - - ) - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'VARBINARY' '(' length ')'
    -
    - referenced by: - - Fortran_derived_type_specification - - Fortran_BLOB_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - BLOB - - - ( - - - large_object_length - - ) - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' '(' large_object_length ')'
    -
    - referenced by: - - Fortran_derived_type_specification - - Fortran_user_defined_type_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - path_resolved_user_defined_type_name - - AS - - - predefined_type - - - - -
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' predefined_type
    -
    - referenced by: - - Fortran_derived_type_specification - - Fortran_CLOB_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - CLOB - - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' 'AS' 'LOCATOR*'
    -
    - referenced by: - - Fortran_derived_type_specification - - Fortran_BLOB_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - BLOB - - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' 'AS' 'LOCATOR*'
    -
    - referenced by: - - Fortran_derived_type_specification - - Fortran_user_defined_type_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - path_resolved_user_defined_type_name - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' 'LOCATOR*'
    -
    - referenced by: - - Fortran_derived_type_specification - - Fortran_array_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - array_type - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' array_type 'AS' 'LOCATOR*'
    -
    - referenced by: - - Fortran_derived_type_specification - - Fortran_multiset_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - multiset_type - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' multiset_type 'AS' 'LOCATOR*'
    -
    - referenced by: - - Fortran_derived_type_specification - - Fortran_REF_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - reference_type - - - - -
             ::= 'SQL' 'TYPE*' 'IS' reference_type
    -
    - referenced by: - - Fortran_derived_type_specification - - MUMPS_variable_definition: - - - - - - - - MUMPS_numeric_variable - - - MUMPS_character_variable - - - MUMPS_derived_type_specification - - !! See the Syntax Rules. - - - ; - - - - - -
             ::= ( MUMPS_numeric_variable | MUMPS_character_variable | MUMPS_derived_type_specification '!! See the Syntax Rules.' ) ';'
    -
    - referenced by: - - host_variable_definition - - MUMPS_character_variable: - - - - - - - - VARCHAR - - - MUMPS_character_variable_specifier - - , - - - - - - - - referenced by: - - MUMPS_variable_definition - - MUMPS_character_variable_specifier: - - - - - - - - !! See the Syntax Rules. - - - MUMPS_length_specification - - CHARACTER - - - SET - - - IS - - - character_set_specification - - - - -
             ::= '!! See the Syntax Rules.' MUMPS_length_specification ( 'CHARACTER' 'SET' 'IS'? character_set_specification )?
    -
    - referenced by: - - MUMPS_character_variable - - MUMPS_length_specification: - - - - - - - - ( - - - character_length - - ) - - - - - -
             ::= '(' character_length ')'
    -
    - referenced by: - - MUMPS_character_variable_specifier - - MUMPS_numeric_variable: - - - - - - - - MUMPS_type_specification - - !! See the Syntax Rules. - - - , - - - - - -
             ::= MUMPS_type_specification '!! See the Syntax Rules.' ( ',' '!! See the Syntax Rules.' )*
    -
    - referenced by: - - MUMPS_variable_definition - - MUMPS_type_specification: - - - - - - - - INT - - - DEC - - - ( - - - precision - - , - - - scale - - ) - - - REAL - - - - - -
             ::= 'INT'
    -
               | 'DEC' ( '(' precision ( ',' scale )? ')' )?
    -
               | 'REAL'
    -
    - referenced by: - - MUMPS_numeric_variable - - MUMPS_derived_type_specification: - - - - - - - - MUMPS_user_defined_type_variable - - - MUMPS_CLOB_locator_variable - - - MUMPS_BLOB_locator_variable - - - MUMPS_user_defined_type_locator_variable - - - MUMPS_array_locator_variable - - - MUMPS_multiset_locator_variable - - - MUMPS_REF_variable - - - - -
             ::= MUMPS_user_defined_type_variable
    -
               | MUMPS_CLOB_locator_variable
    -
               | MUMPS_BLOB_locator_variable
    - -
               | MUMPS_array_locator_variable
    -
               | MUMPS_multiset_locator_variable
    -
               | MUMPS_REF_variable
    -
    - referenced by: - - MUMPS_variable_definition - - MUMPS_user_defined_type_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - path_resolved_user_defined_type_name - - AS - - - predefined_type - - - - -
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' predefined_type
    -
    - referenced by: - - MUMPS_derived_type_specification - - MUMPS_CLOB_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - CLOB - - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' 'AS' 'LOCATOR*'
    -
    - referenced by: - - MUMPS_derived_type_specification - - MUMPS_BLOB_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - BLOB - - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' 'AS' 'LOCATOR*'
    -
    - referenced by: - - MUMPS_derived_type_specification - - MUMPS_user_defined_type_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - path_resolved_user_defined_type_name - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' 'LOCATOR*'
    -
    - referenced by: - - MUMPS_derived_type_specification - - MUMPS_array_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - array_type - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' array_type 'AS' 'LOCATOR*'
    -
    - referenced by: - - MUMPS_derived_type_specification - - MUMPS_multiset_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - multiset_type - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' multiset_type 'AS' 'LOCATOR*'
    -
    - referenced by: - - MUMPS_derived_type_specification - - MUMPS_REF_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - reference_type - - - - -
             ::= 'SQL' 'TYPE*' 'IS' reference_type
    -
    - referenced by: - - MUMPS_derived_type_specification - - Pascal_variable_definition: - - - - - - - - !! See the Syntax Rules. - - - , - - - : - - - Pascal_type_specification - - ; - - - - - -
             ::= '!! See the Syntax Rules.' ( ',' '!! See the Syntax Rules.' )* ':' Pascal_type_specification ';'
    -
    - referenced by: - - host_variable_definition - - Pascal_type_specification: - - - - - - - - PACKED - - ARRAY - - - [ - - - 1 - - - .. - - - character_length - - ] - - - OF - - - CHAR - - - CHARACTER - - - SET - - - IS - - - character_set_specification - - INTEGER - - - REAL - - - BOOLEAN - - - Pascal_derived_type_specification - - - - -
             ::= ( PACKED 'ARRAY' '[' '1' '..' character_length ']' 'OF' )? 'CHAR' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )?
    -
               | 'INTEGER'
    -
               | 'REAL'
    -
               | 'BOOLEAN'
    -
               | Pascal_derived_type_specification
    -
    - referenced by: - - Pascal_variable_definition - - Pascal_derived_type_specification: - - - - - - - - Pascal_CLOB_variable - - - Pascal_BINARY_variable - - - Pascal_BLOB_variable - - - Pascal_user_defined_type_variable - - - Pascal_CLOB_locator_variable - - - Pascal_BLOB_locator_variable - - - Pascal_user_defined_type_locator_variable - - - Pascal_array_locator_variable - - - Pascal_multiset_locator_variable - - - Pascal_REF_variable - - - - -
             ::= Pascal_CLOB_variable
    -
               | Pascal_BINARY_variable
    -
               | Pascal_BLOB_variable
    -
               | Pascal_user_defined_type_variable
    -
               | Pascal_CLOB_locator_variable
    -
               | Pascal_BLOB_locator_variable
    - -
               | Pascal_array_locator_variable
    -
               | Pascal_multiset_locator_variable
    -
               | Pascal_REF_variable
    -
    - referenced by: - - Pascal_type_specification - - Pascal_CLOB_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - CLOB - - - ( - - - character_large_object_length - - ) - - - CHARACTER - - - SET - - - IS - - - character_set_specification - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' '(' character_large_object_length ')' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )?
    -
    - referenced by: - - Pascal_derived_type_specification - - Pascal_BINARY_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - BINARY - - - ( - - - length - - ) - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'BINARY' '(' length ')'
    -
    - referenced by: - - Pascal_derived_type_specification - - Pascal_BLOB_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - BLOB - - - ( - - - large_object_length - - ) - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' '(' large_object_length ')'
    -
    - referenced by: - - Pascal_derived_type_specification - - Pascal_CLOB_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - CLOB - - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' 'AS' 'LOCATOR*'
    -
    - referenced by: - - Pascal_derived_type_specification - - Pascal_user_defined_type_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - path_resolved_user_defined_type_name - - AS - - - predefined_type - - - - -
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' predefined_type
    -
    - referenced by: - - Pascal_derived_type_specification - - Pascal_BLOB_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - BLOB - - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' 'AS' 'LOCATOR*'
    -
    - referenced by: - - Pascal_derived_type_specification - - Pascal_user_defined_type_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - path_resolved_user_defined_type_name - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' 'LOCATOR*'
    -
    - referenced by: - - Pascal_derived_type_specification - - Pascal_array_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - array_type - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' array_type 'AS' 'LOCATOR*'
    -
    - referenced by: - - Pascal_derived_type_specification - - Pascal_multiset_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - multiset_type - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' multiset_type 'AS' 'LOCATOR*'
    -
    - referenced by: - - Pascal_derived_type_specification - - Pascal_REF_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - reference_type - - - - -
             ::= 'SQL' 'TYPE*' 'IS' reference_type
    -
    - referenced by: - - Pascal_derived_type_specification - - PL_I_variable_definition: - - - - - - - - DCL - - DECLARE - - - !! See the Syntax Rules. - - - ( - - - !! See the Syntax Rules. - - - , - - - ) - - - PL_I_type_specification - - - character_representation - - ; - - - - - -
             ::= ( DCL | 'DECLARE' | '!! See the Syntax Rules.' | '(' '!! See the Syntax Rules.' ( ',' '!! - See the Syntax Rules.' )* ')' ) PL_I_type_specification character_representation* ';'
    -
    - referenced by: - - host_variable_definition - - PL_I_type_specification: - - - - - - - - CHAR - - - CHARACTER - - - VARYING - - - ( - - - character_length - - ) - - - CHARACTER - - - SET - - - IS - - - character_set_specification - - - PL_I_type_fixed_decimal - - ( - - - precision - - , - - - scale - - - PL_I_type_float_binary - - ( - - - precision - - ) - - - PL_I_type_fixed_binary - - ( - - - precision - - ) - - - PL_I_derived_type_specification - - - - -
             ::= ( 'CHAR' | 'CHARACTER' ) 'VARYING'? '(' character_length ')' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )?
    -
               | ( PL_I_type_fixed_decimal '(' precision ( ',' scale )? | PL_I_type_float_binary '(' precision ) ')'
    -
               | PL_I_type_fixed_binary ( '(' precision ')' )?
    -
               | PL_I_derived_type_specification
    -
    - referenced by: - - PL_I_variable_definition - - PL_I_derived_type_specification: - - - - - - - - PL_I_CLOB_variable - - - PL_I_BINARY_variable - - - PL_I_VARBINARY_variable - - - PL_I_BLOB_variable - - - PL_I_user_defined_type_variable - - - PL_I_CLOB_locator_variable - - - PL_I_BLOB_locator_variable - - - PL_I_user_defined_type_locator_variable - - - PL_I_array_locator_variable - - - PL_I_multiset_locator_variable - - - PL_I_REF_variable - - - - -
             ::= PL_I_CLOB_variable
    -
               | PL_I_BINARY_variable
    -
               | PL_I_VARBINARY_variable
    -
               | PL_I_BLOB_variable
    -
               | PL_I_user_defined_type_variable
    -
               | PL_I_CLOB_locator_variable
    -
               | PL_I_BLOB_locator_variable
    - -
               | PL_I_array_locator_variable
    -
               | PL_I_multiset_locator_variable
    -
               | PL_I_REF_variable
    -
    - referenced by: - - PL_I_type_specification - - PL_I_CLOB_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - CLOB - - - ( - - - character_large_object_length - - ) - - - CHARACTER - - - SET - - - IS - - - character_set_specification - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' '(' character_large_object_length ')' ( 'CHARACTER' 'SET' 'IS'? character_set_specification )?
    -
    - referenced by: - - PL_I_derived_type_specification - - PL_I_BINARY_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - BINARY - - - ( - - - length - - ) - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'BINARY' '(' length ')'
    -
    - referenced by: - - PL_I_derived_type_specification - - PL_I_VARBINARY_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - VARBINARY - - - ( - - - length - - ) - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'VARBINARY' '(' length ')'
    -
    - referenced by: - - PL_I_derived_type_specification - - PL_I_BLOB_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - BLOB - - - ( - - - large_object_length - - ) - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' '(' large_object_length ')'
    -
    - referenced by: - - PL_I_derived_type_specification - - PL_I_user_defined_type_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - path_resolved_user_defined_type_name - - AS - - - predefined_type - - - - -
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' predefined_type
    -
    - referenced by: - - PL_I_derived_type_specification - - PL_I_CLOB_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - CLOB - - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'CLOB' 'AS' 'LOCATOR*'
    -
    - referenced by: - - PL_I_derived_type_specification - - PL_I_BLOB_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - BLOB - - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' 'BLOB' 'AS' 'LOCATOR*'
    -
    - referenced by: - - PL_I_derived_type_specification - - PL_I_user_defined_type_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - path_resolved_user_defined_type_name - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' path_resolved_user_defined_type_name 'AS' 'LOCATOR*'
    -
    - referenced by: - - PL_I_derived_type_specification - - PL_I_array_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - array_type - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' array_type 'AS' 'LOCATOR*'
    -
    - referenced by: - - PL_I_derived_type_specification - - PL_I_multiset_locator_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - multiset_type - - AS - - - LOCATOR* - - - - - -
             ::= 'SQL' 'TYPE*' 'IS' multiset_type 'AS' 'LOCATOR*'
    -
    - referenced by: - - PL_I_derived_type_specification - - PL_I_REF_variable: - - - - - - - - SQL - - - TYPE* - - - IS - - - reference_type - - - - -
             ::= 'SQL' 'TYPE*' 'IS' reference_type
    -
    - referenced by: - - PL_I_derived_type_specification - - PL_I_type_fixed_decimal: - - - - - - - - DEC - - - DECIMAL - - - FIXED - - - FIXED - - DEC - - - DECIMAL - - - - - -
             ::= ( 'DEC' | 'DECIMAL' ) FIXED
    -
               | FIXED ( 'DEC' | 'DECIMAL' )
    -
    - referenced by: - - PL_I_type_specification - - PL_I_type_fixed_binary: - - - - - - - - BIN - - BINARY - - - FIXED - - - FIXED - - - BIN - - BINARY - - - - - -
             ::= ( BIN | 'BINARY' ) FIXED
    -
               | FIXED ( BIN | 'BINARY' )
    -
    - referenced by: - - PL_I_type_specification - - PL_I_type_float_binary: - - - - - - - - BIN - - BINARY - - - FLOAT - - - FLOAT - - - BIN - - BINARY - - - - - -
             ::= ( BIN | 'BINARY' ) 'FLOAT'
    -
               | 'FLOAT' ( BIN | 'BINARY' )
    -
    - referenced by: - - PL_I_type_specification - - direct_select_statement__multiple_rows: - - - - - - - - cursor_specification - - - - -
             ::= cursor_specification
    -
    - referenced by: - - direct_SQL_data_statement - - get_diagnostics_statement: - - - - - - - - GET - - - DIAGNOSTICS* - - - SQL_diagnostics_information - - - - -
             ::= 'GET' 'DIAGNOSTICS*' SQL_diagnostics_information
    -
    - referenced by: - - SQL_diagnostics_statement - - SQL_diagnostics_information: - - - - - - - - statement_information - - - condition_information - - - all_information - - - - -
             ::= statement_information
    -
               | condition_information
    -
               | all_information
    -
    - referenced by: - - get_diagnostics_statement - - statement_information: - - - - - - - - statement_information_item - - , - - - - - - - - referenced by: - - SQL_diagnostics_information - - statement_information_item: - - - - - - - - simple_target_specification - - = - - - statement_information_item_name - - - - - - - referenced by: - - statement_information - - statement_information_item_name: - - - - - - - - NUMBER* - - - MORE* - - - COMMAND_FUNCTION* - - - COMMAND_FUNCTION_CODE* - - - DYNAMIC_FUNCTION* - - - DYNAMIC_FUNCTION_CODE* - - - ROW_COUNT* - - - TRANSACTIONS_COMMITTED* - - - TRANSACTIONS_ROLLED_BACK* - - - TRANSACTION_ACTIVE* - - - - - -
             ::= 'NUMBER*'
    -
               | 'MORE*'
    -
               | 'COMMAND_FUNCTION*'
    -
               | 'COMMAND_FUNCTION_CODE*'
    -
               | 'DYNAMIC_FUNCTION*'
    -
               | 'DYNAMIC_FUNCTION_CODE*'
    -
               | 'ROW_COUNT*'
    -
               | 'TRANSACTIONS_COMMITTED*'
    -
               | 'TRANSACTIONS_ROLLED_BACK*'
    -
               | 'TRANSACTION_ACTIVE*'
    -
    - referenced by: - - statement_information_item - - condition_information: - - - - - - - - CONDITION - - - condition_number - - - condition_information_item - - , - - - - - - - - referenced by: - - SQL_diagnostics_information - - condition_information_item: - - - - - - - - simple_target_specification - - = - - - condition_information_item_name - - - - - - - referenced by: - - condition_information - - condition_information_item_name: - - - - - - - - CATALOG_NAME* - - - CLASS_ORIGIN* - - - COLUMN_NAME* - - - CONDITION_NUMBER* - - - CONNECTION_NAME* - - - CONSTRAINT_CATALOG* - - - CONSTRAINT_NAME* - - - CONSTRAINT_SCHEMA* - - - CURSOR_NAME* - - - MESSAGE_LENGTH* - - - MESSAGE_OCTET_LENGTH* - - - MESSAGE_TEXT* - - - PARAMETER_MODE* - - - PARAMETER_NAME* - - - PARAMETER_ORDINAL_POSITION* - - - RETURNED_SQLSTATE* - - - ROUTINE_CATALOG* - - - ROUTINE_NAME* - - - ROUTINE_SCHEMA* - - - SCHEMA_NAME* - - - SERVER_NAME* - - - SPECIFIC_NAME* - - - SUBCLASS_ORIGIN* - - - TABLE_NAME* - - - TRIGGER_CATALOG* - - - TRIGGER_NAME* - - - TRIGGER_SCHEMA* - - - - - -
             ::= 'CATALOG_NAME*'
    -
               | 'CLASS_ORIGIN*'
    -
               | 'COLUMN_NAME*'
    -
               | 'CONDITION_NUMBER*'
    -
               | 'CONNECTION_NAME*'
    -
               | 'CONSTRAINT_CATALOG*'
    -
               | 'CONSTRAINT_NAME*'
    -
               | 'CONSTRAINT_SCHEMA*'
    -
               | 'CURSOR_NAME*'
    -
               | 'MESSAGE_LENGTH*'
    -
               | 'MESSAGE_OCTET_LENGTH*'
    -
               | 'MESSAGE_TEXT*'
    -
               | 'PARAMETER_MODE*'
    -
               | 'PARAMETER_NAME*'
    -
               | 'PARAMETER_ORDINAL_POSITION*'
    -
               | 'RETURNED_SQLSTATE*'
    -
               | 'ROUTINE_CATALOG*'
    -
               | 'ROUTINE_NAME*'
    -
               | 'ROUTINE_SCHEMA*'
    -
               | 'SCHEMA_NAME*'
    -
               | 'SERVER_NAME*'
    -
               | 'SPECIFIC_NAME*'
    -
               | 'SUBCLASS_ORIGIN*'
    -
               | 'TABLE_NAME*'
    -
               | 'TRIGGER_CATALOG*'
    -
               | 'TRIGGER_NAME*'
    -
               | 'TRIGGER_SCHEMA*'
    -
    - referenced by: - - condition_information_item - - all_information: - - - - - - - - all_info_target - - = - - - ALL - - - all_qualifier - - - - -
             ::= all_info_target '=' 'ALL' all_qualifier?
    -
    - referenced by: - - SQL_diagnostics_information - - all_info_target: - - - - - - - - simple_target_specification - - - - -
             ::= simple_target_specification
    -
    - referenced by: - - all_information - - all_qualifier: - - - - - - - - STATEMENT* - - - CONDITION - - - condition_number - - - - -
             ::= 'STATEMENT*'
    -
               | 'CONDITION' condition_number?
    -
    - referenced by: - - all_information - - condition_number: - - - - - - - - simple_value_specification - - - - -
             ::= simple_value_specification
    -
    - referenced by: - - all_qualifier - condition_information - - CURRENT_PATH: - - - - - - - - CURRENT_PATH - - - - - -
             ::= 'CURRENT_PATH'
    -
    - referenced by: - - default_option - general_value_specification - reserved_word - - CURRENT_ROLE: - - - - - - - - CURRENT_ROLE - - - - - -
             ::= 'CURRENT_ROLE'
    -
    - referenced by: - - default_option - general_value_specification - grantor - reserved_word - - - - - -   - - ... generated by RR - Railroad Diagram Generator - - - - - - - - R - R - - - - - - \ No newline at end of file diff --git a/sql-2016.ebnf.readme b/sql-2016.ebnf.readme index e96a71a..6ccebb1 100644 --- a/sql-2016.ebnf.readme +++ b/sql-2016.ebnf.readme @@ -3,7 +3,7 @@ How to use sql-2016.ebnf This file was created manually by Domingo Alvarez Duarte. Many thanx Domingo! -The corresponding XHTML + SVG file is sql-2016-railway-diagrams.xhtml. +The corresponding XHTML + SVG file is sql-2016-railroad-diagrams.xhtml. The grammar can be rendered as railroad diagrams on the website https://www.bottlecaps.de/rr/ui. Just copy it into the Edit Grammar tab, and click View Diagram. Then wait a good minute or so :-). @@ -11,6 +11,6 @@ Just copy it into the Edit Grammar tab, and click View Diagram. Then wait a good Domingo notes: 1. Non reserved words appear with * as suffix, ex: SUBSTRING -> SUBSTRING*. -2. You can navigate through the railway's grammar by clicking the rectangular boxes. +2. You can navigate through the railroad's grammar by clicking the rectangular boxes. Finally, you can download the rendered railroad as either XHTML + SVG or HTML + PNG.