Variable References
Syntax
variable_reference ::= "$" [id
]
Semantics
A variable-reference expression returns the item that the specified variable is currently bound to. Syntactically, a variable-reference expression is just the name of the variable.
Oracle NoSQL Database allows the declaration of both external and internal variables. For more details on declaring the variables and their scope, see Variable Declaration.
The table aliases are essentially internal variables ranging over the rows of the specified table. The other clauses of the SELECT expression operate on the rows produced by the FROM clause, processing one row at a time. The row currently being processed is called the context row. The columns of the context row can be referenced in expressions either directly by their names or by the table alias followed by a dot character and the column name. If the table alias starts with a dollar sign ($), then it serves as an internal variable declaration for a variable whose name is the alias. This internal variable is bound to the context row as a whole and can be referenced within sub-expressions of the SELECT expression. It can also be passed as an argument to a function to fetch the result for the context row.
Example 6-92 Fetch the duration between the baggage boarding and baggage collection from the destination airport for a passenger from the airline baggage tracking application data
SELECT $flightLeg.flightDate AS BAGGAGE_CHECK, $bagInfo.bagArrivalDate AS BAGGAGE_COLLECT,
$t1 AS BAGGAGE_DURATION
FROM BaggageInfo bag, bag.bagInfo[0] AS $bagInfo, $bagInfo.flightLegs[0] AS $flightLeg,
get_duration(timestamp_diff($bagInfo.bagArrivalDate, $flightLeg.flightDate)) $t1
WHERE ticketNo=1762320369957
Explanation: In this example, you use table alias and internal variables. You can determine the duration between the checked time and the baggage collection time at the destination airport by calculating the time difference between bagArrivalDate
and flightDate[0]
for each passenger. You use the timestamp_diff
function to find the time difference and the get_duration
function to convert the result from milliseconds to a duration string. For more details, see timestamp_diff and get_duration functions.
The table name BaggageInfo
in the query is followed by a table alias bag. You use the variables $bagInfo
and $flightLeg
to reference the columns in the context row (the row that is currently being processed). Notice that bagInfo
is a column of type array in the BaggageInfo
table, whereas $bagInfo
is an internal variable used to hold the first element of the bagInfo
array for the context row. $t1
is an internal variable whose value is assigned when the query is executed.
Note:
Here, thetimestamp_diff
function automatically casts the bagArrivalDate
and flightDate
from String to a timestamp data type during the query run time.
{"BAGGAGE_CHECK":"2019-03-12T03:00:00Z","BAGGAGE_COLLECT":"2019-03-12T15:05:00Z","BAGGAGE_DURATION":"12
hours 5 minutes"}