parseStatement |
::= |
( ( selectSql | deleteSql | insertSql | updateSql | createTable | dropTable | alterTable | commit | executeProcedure ) ) |
selectSql |
::= |
( <SELECT> ( setQuantifier )? ( <OPENPAREN> )? selectColumnList ( <CLOSEPAREN> )? <FROM> selectTableList ( <WHERE> conditionList )? ( groupBy )? ( orderBy )? ( <FOR_UPDATE> )? ) |
deleteSql |
::= |
( <DELETE> <FROM> tableName ( <WHERE> conditionList )? ) |
updateSql |
::= |
( <UPDATE> ( ( <BY> <UID> ) | tableName ) <SET> columnListWithValues ( <WHERE> conditionList )? ) |
insertSql |
::= |
( <INSERT> <INTO> tableName ( <OPENPAREN> columnList <CLOSEPAREN> )? ( <VALUES> <OPENPAREN> insertValuesList <CLOSEPAREN> | ( <OPENPAREN> )? selectSql ( <CLOSEPAREN> )? ) ) |
createTable |
::= |
<CREATE> <TABLE> ( className ) <OPENPAREN> <IDENTIFIER> sqlType ( ( ( <PRIMARY_KEY> ( <NOT> <NULL> )? ) | ( <INDEX> ) ) )? ( <DEFAULT_NULL> )? ( "," ( ( <PRIMARY_KEY> <OPENPAREN> <IDENTIFIER> ( "," <IDENTIFIER> )* <CLOSEPAREN> ) | ( <IDENTIFIER> sqlType ( ( ( <PRIMARY_KEY> ( <NOT> <NULL> )? ) | ( <INDEX> ) ) )? ( <DEFAULT_NULL> )? ) ) )* <CLOSEPAREN> |
dropTable |
::= |
<DROP> <TABLE> className |
alterTable |
::= |
<ALTER> <TABLE> className <ADD> <PRIMARY_KEY> <OPENPAREN> <IDENTIFIER> ( "," <IDENTIFIER> )* <CLOSEPAREN> <USING> <INDEX> |
commit |
::= |
( <COMMIT> | <ROLLBACK> ) |
executeProcedure |
::= |
<CALL> <IDENTIFIER> <OPENPAREN> ( ( <STRING_LITERAL> | <INTEGER_LITERAL> | <LONG_LITERAL> | <FLOATING_POINT_LITERAL> | <IDENTIFIER> | <QUESTIONMARK> ) ( "," ( <STRING_LITERAL> | <INTEGER_LITERAL> | <LONG_LITERAL> | <FLOATING_POINT_LITERAL> | <IDENTIFIER> ) )* )? <CLOSEPAREN> |
setQuantifier |
::= |
( <DISTINCT> ) |
|
| |
( <ALL> ) |
columnList |
::= |
( <IDENTIFIER> ) ( "," ( <IDENTIFIER> ) )* |
selectColumnList |
::= |
( ( <IDENTIFIER> ) "." )? ( ( <IDENTIFIER> | <ASTERISK> | <UID> | <STRING_LITERAL> <IDENTIFIER> ) | function ) ( "," ( <IDENTIFIER> "." )? ( ( <IDENTIFIER> | <ASTERISK> | <UID> | <STRING_LITERAL> <IDENTIFIER> ) | function ) )* |
columnListWithValues |
::= |
( <LOB> | <IDENTIFIER> ) "=" ( <MINUS> )? ( <QUESTIONMARK> | <STRING_LITERAL> | <INTEGER_LITERAL> | <LONG_LITERAL> | <FLOATING_POINT_LITERAL> | <TRUE> | <FALSE> | <EMPTY_CLOB> | <EMPTY_BLOB> ) ( "," <IDENTIFIER> "=" ( <MINUS> )? ( <QUESTIONMARK> | <STRING_LITERAL> | <LONG_LITERAL> | <INTEGER_LITERAL> | <FLOATING_POINT_LITERAL> | <TRUE> | <FALSE> | <EMPTY_CLOB> | <EMPTY_BLOB> ) )* |
function |
::= |
( <SUM> | <COUNT> | <MAX> | <MIN> | <AVG> ) <OPENPAREN> ( <ASTERISK> | ( <IDENTIFIER> ) ) <CLOSEPAREN> |
createColumnNode |
::= |
( <IDENTIFIER> ) |
selectTableList |
::= |
( className ) ( <IDENTIFIER> )? ( "," ( className ) ( <IDENTIFIER> )? )* |
tableName |
::= |
( className ) |
insertValuesList |
::= |
( <QUESTIONMARK> | <TRUE> | <FALSE> | <NULL> | <EMPTY_CLOB> | <EMPTY_BLOB> | <STRING_LITERAL> | ( <MINUS> )? <INTEGER_LITERAL> | ( <MINUS> )? <LONG_LITERAL> | ( <MINUS> )? <FLOATING_POINT_LITERAL> ) ( "," ( <QUESTIONMARK> | <TRUE> | <FALSE> | <NULL> | <EMPTY_CLOB> | <EMPTY_BLOB> | <STRING_LITERAL> | ( <MINUS> )? <INTEGER_LITERAL> | ( <MINUS> )? <LONG_LITERAL> | ( <MINUS> )? <FLOATING_POINT_LITERAL> ) )* |
groupBy |
::= |
<GROUP> <BY> ( <IDENTIFIER> "." )? <IDENTIFIER> ( "," ( <IDENTIFIER> "." )? <IDENTIFIER> )* |
orderBy |
::= |
<ORDER> <BY> ( <IDENTIFIER> "." )? ( <IDENTIFIER> ) ( ( <ASC> | <DESC> ) )? ( ( "," ( <IDENTIFIER> "." )? <IDENTIFIER> ) ( ( <ASC> | <DESC> ) )? )* |
conditionList |
::= |
|
|
| |
<SEMICOLON> |
|
| |
<EOF> |
|
| |
<OPENPAREN> |
|
| |
|
|
| |
<AND> |
|
| |
<OR> |
|
| |
|
doCondition |
::= |
|
andExpression |
::= |
( <AND> )* |
orExpression |
::= |
( <OR> )* |
className |
::= |
<IDENTIFIER> ( ( "." | "$" ) <IDENTIFIER> )* |
sqlType |
::= |
( ( <VARCHAR> | <VARCHAR2> ) ( <OPENPAREN> <INTEGER_LITERAL> <CLOSEPAREN> )? | <CHAR> ( <OPENPAREN> <INTEGER_LITERAL> <CLOSEPAREN> )? | <DATE> | <DATETIME> | <NUMBER> <OPENPAREN> <INTEGER_LITERAL> ( "," <INTEGER_LITERAL> )? <CLOSEPAREN> | <TIME> | <FLOAT> ( <OPENPAREN> <INTEGER_LITERAL> <CLOSEPAREN> )? | <DOUBLE> | <BOOLEAN> | ( <INTEGER> | <INT> ) | <LONG> | <BLOB> | <CLOB> | <TIMESTAMP> | <DECIMAL> | <LONGVARCHAR> | <TINYINT> | <SMALLINT> | <BIGINT> | <BIT> ( <OPENPAREN> <INTEGER_LITERAL> <CLOSEPAREN> )? ) |
condition |
::= |
<ROWNUM> ( <EQUAL> <INTEGER_LITERAL> | <LESS> <INTEGER_LITERAL> | <LESSEQUAL> <INTEGER_LITERAL> | <GREATER> <INTEGER_LITERAL> | <GREATEREQUAL> <INTEGER_LITERAL> ) |
|
| |
createColumnNode ( ( ( <IS> <NULL> | <IS> <NOT> <NULL> ) ) | ( ( <EQUAL> | <LESS> | <LESSEQUAL> | <GREATER> | <GREATEREQUAL> | <NOTEQUAL> | <NOTEQUAL2> | <LIKE> | <NOT> <LIKE> ) ( <QUESTIONMARK> | <STRING_LITERAL> | <TRUE> | <FALSE> | ( <MINUS> )? <INTEGER_LITERAL> | ( <MINUS> )? <LONG_LITERAL> | ( <MINUS> )? <FLOATING_POINT_LITERAL> | <DATE_LITERAL> | <SYSDATE> ( ( <PLUS> | <MINUS> ) <INTEGER_LITERAL> )? | createColumnNode ) ) | ( <IN> ( <OPENPAREN> )? ( <CLOSEPAREN> )? ) | ( <NOT> <IN> ( <OPENPAREN> )? ( <CLOSEPAREN> )? ) ) |
inExprOrList |
::= |
( selectSql ) |
|
| |
( inValueList ) |
inValueList |
::= |
( <TRUE> | <FALSE> | <NULL> | <EMPTY_CLOB> | <EMPTY_BLOB> | <QUESTIONMARK> | <STRING_LITERAL> | ( <MINUS> )? <INTEGER_LITERAL> | ( <MINUS> )? <LONG_LITERAL> | ( <MINUS> )? <FLOATING_POINT_LITERAL> ) ( "," ( <TRUE> | <FALSE> | <NULL> | <EMPTY_CLOB> | <EMPTY_BLOB> | <QUESTIONMARK> | <STRING_LITERAL> | ( <MINUS> )? <INTEGER_LITERAL> | ( <MINUS> )? <LONG_LITERAL> | ( <MINUS> )? <FLOATING_POINT_LITERAL> ) )* |