前のトピック: リスト

次のトピック: IN 節

Where 節

doSelect() や doQuery() など、一部のWeb サービス メソッドでは検索時に Where 節が必要となります。 Where 節とは、SQL ステートメントの中で、「WHERE」というキーワードの後にくる文字列のことです。 たとえば、姓を使用して連絡先(「cnt」オブジェクト)を検索する Where 節は以下のようになります。

last_name = 'Jones'

または

last_name LIKE 'Jone%'

最初の例では「Jones」のみを検索しますが、2 つ目の例では名前が「Jone」で始まる連絡先をすべて検索します。

CA SDM がサポートする Where 節は、標準 SQL パラメータのサブセットのみです。以下がサブセットのリストです。

グループ化にはかっこが使用できます。 明示的な結合、EXISTS、および GROUP BY エレメントはサポートしていません。

列名は単純にオブジェクトの属性名です。 オブジェクト レベルで属性に定義されている名前を使用する必要があります。実際の DBMS 列名を使用しないでください。 文字列値は前述の例のように引用符で囲む必要があります。 日付や期間など CA SDM データ タイプは以下のように整数として扱います。

creation_date > 38473489389

SREL(外部キー)タイプを検索する場合は、Where 節にドット表記を使用できます。 たとえば、リクエスト(「cr」)オブジェクトに対する以下のクエリでは、連絡先に特定の姓が割り当てられたすべてのリクエストが返されます。

assignee.last_name like 'Martin%'

ドット表記は Where 節を作成するには非常に便利ですが、クエリが有効であることを確認する必要があります。 連絡先の last_name 属性のインデックスが DBMS で作成されていない場合は、例に示したクエリは役に立ちません(ただし、この例の場合はインデックスが作成されているものとします)。 SREL を使用して検索するときに必ずインデックスを使用するには、CA SDM オブジェクトの id 属性を使用します。 CA SDM のどのテーブルでも、id 属性に対してインデックスが作成されています。

オブジェクトの id 属性はオブジェクトのハンドルから簡単に取得することができます。 前述のとおり、オブジェクトのハンドルは「<objectName>:<id>」形式の文字列です。ここでの id は、CA SDM オブジェクトの id 属性の値です。 id 部分を抽出して、Where 節に「<attributeName>.id」を使用します。

オブジェクトの id は整数または UUID のどちらかのタイプです。 整数の場合、以下のように使用します。 たとえば、rootcause が根本原因オブジェクト(ハンドル「rc:1234」)を指しているリクエストを検索するには、Where 節は以下のようになります。

rootcause.id = 1234

オブジェクトの id が UUID タイプの場合は、以下のようにフォーマットする必要があります。

U’<uuid>’  

UUID の文字列は一重引用符で囲み、大文字の「U」を先頭に付けます。 UUID 値の文字列はオブジェクト ハンドルの <id> 部分です。

前述の例を使用すると、特定の連絡先のハンドルが「cnt: 913B485771E1B347968E530276916387」であるとわかっている場合、以下の例に示すように、クエリを作成できます。

assignee.id = U'913B485771E1B347968E530276916387'

以下の例のように、「persistent_id」属性のクエリを行う Where 節は作成しないでください。

rootcause.persistent_id = ‘rc:1234’

ハンドルの詳細については、「標準装備のハンドル」を参照してください。

関連項目:

データ エレメント辞書

オブジェクトと属性

テーブルとオブジェクトの相互参照