関数コール
構文
function_call ::= id
"(" [expression
("," expression)*] ")"
セマンティクス
関数コール式は、関数を呼び出すために使用され、現在のバージョンでは、組込み(システム)関数のみを呼び出すことができます。構文的には、関数コールは、呼び出す関数を名前で識別するidで始まり、その後にカンマで区切られた0個以上の引数式の括弧で囲まれたリストが続きます。
各関数には、結果の順序タイプおよび各パラメータの順序タイプを指定するシグネチャがあります。関数コール式の評価は、各引数の評価から始まります。各引数式の結果は、対応するパラメータ・タイプのサブタイプである必要があります。それ以外の場合は、パラメータ・タイプに昇格できる必要があります。後者の場合、引数値は実際には予想されたタイプにキャストされます。最後に、タイプ・チェックおよび必要な昇格が行われた後、昇格された可能性のある引数値を使用して関数の実装が呼び出されます。
- INTEGERは、FLOATまたはDOUBLEに昇格できます。
- LONGは、FLOATまたはDOUBLEに昇格できます。
- STRINGはENUMに昇格できますが、キャストが成功するのは、文字列値が入力文字列と同じであるトークンがENUM型に含まれている場合のみです。
Oracle NoSQL Databaseでサポートされている関数のリストについては、「組込み関数」のトピックを参照してください。
例6-97 航空手荷物追跡アプリケーション・データからルート内に空港コードMELがある乗客のフルネームをフェッチします
SELECT fullname
FROM baggageInfo bag
WHERE EXISTS bag.bagInfo[contains($element.routing,"MEL")]
説明: BaggageInfo
テーブルでは、routingフィールドには、受託手荷物が到着地空港に到達する前にトランジットする空港のコードが含まれています。前述の問合せでは、contains関数への関数コールを使用します。contains関数は組込み関数の1つで、検索文字列がソース文字列内に存在するかどうかを示します。問合せ内の大カッコは、bagInfo
配列の要素を反復処理します。反復処理中、$element
変数は現在の配列要素(routing
)にバインドされます。反復処理ごとに、配列要素のcontains
関数内の式が計算されます。式に文字列"MEL"が含まれている場合、trueが返され、要素が結果に含まれます。それ以外の場合はスキップされます。その結果、routing
フィールドにMEL
空港コードを含む行のみが出力に表示されます。
{"fullname":"Zulema Martindale"}
{"fullname":"Adam Phillips"}
{"fullname":"Joanne Diaz"}
{"fullname":"Omar Harvey"}
{"fullname":"Zina Christenson"}