SQL 解説書

参照解除操作

 
 dereference-operation
 
|--scoped-ref-expression-- -> --name1--------------------------->
 
>-----+---------------------------------+-----------------------|
      '-(--+--------------------+---)---'
           |  .-,------------.  |
           |  V              |  |
           '----expression---+--'
 

効力範囲を指定した参照式の効力範囲は、 ターゲット 表または視点という表または視点になります。 効力範囲を指定した参照式は、ターゲット行 を識別します。 ターゲット行 は、ターゲット表または視点の (あるいは、副表か副視点のいずれかの) 行です。 この行のオブジェクト ID (OID) 列値は、参照式と一致しています。 OID の詳細は、CREATE TABLEを参照してください。 参照解除操作を使い、ターゲット行の列にアクセスしたり、 そのターゲット行をメソッドのサブジェクトとして使用してメソッドを呼び出すことができます。 参照解除操作の結果は、常にヌルになり得ます。

参照解除操作は、他のすべての操作よりも優先されます。

scoped-ref-expression
効力範囲を持っている参照タイプである式 (SQLSTATE 428DT)。 式がホスト変数、パラメーター・マーカー、 またはほかの効力範囲がない参照タイプ値の場合、 SCOPE 文節での CAST 指定で効力範囲の参照を指定する必要があります。

name1
修飾なしの識別子を指定します。

name1 の後に括弧がなく、 name1 がターゲット・タイプの属性名と一致している場合、 参照解除操作の値は、ターゲット行の名前付き列の値になります。 その場合、列のデータ・タイプ (ヌル可能) の値により、参照解除操作の結果タイプが決まります。 オブジェクト ID が参照式と一致するターゲット行がない場合、参照解除操作の結果はヌルになります。 参照解除操作が選択リストで使用され、式の一部分としては組み込まれていない場合、 name1 が結果の列名になります。

name1 の後に括弧があるか、name1 がターゲット・タイプの属性名と一致しない場合、 参照解除操作はメソッド呼び出しとして扱われます。 呼び出されるメソッドの名前は name1 です。 メソッドのサブジェクトは、ターゲット行であり、その構造タイプのインスタンスと見なされます。 オブジェクト ID が参照式と一致するターゲット行がない場合、 メソッドのサブジェクトは、ターゲット・タイプのヌル値になります。 括弧内に式があれば、それはメソッド呼び出しの残りのパラメーターを指定するものです。 メソッド呼び出しの解決には、通常の処理が使われます。 選択したメソッドの結果タイプ (ヌル可能) の値により、参照解除操作の結果タイプが決まります。

参照解除操作を使用するステートメントの許可 ID は、 scoped-ref-expression のターゲット表での SELECT 特権を持っていなければなりません (SQLSTATE 42501)。

参照解除操作では、データベース内の値を変更できません。 参照解除操作を使用して変更メソッドを呼び出す場合、 その変更メソッドはターゲット行のコピーを変更してコピーを戻しますが、 データベースは未変更のままです。

例:


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]