式フィルタ機能では、事前定義された一連のタイプおよびこれらのタイプのパブリック・シノニムが提供されています。これらのタイプのほとんどは、式フィルタのプロシージャAPIを使用して索引パラメータを構成する場合に使用します。 EXF$TABLE_ALIAS
タイプは、1つ以上のデータベース表で定義されている式をサポートする場合に使用します。
関連項目: 詳細は、『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』を参照してください。 |
この章では、次の項目について説明します。
表226-1に、式フィルタのオブジェクト・タイプを示します。
この章で定義されているタイプに渡されるすべての値および名前で、大/小文字は区別されません。大/小文字の区別を保つには、値を二重引用符で囲んでください。
表226-1 式フィルタのオブジェクト・タイプ
オブジェクト・タイプ名 | 説明 |
---|---|
|
式フィルタの索引のストアド属性および索引付き属性を指定します。 |
|
索引パラメータを構成する場合にストアド属性およびおよび索引付き属性のリストを指定します。 |
|
ストアド属性または索引付き属性を持つ述語で使用される共通演算子のリストを指定します。 |
|
1つ以上のデータベース表で定義されている式を管理する場合に使用する特別な形式の要素属性を示します。 |
|
プリファレンスを属性セットまたはイベント構造内のテキスト属性に関連付けます。 |
|
一連のXPath述語を索引付けするためのXML要素またはXML属性を構成します。 |
|
式フィルタの索引パラメータを構成する場合にXMLタグのリストを指定します。 |
EXF$ATTRIBUTE
タイプは、式フィルタの索引のストアド属性および索引付き属性を処理する場合に使用します。
構文
CREATE or REPLACE TYPE EXF$ATTRIBUTE AS OBJECT attr_name VARCHAR2(350), attr_oper EXF$INDEXOPER, attr_indexed VARCHAR2(5);
属性
表226-2 EXF$ATTRIBUTEの属性
属性 | 説明 |
---|---|
|
ストアド属性または索引付き属性を構成する演算式。 |
|
属性を持つ述語で使用される共通演算子のリスト。 デフォルト値は |
|
属性が索引付けされている場合は |
使用上の注意
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
タイプは、索引パラメータの構成時にストアド属性および索引付き属性のリストを指定する場合に使用します。
構文
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
タイプは、ストアド属性または索引付き属性を持つ述語で使用される共通演算子のリストを指定する場合に使用します。
構文
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 NULL
、IS NOT NULL
)が共通していることを示しています。この値は、1つ以上の複合演算子(NVL
、LIKE
およびBETWEEN
)とともに使用できます。
BETWEEN
演算子を含む述語は、バイナリ演算子を含む2つの述語(>=演算子を含む述語と<=演算子を含む述語)として処理されます。デフォルトでは、これらの演算子の1つのみが索引付けされ、もう1つの演算子は値の置換によって評価されます。 ただし、BETWEEN
演算子を含む述語が(ストアドまたは索引付き)属性で共通している場合、EXF$INDEXOPER VARRAY
にBETWEEN
を指定すると、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
タイプは、属性セットに含めることができる特別な形式の要素属性です。これらの属性は、1つ以上のデータベース表で定義されている式を管理する場合に使用します。
構文
CREATE or REPLACE TYPE EXF$TABLE_ALIAS AS OBJECT table_name VARCHAR2(70);
属性
使用上の注意
表の別名属性の概念は式フィルタのディクショナリに取得され、属性セットのオブジェクト・タイプ内の対応する属性はVARCHAR2
データ型を使用して作成されます。 (『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』の付録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' and EMP.NAME = 'Joe'
形式の式を格納できます。JOB
およびNAME
は、SCOTT.EMP
表の列の名前です。
EXF$TEXT
タイプは、プリファレンスを属性セットまたはイベント構造内のテキスト属性に関連付ける場合に使用します。
構文
CREATE or REPLACE TYPE EXFSYS.EXF$TEXT AS OBJECT(preferences VARCHAR2(1000));
属性
使用上の注意
EXF$TEXT属性は、テキスト属性の作成時にプリファレンスを指定する場合に使用します。 EXF$TEXT タイプのインスタンスによって指定したプリファレンスは、テキスト述語のCTXRULE索引の作成に使用されます。テキスト・プリファレンスを指定する構文は、CTXRULE索引タイプに指定するPARAMETERS句と同様です。 CTXRULE索引タイプについては、『Oracle Textリファレンス』のCREATE INDEX構文を参照してください。
例
LEXERおよびWORDLISTプリファレンスを使用するテキスト述語は、EXF$TEXTオブジェクトの次のインスタンスを使用して次のように作成できます。
EXF$TEXT ('LEXER insrpt_lexer WORDLIST insrpt_wordlist');
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);
属性
表226-5 EXF$XPATH_TAGの属性
属性 | 説明 |
---|---|
|
XML要素またはXML属性の名前。 XML属性の名前の形式は、 |
|
XMLタグが索引付けされている場合は デフォルト タグが位置フィルタの場合は タグが値フィルタの場合は |
|
値フィルタの場合は値のデータ型です。位置フィルタの場合は |
使用上の注意
EXF$XPATH_TAG
タイプは、XML要素またはXML属性を式フィルタの索引の位置フィルタまたは値フィルタとして構成する場合に使用します(『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』のXPath述語の索引のチューニングに関する項を参照)。 tag_type
にNULL
値を持つ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
タイプは、式フィルタの索引パラメータの構成時にXMLタグのリストを指定する場合に使用します。
構文
CREATE or REPLACE TYPE EXF$XPATH_TAGS as VARRAY(490) of EXF$XPATH_TAG;
属性
なし
使用上の注意
EXF$XPATH_TAGS
タイプは、式フィルタの索引パラメータの構成時に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 )