| Start | ::= | ( SQLStatement ( <SEMICOLON> | <SOLIDUS> ) )* <EOF> |
| SQLStatement | ::= | ( CreateTableStatement | AlterTableStatement | DropTableStatement | CreateDomainStatement | AlterDomainStatement | DropDomainStatement | OtherStatements ) |
| CreateTableStatement | ::= | <CREATE> ( ( <GLOBAL> | <LOCAL> ) <TEMPORARY> )? <TABLE> TableName TableElementList ( <ON> <COMMIT> ( <DELETE> | <PRESERVE> ) <ROWS> )? ( OracleParams1 )* ( OracleParams2 )? ( <AS> )? |
| TableName | ::= | QualifiedName |
| QualifiedName | ::= | ( <IDENTIFIER> <PERIOD> ( <IDENTIFIER> <PERIOD> )? )? Identifier |
| Identifier | ::= | ( <CHARACTERSET> )? ( RegularIdentifier | DelimitedIdentifier ) |
| RegularIdentifier | ::= | <IDENTIFIER> |
| DelimitedIdentifier | ::= | ( DelimitedIdentifierPart )+ |
| DelimitedIdentifierPart | ::= | <QUOTEDSTRING> |
| TableElementList | ::= | <LEFTPAREN> TableElement ( <COMMA> TableElement )* <RIGHTPAREN> |
| TableElement | ::= | ColumnDefinition |
| | | TableConstraintDefinition | |
| ColumnDefinition | ::= | ColumnName ( DataType | DomainName ) ( DefaultClause )? ( ColumnConstraintDefinition )* ( CollateClause )? |
| ColumnName | ::= | Identifier |
| DataType | ::= | ( SpecificType | IntervalType ) |
| SpecificType | ::= | ( <NATIONAL> )? ( <CHARACTER> | <CHAR> | <VARCHAR> | <VARCHAR2> | <NCHAR> | <BIT> | <NUMERIC> | <DECIMAL> | <DEC> | <INTEGER> | <INT> | <SMALLINT> | <NUMBER> | <FLOAT> | <REAL> | <DOUBLE> <PRECISION> | <RAW> | <LONG> <RAW> | <ROWID> | <MLSLABEL> | <LONG> <VARCHAR> | <GRAPHIC> | <LONG> <VARGRAPHIC> | <VARGRAPHIC> | <DATE> | <TIME> <WITH> <TIME> <ZONE> | <TIME> | <TIMESTAMP> | <LONG> ) ( <VARYING> )? ( <LEFTPAREN> <UNSIGNEDINT> ( <COMMA> ( <UNSIGNEDINT> | <SIGNEDINT> ) )? <RIGHTPAREN> )? ( <CHARACTER> <SET> CharacterSetName )? |
| CharacterSetName | ::= | ( <IDENTIFIER> <PERIOD> ( <IDENTIFIER> <PERIOD> )? )? RegularIdentifier |
| IntervalType | ::= | <INTERVAL> IntervalQualifier |
| IntervalQualifier | ::= | StartField <TO> EndField |
| | | SingleDatetimeField | |
| StartField | ::= | NonSecondDatetimeField ( <LEFTPAREN> <UNSIGNEDINT> <RIGHTPAREN> )? |
| NonSecondDatetimeField | ::= | <YEAR> |
| | | <MONTH> | |
| | | <DAY> | |
| | | <HOUR> | |
| | | <MINUTE> | |
| EndField | ::= | NonSecondDatetimeField |
| | | <SECOND> ( <LEFTPAREN> <UNSIGNEDINT> <RIGHTPAREN> )? | |
| SingleDatetimeField | ::= | NonSecondDatetimeField ( <LEFTPAREN> <UNSIGNEDINT> <RIGHTPAREN> )? |
| | | <SECOND> ( <LEFTPAREN> <UNSIGNEDINT> ( <COMMA> <UNSIGNEDINT> )? <RIGHTPAREN> )? | |
| DomainName | ::= | QualifiedName |
| DefaultClause | ::= | <DEFAULT_> DefaultOption |
| DefaultOption | ::= | ( Literal | DatetimeValueFunction | ( <USER> | <CURRENT_USER> | <SESSION_USER> | <SYSTEM_USER> | <NULL> ) ) |
| Literal | ::= | ( <UNSIGNEDINT> | <SIGNEDINT> | <CHARSTRINGLITERAL> | <NATIONALCHARSTRINGLITERAL> | <BITSTRINGLITERAL> | <HEXSTRINGLITERAL> ) |
| DatetimeValueFunction | ::= | ( <CURRENT_DATE> | ( <CURRENT_TIME> | <CURRENT_TIMESTAMP> ) ( <LEFTPAREN> <UNSIGNEDINT> <RIGHTPAREN> )? ) |
| ColumnConstraintDefinition | ::= | ( <CONSTRAINT> ConstraintName )? ColumnConstraint ( ConstraintAttributes )? ( OracleConstraintParameters )? |
| ConstraintName | ::= | QualifiedName |
| ColumnConstraint | ::= | NotNullSpecification |
| | | UniqueSpecification | |
| | | ReferencesSpecification | |
| | | CheckConstraintDefinition | |
| NotNullSpecification | ::= | ( <NOT> )? <NULL> |
| UniqueSpecification | ::= | ( <UNIQUE> | <PRIMARY> <KEY> ) |
| ReferencesSpecification | ::= | <REFERENCES> ReferencedTableAndColumns ( <MATCH> ( <FULL> | <PARTIAL> ) )? ( ReferentialTriggeredAction )? |
| ReferencedTableAndColumns | ::= | TableName ( ColumnNameList )? |
| ColumnNameList | ::= | <LEFTPAREN> ColumnName ( <COMMA> ColumnName )* <RIGHTPAREN> |
| ReferentialTriggeredAction | ::= | <ON> ( ( UpdateRule ( <ON> DeleteRule )? ) | ( DeleteRule ( <ON> UpdateRule )? ) ) |
| UpdateRule | ::= | <UPDATE> ReferentialAction |
| ReferentialAction | ::= | <CASCADE> |
| | | <SET> ( <NULL> | <DEFAULT_> ) | |
| | | <NO> <ACTION> | |
| DeleteRule | ::= | <DELETE> ReferentialAction |
| CheckConstraintDefinition | ::= | <CHECK> <LEFTPAREN> skip_to_matching_parenthesis <RIGHTPAREN> |
| skip_to_matching_parenthesis | ::= | java code |
| ConstraintAttributes | ::= | ( ConstraintCheckTime ( ( <NOT> )? <DEFERRABLE> )? | ( <NOT> )? <DEFERRABLE> ( ConstraintCheckTime )? ) |
| ConstraintCheckTime | ::= | <INITIALLY> ( <DEFERRED> | <IMMEDIATE> ) |
| OracleConstraintParameters | ::= | ( UsingIndex | <DISABLE> ) |
| UsingIndex | ::= | <USING> <INDEX> ( OracleParams1 )+ |
| OracleParams1 | ::= | ( ( <PCTFREE> | <PCTUSED> | <INITRANS> | <MAXTRANS> ) ( <UNSIGNEDINT> | <SIGNEDINT> ) | <TABLESPACE> Identifier | <STORAGE> <LEFTPAREN> skip_to_matching_parenthesis <RIGHTPAREN> | <RECOVERABLE> | <UNRECOVERABLE> | <NOSORT> | <CLUSTER> Identifier ( ColumnNameList )? | <ALLOCATE> <EXTENT> <LEFTPAREN> skip_to_matching_parenthesis <RIGHTPAREN> | <DEALLOCATE> <UNUSED> ( <KEEP> <UNSIGNEDINT> ( <K> | <M> )? )? ) |
| CollateClause | ::= | <COLLATE> QualifiedName |
| TableConstraintDefinition | ::= | ( <CONSTRAINT> ConstraintName )? TableConstraint ( ConstraintAttributes )? ( OracleConstraintParameters )? |
| TableConstraint | ::= | UniqueConstraintDefinition |
| | | ReferentialConstraintDefinition | |
| | | CheckConstraintDefinition | |
| UniqueConstraintDefinition | ::= | UniqueSpecification ColumnNameList |
| ReferentialConstraintDefinition | ::= | <FOREIGN> <KEY> ( ColumnNameList | ColumnName ) ReferencesSpecification |
| OracleParams2 | ::= | ( ( ( <ENABLE> | <DISABLE> ) ( ( <UNIQUE> ColumnNameList | <PRIMARY> <KEY> | <CONSTRAINT> ConstraintName ) ( UsingIndex )? ( <EXCEPTIONS> <INTO> TableName )? ( <CASCADE> )? | <ALL> <TRIGGERS> | <TABLE> <LOCK> ) )+ | <NOPARALLEL> | <PARALLEL> <LEFTPAREN> skip_to_matching_parenthesis <RIGHTPAREN> | <CACHE> | <NOCACHE> ) |
| AlterTableStatement | ::= | <ALTER> <TABLE> TableName ( AlterTableAction )+ ( OracleParams2 )? |
| AlterTableAction | ::= | AddColumnDefinition |
| | | AlterColumnDefinition | |
| | | ModifyColumnDefinition | |
| | | DropColumnDefinition | |
| | | AddTableConstraintDefinition | |
| | | DropTableConstraintDefinition | |
| | | OracleParams1 | |
| AddColumnDefinition | ::= | <ADD> ColumnDefinitionList |
| ColumnDefinitionList | ::= | <LEFTPAREN> ColumnDefinition ( <COMMA> ColumnDefinition )* <RIGHTPAREN> |
| | | ( <COLUMN> )? ColumnDefinition | |
| AlterColumnDefinition | ::= | <ALTER> ( <COLUMN> )? ColumnName AlterColumnAction |
| AlterColumnAction | ::= | AlterDefault |
| AlterDefault | ::= | <SET> DefaultClause |
| | | ( <DROP> <DEFAULT_> ) | |
| ModifyColumnDefinition | ::= | <MODIFY> ( <LEFTPAREN> ColumnModification ( <COMMA> ColumnModification )* <RIGHTPAREN> | ( <COLUMN> )? ColumnModification ) |
| ColumnModification | ::= | ColumnName ( DataType | DomainName )? ( DefaultClause )? ( ( <CONSTRAINT> ConstraintName )? NotNullSpecification ( OracleConstraintParameters )? )? |
| DropColumnDefinition | ::= | <DROP> ( <COLUMN> )? ColumnName ( DropBehavior )? |
| DropBehavior | ::= | <CASCADE> |
| | | <RESTRICT> | |
| AddTableConstraintDefinition | ::= | <ADD> TableConstraintDefinitionList |
| TableConstraintDefinitionList | ::= | <LEFTPAREN> TableConstraintDefinition ( <COMMA> TableConstraintDefinition )* <RIGHTPAREN> |
| | | TableConstraintDefinition | |
| DropTableConstraintDefinition | ::= | <DROP> ( <CONSTRAINT> ConstraintName ( DropBehavior )? | <PRIMARY> <KEY> ( <CASCADE> )? | <UNIQUE> ColumnNameList ( <CASCADE> )? ) |
| DropTableStatement | ::= | <DROP> <TABLE> TableName ( ( <CASCADE> <CONSTRAINTS> )? | ( DropBehavior )? ) |
| CreateDomainStatement | ::= | <CREATE> <DOMAIN> DomainName ( <AS> )? DataType ( DefaultClause )? ( DomainConstraint )* ( CollateClause )? |
| DomainConstraint | ::= | ( <CONSTRAINT> ConstraintName )? CheckConstraintDefinition ( ConstraintAttributes )? |
| AlterDomainStatement | ::= | <ALTER> <DOMAIN> DomainName AlterDomainAction |
| AlterDomainAction | ::= | AlterDefault |
| | | AddDomainConstraintDefinition | |
| | | DropDomainConstraintDefinition | |
| AddDomainConstraintDefinition | ::= | <ADD> DomainConstraint |
| DropDomainConstraintDefinition | ::= | <DROP> <CONSTRAINT> ConstraintName |
| DropDomainStatement | ::= | <DROP> <DOMAIN> DomainName ( DropBehavior )? |
| OtherStatements | ::= | ( <IDENTIFIER> | <SET> | <DROP> | <LOCK> | <ALTER> | <COMMIT> | <CREATE> | <DELETE> | <ENABLE> | <MODIFY> | <UPDATE> | <DISABLE> ) skip_this_statement |
| skip_this_statement | ::= | java code |