ヘッダーをスキップ
Oracle® Database PL/SQLパッケージおよびタイプ・リファレンス
11g リリース2(11.2)
B56262-06
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

248 式フィルタのタイプ


注意:

この機能は、Oracle Databaseリリース11.2では非推奨で、リリース12.1では廃止されています。廃止の詳細は、My Oracle Support NoteID 1244535.1を参照してください。


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


関連項目:

詳細は、『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』を参照してください。

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


式フィルタのタイプの使用方法

この項では、式フィルタのタイプの使用に関連する項目について説明します。


セキュリティ・モデル

Oracle Databaseインストールでは、catexf.sqlスクリプトを実行してDBMS_EXPFILパッケージをロードし、必要な式フィルタのスキーマ・オブジェクトをEXFSYSスキーマに作成します。


式フィルタのタイプの要約

表248-1に、式フィルタ・オブジェクト型を示します。

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

表248-1 式フィルタのオブジェクト・タイプ

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

EXF$ATTRIBUTE


式フィルタの索引のストアド属性および索引付き属性を指定します。

EXF$ATTRIBUTE_LIST


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

EXF$INDEXOPER


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

EXF$TABLE_ALIAS


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

EXF$TEXT


プリファレンスを属性セットまたはイベント構造内のテキスト属性に関連付けます。

EXF$XPATH_TAG


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

EXF$XPATH_TAGS


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



EXF$ATTRIBUTE

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

構文

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

属性

表248-2 EXF$ATTRIBUTEの属性

属性 説明

attr_name

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

attr_oper

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

attr_indexed

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


使用上の注意

  • EXF$ATTRIBUTEタイプは、DBMS_EXPFIL.DEFAULT_INDEX_PARAMETERSプロシージャを使用して式フィルタの索引のストアド属性および索引付き属性を指定する場合に使用します。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;

属性

なし

使用上の注意

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

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$INDEXOPER項目のいずれかの値がALLの場合は、属性を含む述語内ですべての単純演算子(=><>=<=!=IS NULLIS NOT NULL)が共通していることを示しています。この値は、1つ以上の複合演算子(NVLLIKEおよびBETWEEN)とともに使用できます。

  • BETWEEN演算子を含む述語は、バイナリ演算子を含む2つの述語(>=演算子を含む述語と<=演算子を含む述語)として処理されます。デフォルトでは、これらの演算子の1つのみが索引付けされ、もう1つの演算子は値の置換によって評価されます。ただし、BETWEEN演算子を含む述語が(ストアドまたは索引付き)属性で共通している場合、EXF$INDEXOPER VARRAYBETWEENを指定すると、BETWEEN演算子で戻される両方のバイナリ演算子に索引付けを行うことができます。ただし、この場合は述語表の使用領域が増加するため、この演算子は、属性を含む大部分の述語でBETWEEN演算子が使用されている場合にのみ使用する必要があります。

  • 属性の共通演算子の1つとしてLIKE演算子を選択すると、その属性に対するLIKE述語が索引付けされます。LIKE演算子の索引付けは、述語の右側のVARCHAR2定数の先頭がワイルドカード文字でない場合にのみ有効となります。たとえば、LIKE演算子を索引付けすると、次の述語が効率的にフィルタされます。

    company LIKE 'General%'
    company LIKE 'Proctor%'
    

    ただし、次の述語は、最終段階でスパースな述語として評価されます。

    company LIKE '%Electric'
    company LIKE "%Gamble'
    

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

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);

属性

表248-3 EXF$TABLE_ALIASの属性

属性 説明

table_name

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


使用上の注意

  • 表の別名属性の概念は式フィルタのディクショナリに取得され、属性セットのオブジェクト・タイプ内の対応する属性はVARCHAR2データ・タイプを使用して作成されます。(『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』および「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' and EMP.NAME = 'Joe'形式の式を格納できます。JOBおよびNAMEは、SCOTT.EMP表の列の名前です。


EXF$TEXT

EXF$TEXTタイプは、プリファレンスを属性セットまたはイベント構造内のテキスト属性に関連付けます。

構文

CREATE or REPLACE TYPE EXFSYS.EXF$TEXT AS OBJECT(preferences VARCHAR2(1000));

属性

表248-4 EXF$TEXTの属性

属性 説明

preferences

LEXER、CLASSIFIER、WORDLISTなどのテキスト・プリファレンスの仕様。


使用上の注意

  • EXF$TEXT属性は、作成時にテキスト属性のプリファレンスを指定するために使用されます。EXF$TEXTタイプのインスタンスを介して指定されるプリファレンスは、テキスト述語のCTXRULE索引の作成に使用されます。テキスト・プリファレンス仕様の構文は、CTXRULE Indextypeに指定されたPARAMETERS句に似ています。(『Oracle Textリファレンス,リリース10gリリース2』のCTXRULE IndextypeのCREATE INDEX構文を参照。)

LEXERおよびWORDLISTプリファレンスを使用するテキスト述語は、EXF$TEXTオブジェクトの次のインスタンスを使用して次のように作成できます。

EXF$TEXT ('LEXER insrpt_lexer WORDLIST insrpt_wordlist');

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);

属性

表248-5 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属性を式フィルタの索引の位置フィルタまたは値フィルタとして構成します(『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』の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タイプは、式フィルタの索引パラメータの構成時にXMLタグのリストを指定します。

構文

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

属性

なし

使用上の注意

位置フィルタおよび値フィルタとして構成されている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
          )