EJB QL ::= [select_clause] from_clause [where_clause] [order_by_clause] DYNAMIC EJB QL :=select_clause_dynamic from_clause [where_clause] [group_by_clause] [having_clause] [order_by_clause]
from_clause::=FROM identification_variable_declaration [,identification_variable_declaration]*
identification_variable_declaration::=collection_member_declaration | range_variable_declaration
collection_member_declaration::= IN ( collection_valued_path_expression ) [AS] identifier
range_variable_declaration::=abstract_schema_name [AS] identifier
single_valued_path_expression ::= {single_valued_navigation | identification_variable}. ( cmp_field | method | cmp_field.value_object_attribute | cmp_field.value_object_method ) | single_valued_navigation
single_valued_navigation::= identification_variable.[ single_valued_cmr_field. ]* single_valued_cmr_field
collection_valued_path_expression ::= identification_variable.[ single_valued_cmr_field. ]* collection_valued_cmr_field
select_clause::= SELECT { ALL | DISTINCT } {single_valued_path_expression | identification_variable | OBJECT ( identification_variable) | aggregate_functions }
select_clause_dynamic ::= SELECT { ALL | DISTINCT } [ selection , ]* selection
selection ::= { expression | subselect } [[AS] id ]
order_by_clause::= ORDER BY [ {single_valued_path_expression | integer} [ASC|DESC],]* {single_valued_path_expression | integer}[ASC|DESC]
where_clause::= WHERE conditional_expression
conditional_expression ::= conditional_term | conditional_expression OR conditional_term
conditional_term ::= conditional_factor | conditional_term AND conditional_factor
conditional_factor ::= [NOT] conditional_primary
conditional_primary::=simple_cond_expression | (conditional_expression)
simple_cond_expression ::= comparison_expression | between_expression | like_expression | in_expression | null_comparison_expression | empty_collection_comparison_expression | quantified_expression | exists_expression | is_of_type_expression | collection_member_expression
between_expression ::= expression [NOT] BETWEEN expression AND expression
in_expression ::= single_valued_path_expression [NOT] IN { (subselect) | ( atom ,]* atom) }
atom = { string-literal | numeric-constant | input-parameter }
like_expression ::= expression [NOT] LIKE {string_literal | input_parameter} [ESCAPE {string_literal | input_parameter}]
null_comparison_expression ::= single_valued_path_expression IS [ NOT ] NULL
empty_collection_comparison_expression ::= collection_valued_path_expression IS [NOT] EMPTY
collection_member_expression ::= { single_valued_path_expression | input_paramter } [ NOT ] MEMBER [ OF ] collection_valued_path_expression
quantified_expression ::= expression comparison_operator {SOME | ANY | ALL} (subselect)
exists_expression ::= EXISTS {collection_valued_path_expression | (subselect)}
subselect ::= SELECT [{ ALL | DISTINCT }] expression from_clause [where_clause] [group_by_clause] [having_clause]
group_by_clause::= GROUP BY [single_valued_path_expression,]* single_valued_path_expression
having_clause ::= HAVING conditional_expression
is_of_type_expression ::= identifier IS OF TYPE ([[ONLY] abstract_schema_name,]* [ONLY] abstract_schema_name)
comparison_expression ::= expression comparison_operator { expression | ( subquery ) }
comparison_operator ::= = | > | >= | < | <= | <>
method ::= method_name( [[expression , ]* expression ] )
expression ::= term | expression {+|-} term
term ::= factor | term {*|/} factor
factor ::= {+|-} primary
primary ::= single_valued_path_expression | literal | ( expression ) | input_parameter | functions | aggregate_functions
aggregate_functions := AVG([ALL|DISTINCT] expression) | COUNT({[ALL|DISTINCT] expression |*| identification_variable }) | MAX([ALL|DISTINCT] expression) | MIN([ALL|DISTINCT] expression) | SUM([ALL|DISTINCT] expression) |
functions ::= ABS(expression) | AVG([ALL|DISTINCT] expression) | BIGINT(expression) | CHAR({expression [,{ISO|USA|EUR|JIS}] ) | CONCAT (expression , expression ) | COUNT({[ALL|DISTINCT] expression | *}) | DATE(expression) | DAY({expression ) | DAYS( expression) | DECIMAL( expression [,integer[,integer]]) DIGITS( expression) | DOUBLE( expression ) | FLOAT( expression) | HOUR ( expression ) | INTEGER( expression ) | LCASE ( expression) | LENGTH(expression) | LOCATE( expression, expression [, expression] ) | MAX([ALL|DISTINCT] expression) | MICROSECOND( expression ) | MIN([ALL|DISTINCT] expression) | MINUTE ( expression ) | MOD (expression, expression) | MONTH( expression ) | REAL( expression) | SECOND( expression ) | SMALLINT( expression ) | SQRT ( expression) | SUBSTRING( expression, expression[, expression]) | SUM([ALL|DISTINCT] expression) | TIME( expression ) | TIMESTAMP( expression ) | UCASE ( expression) | YEAR( expression )
Related concepts
EJB query language
Related tasks
Using EJB query