ヘッダーをスキップ
Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス
10g リリース2(10.2)
B19245-02
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

187 Expression Filterのタイプ

Expression Filter機能では、事前定義された一連のタイプおよびこれらのタイプのパブリック・シノニムが提供されています。これらのタイプのほとんどは、Expression FilterプロシージャAPIを使用して索引パラメータを構成する場合に使用します。EXF$TABLE_ALIASタイプは、1つ以上のデータベース表で定義されている式をサポートする場合に使用します。


関連項目:

詳細は、『Oracle Databaseアプリケーション開発者ガイド-Rules ManagerおよびExpression Filter』を参照してください。

この章では、次の項目について説明します。


Expression Filterのタイプの要約

表187-1に、Expression Filterのオブジェクト・タイプを示します。

この章で定義されているタイプに渡されるすべての値および名前で、大/小文字は区別されません。大/小文字の区別を保つには、値を二重引用符で囲んでください。

表187-1 Expression Filterのオブジェクト・タイプ

オブジェクト・タイプ名 説明

EXF$ATTRIBUTE


Expression Filter索引のストアド属性および索引付き属性を指定します。

EXF$ATTRIBUTE_LIST


索引パラメータを構成する場合にストアド属性およびおよび索引付き属性のリストを指定します。

EXF$INDEXOPER


ストアド属性または索引付き属性を持つ述語で使用される共通演算子のリストを指定します。

EXF$TABLE_ALIAS


1つ以上のデータベース表で定義されている式を管理する場合に使用する特別な形式の要素属性を示します。

EXF$XPATH_TAG


一連のXPath述語を索引付けするためのXML要素またはXML属性を構成します。

EXF$XPATH_TAGS


Expression Filterの索引パラメータを構成する場合にXMLタグのリストを指定します。



EXF$ATTRIBUTE

EXF$ATTRIBUTEタイプは、Expression Filter索引のストアド属性および索引付き属性を処理する場合に使用します。

構文

CREATE or REPLACE TYPE EXF$ATTRIBUTE AS OBJECT attr_name    VARCHAR2(350),
                                               attr_oper    EXF$INDEXOPER,
                                               attr_indexed VARCHAR2(5);

属性

表187-2 EXF$ATTRIBUTEオブジェクト・タイプの属性

属性 説明

attr_name

ストアド属性または索引付き属性を構成する演算式。

attr_oper

属性を持つ述語で使用される共通演算子のリスト。デフォルト値はEXF$INDEXOPER('all')です。

attr_indexed

属性が索引付けされている場合はTRUE、そうでない場合はFALSEです。デフォルト値はFALSEです。


使用上の注意

EXF$ATTRIBUTEタイプは、DBMS_EXPFIL.DEFAULT_INDEX_PARAMETERSプロシージャを使用してExpression Filter索引のストアド属性および索引付き属性を指定する場合に使用します。EXF$ATTRIBUTEのインスタンス化時にattr_operおよびattr_indexedフィールドの値を省略すると、共通演算子(EXF$INDEXOPER('all'))のデフォルト値を持つストアド属性であるとみなされます。

共通演算子のリスト上のプリファレンスが存在しないストアド属性は、次のように表されます。

exf$attribute (attr_name => 'HorsePower(Model, Year)')

索引付き属性は、次のように表されます。

exf$attribute (attr_name => 'HorsePower(Model, Year)',
               attr_indexed => 'TRUE')

共通演算子のリストを持つ索引付き属性は、次のように表されます。

exf$attribute (attr_name => 'HorsePower(Model, Year)',
               attr_oper => exf$indexoper('=','<','>','>=','<='),
               attr_indexed => 'TRUE')

EXF$ATTRIBUTE_LIST

EXF$ATTRIBUTE_LISTタイプは、索引パラメータの構成時にストアド属性および索引付き属性のリストを指定する場合に使用します。

構文

CREATE or REPLACE TYPE EXF$ATTRIBUTE_LIST as VARRAY(490) of exf$attribute;

属性

なし

使用上の注意

詳細は、「DEFAULT_INDEX_PARAMETERSプロシージャ」を参照してください。

ストアド属性および索引付き属性のリストは、次のように表されます。

exf$attribute_list (
       exf$attribute (attr_name => 'Model',
                      attr_oper => exf$indexoper('='),
                      attr_indexed => 'TRUE'),
       exf$attribute (attr_name => 'Price',
                      attr_oper => exf$indexoper('all'),
                      attr_indexed => 'TRUE'),
       exf$attribute (attr_name => 'HorsePower(Model, Year)',
                      attr_oper => exf$indexoper('=','<','>','>=','<='),
                      attr_indexed => 'FALSE')
    )

EXF$INDEXOPER

EXF$INDEXOPERタイプは、ストアド属性または索引付き属性を持つ述語で使用される共通演算子のリストを指定する場合に使用します。

構文

CREATE or REPLACE TYPE EXFSYS.EXF$INDEXOPER as VARRAY(20) of VARCHAR2(15);

EXF$INDEXOPER配列の値は、次の表のリストに示すいずれかの値になります。

述語の説明
=
等価性述語
> より大述語
<
より小述語
>= 以上述語
<=
以下述語
!=、<>または^= 等しくない述語
IS NULL IS NULL述語
IS NOT NULL IS NOT NULL述語
ALL この表に示すすべての演算子(等価性述語からIS NOT NULL述語まで)
NVL NVL(等価性)演算子を含む述語
LIKE LIKE演算子を含む述語
BETWEEN BETWEEN述語

属性

なし

使用上の注意

共通演算子のリストを持つ属性は、次のように表されます。

exf$attribute (attr_name => 'HorsePower(Model, Year)',
               attr_oper => exf$indexoper('=','<','>','>=','<=', 'between'),
               attr_indexed => 'TRUE')

EXF$TABLE_ALIAS

EXF$TABLE_ALIASタイプは、属性セットに含めることができる特別な形式の要素属性です。これらの属性は、1つ以上のデータベース表で定義されている式を管理する場合に使用します。

構文

CREATE or REPLACE TYPE EXF$TABLE_ALIAS AS OBJECT table_name VARCHAR2(70);

属性

表187-3 EXF$TABLE_ALIASの属性

属性 説明

table_name

使用可能なスキーマ拡張を持つ表の名前。


使用上の注意

表の別名属性の概念はExpression Filterディクショナリに取得され、属性セットのオブジェクト・タイプ内の対応する属性はVARCHAR2データ型を使用して作成されます。 (『Oracle Databaseアプリケーション開発者ガイド-Rules ManagerおよびExpression Filter』の付録AおよびADD_ELEMENTARY_ATTRIBUTEプロシージャに関する項を参照。)

データベース表で定義されている一連の式では、対応する表の別名属性は次のように構成されています。

BEGIN
  DBMS_EXPFIL.ADD_ELEMENTARY_ATTRIBUTE (
                               attr_set  => 'HRAttrSet',
                               attr_name => 'EMP',
                               tab_alias => exf$table_alias('SCOTT.EMP'));
  DBMS_EXPFIL.ADD_ELEMENTARY_ATTRIBUTE (
                               attr_set  => 'HRAttrSet',
                               attr_name => 'DEPT',
                               tab_alias => exf$table_alias('DEPT'));
END;

前述の属性セットを使用するExpression列には、EMP.JOB = 'Clerk'およびEMP.NAME = 'Joe'形式の式を格納できます。JOBおよびNAMEは、SCOTT.EMP表の列の名前です。


EXF$XPATH_TAG

EXF$XPATH_TAGタイプは、一連のXPath述語を索引付けするためのXML要素またはXML属性を構成する場合に使用します。

構文

CREATE or REPLACE TYPE EXF$XPATH_TAG AS OBJECT tag_name    VARCHAR2(350),
                                               tag_indexed VARCHAR2(5),
                                               tag_type    VARCHAR2(30);

属性

表187-4 EXF$XPATH_TAGの属性

属性 説明

tag_name

XML要素またはXML属性の名前。 XML属性の名前の形式は、<ElementName>@<AttributeName>です。 オプションで、<Namespace URL>:<ElementName>@<AttributeName>のように、要素名にその名前空間URLの接頭辞を付けることができます。

tag_indexed

XMLタグが索引付けされている場合はTRUE、そうでない場合はFALSEです。

デフォルト

タグが位置フィルタの場合はTRUEです。

タグが値フィルタの場合はFALSEです。

tag_type

値フィルタの場合は値のデータ型です。位置フィルタの場合はNULLです。


使用上の注意

EXF$XPATH_TAGタイプは、XML要素またはXML属性をExpression Filter索引の位置フィルタまたは値フィルタとして構成する場合に使用します(『Oracle Databaseアプリケーション開発者ガイド-Rules ManagerおよびExpression Filter』のXPath述語の索引のチューニングに関する項を参照)。tag_typeNULL値を持つEXF$XPATH_TAGタイプのインスタンスは、XMLタグを位置フィルタとして構成します。現行のリリースでは、tag_type属性に指定可能なその他の値は文字列(CHARまたはVARCHAR)のみで、これらのタグは値フィルタとして構成されます。デフォルトでは、すべての位置フィルタは索引付けされ、値フィルタは索引付けされません。この動作は、tag_indexed属性にTRUE値またはFALSE値を適切に設定することによってオーバーライドできます。

XML要素は、位置フィルタとして構成し、EXF$XPATH_TAGタイプの次のインスタンスを使用して索引付けすることができます。

exf$xpath_tag(tag_name    => 'stereo',       --- XML element
              tag_indexed => 'TRUE',         --- indexed predicate group
              tag_type    => null)           --- positional filter

XML属性は、値フィルタとして構成し、次のタイプのインスタンスを使用して索引付けすることができます。

exf$xpath_tag(tag_name    => 'stereo@make',  --- XML attribute
              tag_indexed => 'TRUE',         --- indexed predicate group
              tag_type    => 'VARCHAR(15)')  --- value filter

次のコマンドは、前述の2つのフィルタを、対応する要素の名前空間URLを使用して構成します。

exf$xpath_tag(tag_name => 'http://www.auto.com/car.xsd:stereo',
              tag_indexed => 'TRUE', --- indexed predicate group
              tag_type => null)      --- positional filter

exf$xpath_tag(tag_name => 'http://www.auto.com/car.xsd:stereo@make'
              tag_indexed => 'TRUE',     --- indexed predicate group
              tag_type => 'VARCHAR(15)') --- value filter

EXF$XPATH_TAGS

EXF$XPATH_TAGSタイプは、Expression Filterの索引パラメータの構成時にXMLタグのリストを指定する場合に使用します。

構文

CREATE or REPLACE TYPE EXF$XPATH_TAGS as VARRAY(490) of EXF$XPATH_TAG;

属性

なし

使用上の注意

EXF$XPATH_TAGSタイプは、Expression Filterの索引パラメータの構成時にXMLタグのリストを指定する場合に使用します。(「DEFAULT_INDEX_PARAMETERSプロシージャ」を参照。)

位置フィルタおよび値フィルタとして構成されているXMLタグのリストは、次のように表されます。

exf$xpath_tags(
           exf$xpath_tag(tag_name    => 'stereo@make',  --- XML attribute
                         tag_indexed => 'TRUE',
                         tag_type    => 'VARCHAR(15)'), --- value filter
           exf$xpath_tag(tag_name    => 'stereo',       --- XML element
                         tag_indexed => 'FALSE',
                         tag_type    => null),          --- positional filter
           exf$xpath_tag(tag_name    => 'memory',       --- XML element
                         tag_indexed => 'TRUE',
                         tag_type    => 'VARCHAR(10)')  --- value filter
          )