プログラム内でロック情報を取得することはできますか?

プログラムでロック情報を取得するには2つの方法があります。

%SYS.LockQuery クラスの使用 と SSVN 構造化システム変数の使用です。

1. %SYS.LockQuery クラスの使用。

 Set Rset=##class(%ResultSet).%New("%SYS.LockQuery:List")
 
 //ロックテーブル内のロック情報を取得
 Do Rset.Execute()
 
 While (Rset.Next()) {
      Write !,Rset.FullReference
      Write !,Rset.Owner
      Write !,Rset.DelKey,!
   }
 Do Rset.Close()


より詳細なロック情報を取得する場合には List クエリではなく Detail クエリを使用します。 
%New("%SYS.LockQuery:List") を %New("%SYS.LockQuery:Detail") に変更。

その他 条件を指定してロック情報を取得する事が出来ます。
詳細については以下クラスリファレンスをご参照ください。

クラスリファレンス(%SYS.LockQuery)【IRIS】

クラスリファレンス(%SYS.LockQuery)

2. SSVN 構造化システム変数の使用

以下のサンプルは現在のネームスペースにあるロックを検索し、表示します、またLOCKET というローカル配列にあるロック名を格納します。

 SET lname=""
 FOR I=1:1 {
    SET lname=$ORDER(^$LOCK(lname))
    QUIT:lname=""
    SET LOCKET(I)=lname
    WRITE !,"the lock name is: ",lname
 }
 WRITE !,"All lock names listed"
 QUIT

^$LOCKについては、以下ドキュメントをご参照ください。

^$LOCKについて【IRIS】

^$LOCKについて


該当する製品: Caché, Ensemble, HealthShare/Caché Based, IRIS Data Platform, HealthShare/IRIS Based, IRIS for Health
関連トピック:
添付ファイル:

アンケートにご協力をお願いします
このトピックは参考になりましたか?
このトピックに関するお問い合わせ

FAQトップに戻る