クラスへのクエリの追加
InterSystems IRIS® クラス定義には、クエリ定義が含まれる場合があります。
概要については、"クラス・クエリの定義と使用" を参照してください。詳細は、"クラス定義リファレンス" の "クエリ定義" を参照してください。
新規のクエリをクラス定義に追加するには、以下の 2 つの方法があります。
-
クラス・エディタを使用して、クラス定義を編集する方法
-
新規クエリ・ウィザードを使用します。
クラス・エディタを使用してクエリを追加するには、クラス・エディタの空の行にカーソルを配置し、次のようにクエリ宣言を入力します。
Class MyApp.Person Extends %Persistent
{
Property Name As %String;
/// This query provides a list of persons ordered by Name.
Query ByName(ByVal name As %String) As %SQLQuery(CONTAINID = 1)
{
SELECT ID,Name FROM Person
WHERE (Name %STARTSWITH :name)
ORDER BY Name
}
}
また、既存のクエリ宣言をコピーして貼り付け、それを編集することもできます。
新規クエリ・ウィザード
新規クエリ・ウィザードを使用して、新規クエリをクラス定義に追加できます。[クラス]→[追加]→[クエリ] を選択して、新規クエリ・ウィザードを開くことができます。または、クラス・インスペクタで右クリックして、[追加]→[新規クエリ] を選択します。ツールバーの [新規クエリ] ボタン をクリックすることもできます。
[完了] ボタンはいつでも選択できます。指定していない情報に対しては既定値が設定されます。
名前、実装、および説明ページ
新規クエリ・ウィザードでは、以下の情報の入力が促されます (これらの値は後で変更できます)。
(必須) 新規クエリの名前。これは、有効なクエリ名である必要があります。また、定義済みの既存のクエリと同じ名前を付けることはできません。
"識別子のルールとガイドライン" を参照してください。
(必須) これが SQL 文を基にしたクエリ (ウィザードで生成されたクエリ) であるか、ユーザ記述のコードを基にしたクエリ (ユーザが自らクエリ実装のコードを記述したクエリ) であるかを指定します。
(オプション) 新規クエリに関する説明。この説明は、クラス・ドキュメントがオンライン・クラス・ライブラリ・ドキュメントで表示されるときに使用されます。
説明には、HTML フォーマット・タグを記述することもできます。"クラスの定義と使用" の "クラス・ドキュメントの作成" を参照してください。
入力パラメータ・ページ
クエリは、入力パラメータ (引数) を取ります (入力パラメータを必要としないこともあります)。
これらのパラメータの名前、型、および既定値を指定することができます。引数は、表形式で表示されます。テーブルにある [追加] アイコン を使用して、引数リストに新規の項目を追加することができます。このアイコンをクリックすると、ポップアップ・ダイアログが表示され、引数の名前、そのタイプ、オプションの既定値を指定できます。上矢印 と下矢印 を使用すると、リスト内の項目の順序を並べ替えることができます。
列ページ
SQL ベースのクエリでは、結果セットに含める (または、生成された SQL クエリの SELECT 句によって) オブジェクト・プロパティ (列) を指定する必要があります。
クエリに列を追加するには、利用できるプロパティリストの左側から項目を選択し、[>] ボタンを使用してその項目を右側のリストに移動します。プロパティをダブルクリックして移動することもできます。
条件ページ
SQL ベースのクエリでは、結果セットを制限する (または、生成された SQL クエリの SQL WHERE 句によって) 条件を指定できます。
条件を設定するには、一連のコンボ・ボックスから値を選択します。[表現] ボックスには、表現 (リテラル値など) やクエリ引数 (: コロン文字で始まる SQL ホスト変数など) を指定できます。
照合順ページ
SQL ベースのクエリでは、結果セットの並べ替え (生成された SQL クエリの SQL ORDER BY 句) に使用する列を指定できます。
行指定形式ページ
ユーザ記述のクエリでは、クエリによって返される列の名前やタイプを指定する必要があります。
SQL ベースのクエリの場合、ウィザードではこの情報の入力は促されません。クラス・コンパイラが、SQL クエリを検証することで決定できるためです。
新規クエリ・ウィザード実行の結果
新規クエリ・ウィザードを実行した後、クラス・エディタ・ウィンドウは更新され、新規のクエリ定義が表示されます。以下に例を示します。
/// This is a Person class
class MyApp.Person extends %Persistent
{
Query ByName(ByVal name As %String) As %SQLQuery(CONTAINID = 1)
{
SELECT ID,Name FROM Person
WHERE (Name %STARTSWITH :name)
ORDER BY Name
}
}
このクエリをさらに変更する場合は、クラス・エディタ、またはクラス・インスペクタを使用します。
ユーザ記述のクエリを指定した場合、クラス・エディタには新規のクエリ定義と、実装しようとしているクエリ・メソッドのスケルトンの両方が追加されます。以下に例を示します。
Class MyApp.Person Extends %Persistent
{
// ...
ClassMethod MyQueryClose(
ByRef qHandle As %Binary
) As %Status [ PlaceAfter = MyQueryExecute ]
{
Quit $$$OK
}
ClassMethod MyQueryExecute(
ByRef qHandle As %Binary,
ByVal aaa As %Library.String
) As %Status
{
Quit $$$OK
}
ClassMethod MyQueryFetch(
ByRef qHandle As %Binary,
ByRef Row As %List,
ByRef AtEnd As %Integer = 0
) As %Status [ PlaceAfter = MyQueryExecute ]
{
Quit $$$OK
}
Query MyQuery(
ByVal aaa As %Library.String
) As %Query(ROWSPEC = "C1,C2")
{
}
}