|
注意: この機能は、Oracle Databaseリリース11.2では非推奨で、リリース12.1では廃止されています。廃止の詳細は、My Oracle Support NoteID 1244535.1を参照してください。 |
式フィルタ機能では、事前定義された一連のタイプおよびこれらのタイプのパブリック・シノニムが提供されています。これらのタイプのほとんどは、式フィルタのプロシージャAPIを使用して索引パラメータを構成する場合に使用します。EXF$TABLE_ALIASタイプは、1つ以上のデータベース表で定義されている式をサポートする場合に使用します。
|
関連項目: 詳細は、『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』を参照してください。 |
この章では、次の項目について説明します。
この項では、式フィルタのタイプの使用に関連する項目について説明します。
表248-1に、式フィルタ・オブジェクト型を示します。
この章で定義されているタイプに渡されるすべての値および名前で、大/小文字は区別されません。大/小文字の区別が必要な場合は、値を二重引用符で囲んでください。
表248-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);
使用上の注意
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 (
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配列の値は、次の表のリストに示すいずれかの値になります。
| 値 | 述語の説明 |
|---|---|
= |
等価性述語 |
> |
より大述語 |
< |
より小述語 |
>= |
以上述語 |
<= |
以下述語 |
!=、<>または^= |
等しくない述語 |
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$TABLE_ALIASタイプは、属性セットに含めることができる特別な形式の要素属性です。これらの属性は、1つ以上のデータベース表で定義されている式を管理します。
使用上の注意
表の別名属性の概念は式フィルタのディクショナリに取得され、属性セットのオブジェクト・タイプ内の対応する属性は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$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の属性
| 属性 | 説明 |
|---|---|
|
|
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タグのリストを指定します。
例
位置フィルタおよび値フィルタとして構成されている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
)