Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

ストレージ・プロシージャ (2)

ストレージ・プロシージャでは、インデックスによって、最初に名前を姓と名に分割します。次の 3 文は、他言語の文とはまったく異なります。文のうち 2 つのデータは添え字に格納されるため、イコール記号の右側には “何も” 指定しません。理由はツリー構造にあります。

例えば、姓、名、ID は添え字に格納されます。名前はアルファベット順に並べ替えられるため、データベースには姓、名の順でインデックスが作成されます。電話番号と誕生日のインデックスも同様に作成されます。グローバルの ^PersonI は 3 つの大きな枝に分かれ、各枝にインデックスがあるツリーになります。電話番号インデックスを構築する行は異なるため、電話番号の固有データを利用できます (ID は添え字に格納されません)。

ストレージ・プロシージャが完成したら、このプロシージャを実行して、グローバルへのデータの追加を開始します。その際、各グローバルのツリーを紙に描くと、わかりやすくなることがあります。いずれにしても、データを追加したら、管理ポータル ([システム・エクスプローラ] セクション) を使用して システム, グローバル に移動し、表示 をクリックして、2 つのグローバル (^PersonD^PersonI) を確認します。

store()  [name, phone, intdob]
 { 
  ; ...store procedure continued from previous page...
  set ln = $piece(name, ",", 1),
      fn = $piece(name, ",", 2)                ; break name for storage in index

  /* the next three statements store data in subscripts
     because of the automatic sorting of subscripts,
     this has the effect of building 3 indices: name, phone, and DOB */
  set ^PersonI( "Name", ln, fn, id) = ""       ; store the name
  set ^PersonI( "Phone", phone) = id           ; store the UNIQUE phone
  set ^PersonI( "DOB", intdob, id) = ""        ; store the DOB
  write "...stored"                            ; done
 }
FeedbackOpens in a new tab