変数宣言

構文

variable_declaration ::= DECLARE (variable_name type_definition ";")+

    variable_name ::= "$" id

外部変数

問合せは変数宣言セクションから開始できます。ここで宣言された変数は、外部変数と呼ばれます。外部変数の値はグローバルであり、定数です。問合せの作成またはコンパイルするときに、外部変数の値は事前にはわかりません。かわりに、問合せが実行される前に外部変数を実際の値にバインドする必要があります。これは、プログラムAPIを使用して行います。Javaダイレクト・ドライバ開発者ガイドを参照してください。

外部変数にバインドされる項目の型は、変数の宣言された型と同じ型またはサブタイプである必要があります。外部変数を使用すると、同じ問合せを1回コンパイルしてから複数回実行でき、そのたびに外部変数の値は異なります。問合せ内のすべての外部変数は、宣言セクションで宣言されている必要があります。これは、各外部変数の型を事前に把握することが問合せの最適化のために重要となるためです。

注意:

外部変数は、従来のプログラミング言語(javaのfinal static変数やc++のconst static変数など)に見られるグローバル定数変数の役割を果たします。

内部変数

Oracle NoSQL Databaseでは、内部変数の暗黙的な宣言も可能です。内部変数は、それを宣言する式の実行中に値にバインドされます。

変数(内部および外部)は、名前によって他の式で参照できます。実際、変数参照自体は式であり、リテラルとともに使用することで、より複雑な式を形成するための最初の構成要素になります。

スコープ

各変数はスコープ内で表示可能(つまり、参照可能)です。問合せ全体でグローバル・スコープを定義し、このグローバル・スコープ内に外部変数が存在します。特定の式によってサブスコープが作成されます。そのため、スコープはネストされることがあります。内部スコープで宣言された変数により、外部スコープで宣言された同じ名前の別の変数は非表示になります。それ以外の場合、どのスコープ内でも、すべての変数名は一意である必要があります。

注意:

変数の名前では、大文字と小文字が区別されます。

注意:

変数名$key、$value、$elementおよび$posは、外部変数名: の名前として使用できません。

例6-1 変数宣言

次の問合せは、問合せが実際に実行されたときに、年齢が$age変数に割り当てられた値よりも大きいすべてのユーザーの名と姓を選択します。
DECLARE $age INTEGER;

SELECT firstName, lastName
FROM Users
WHERE age > $age;