BNF grammar description for the deployment descriptor file
The structure of the deployment descriptor file can be described using the Backus–Naur Form as shown here.
deploymentDescriptor ::= <SQLACTIONS> <EQL> <LBRACE> <DQUOTE> actionGroup <DOUBLE_QUOTE> <RBRACE>
actionGroup ::= installActions | removeActions
installActions ::= <BEGIN> <INSTALL> ddl <END> <INSTALL>
removeActions ::= <BEGIN> <REMOVE> <END> <REMOVE>
ddl ::= SQLInvokedRoutine ( SQLInvokedRoutine )*
SQLInvokedRoutine ::=
( <CREATE> SQLInvokedFunction | <CREATE> SQLInvokedAggregate | <CREATE> SQLInvokedProcedure )
<SEMICOLON>
SQLInvokedFunction ::=
<FUNCTION> SchemaQualifiedRoutineName SQLParameterDeclarationList ReturnsClause
( ResultCast )? RoutineCharacteristics ( RoutineCharacteristics )* RoutineBody
SQLInvokedAggregate ::=
<AGGREGATE> SchemaQualifiedRoutineName SQLParameterDeclarationList ReturnsClause
( ResultCast )? RoutineCharacteristics ( RoutineCharacteristics )* RoutineBody
SQLInvokedProcedure ::=
<PROCEDURE> SchemaQualifiedRoutineName SQLParameterDeclarationList ( ReturnsClause )?
RoutineCharacteristics ( RoutineCharacteristics )* RoutineBody
SchemaQualifiedRoutineName ::= QualifiedIdentifier ReturnsClause ::= <RETURNS> DataType
ResultCast ::= <CAST> <FROM> DataType
RoutineCharacteristics ::=
LanguageClause
| ParameterStyleClause
| NullCallClause
| ReturnedResultSets
| DeterministicCharacteristic
| SQLDataAccessIndication
LanguageClause ::= <LANGUAGE> ( <JAVA> | <SQL> | <IDENTIFIER> )
arameterStyleClause ::= <PARAMETER> <STYLE> ( <JAVA> | <SQL> | <GENERAL> )
NullCallClause ::= <RETURNS> <NULL> <ON> <NULL> <INPUT> | <CALLED> <ON> <NULL> <INPUT>
ReturnedResultSets ::= <DYNAMIC> <RESULT> <SETS> <INTEGER_LITERAL>
DeterministicCharacteristic ::= <DETERMINISTIC> | <NOT> <DETERMINISTIC>
SQLDataAccessIndication ::=
<NO> <SQL> | <CONTAINS> <SQL> | <READS> <SQL> <DATA> | <MODIFIES> <SQL> <DATA>
RoutineBody ::= ( SQLRoutineBody | ExternalBodyReference )
SQLRoutineBody ::= <RETURN> ( expression | CursorOrCallSpecification )
ExternalBodyReference ::= <EXTERNAL> <NAME> <STRING_LITERAL>
SQLParameterDeclarationList ::=
<LPAREN> (
[ SQLParameterDeclaration ( <COMMA> SQLParameterDeclaration )* ]
[ … ]
)? <RPAREN>
SQLParameterDeclaration ::= ( ParameterMode )? Identifier DataType ( <AS> <LOCATOR> )? ( <RESULT> )?
ParameterMode ::= ( <IN> | <OUT> | <INOUT> )
Identifier ::= <IDENTIFIER>
DataType ::= ( ArrayType | MultisetType | SimpleType )
SimpleType ::= (
CharacterStringType
| BinaryStringType
| NumericType
| IntervalType
| DateTimeType
| BooleanType
| RowType
| StructType
| BlobType
| ObjectType
| XmlType
| DataLinkType
| PeriodType
| NullType
| AnyType
)
MultisetType ::= SimpleType <MULTISET>
RowType ::= (
<ROW> <LPAREN> Field ( <COMMA> Field )* <RPAREN>
| <TABLE> ( <LPAREN> Field ( <COMMA> Field )* <RPAREN> )?
)
StructType ::= <STRUCT> <LES> Field ( <COMMA> Field )* <GRT>
Field ::= Identifier DataType
CharacterStringType ::=
( <CHARACTER> | <CHAR> ) <VARYING> ( <LPAREN> IntegerValue <RPAREN> )?
| ( <CHARACTER> | <CHAR> ) ( <LPAREN> IntegerValue <RPAREN> )?
| <VARCHAR> ( <LPAREN> IntegerValue <RPAREN> )?
| ( <NCHAR> | ( <NATIONAL> ( <CHARACTER> | <CHAR> ) ) ) <VARYING>
( <LPAREN> IntegerValue <RPAREN> )?
| ( <NCHAR> | ( <NATIONAL> ( <CHARACTER> | <CHAR> ) ) ) ( <LPAREN> IntegerValue <RPAREN> )?
| <NVARCHAR> ( <LPAREN> IntegerValue <RPAREN> )? | <STRING>
BinaryStringType ::=
<BINARY> ( <LPAREN> IntegerValue <RPAREN> )?
| <BINARY> <VARYING> <LPAREN> IntegerValue <RPAREN>
| <VARBINARY> <LPAREN> IntegerValue <RPAREN>
NumericType ::=
( <DEC> | <DECIMAL> | <NUMERIC> )
( <LPAREN> IntegerValue ( <COMMA> IntegerValue )? <RPAREN> )?
| <SMALLINT>
| ( <INTEGER> | <INT> ) ( <LPAREN> IntegerValue <RPAREN> )?
| <BIGINT>
| ( <FLOAT> | <REAL> ) ( <LPAREN> IntegerValue <RPAREN> )?
| <DOUBLE> ( <PRECISION> )?
| <NUMBER>
IntervalType ::=
<INTERVAL> ( ( DatetimeField ( <LPAREN> IntegerValue <RPAREN> )?
( <TO> ( DatetimeField | <SECOND> ( <LPAREN> IntegerValue <RPAREN> )? ) )?
| <SECOND> ( <LPAREN> IntegerValue ( <COMMA> IntegerValue )? <RPAREN> )? ) )?
DateTimeType ::=
<DATE>
| <TIME> ( <LPAREN> IntegerValue <RPAREN> )? <WITH> <TIME> <ZONE>
| <TIME> ( <LPAREN> IntegerValue <RPAREN> )?
| <TIMESTAMP> ( <LPAREN> IntegerValue <RPAREN> )? <WITH> <TIME> <ZONE>
| <TIMESTAMP> ( <LPAREN> IntegerValue <RPAREN> )?
DatetimeField ::= <YEAR> | <MONTH> | <DAY> | <HOUR> | <MINUTE>
BooleanType ::= <BOOLEAN>
ArrayType ::= SimpleType <ARRAY_CONSTRUCTOR_START> IntegerValue ( <RBRACKET> | <RBRACKET_TRIGRAPH> )
BlobType ::= <BLOB> | <CLOB>
ObjectType ::= <JAVA_OBJECT> XmlType ::= <XML>
DataLinkType ::= <DATALINK> PeriodType ::= <PERIOD> <LPAREN> DateTimeType <RPAREN>
NullType ::= <NULL> AnyType ::= <ANYTYPE>