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

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

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

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

 #dim rset As %SQL.StatementResult
 set stmt=##class(%SQL.Statement).%New()
 set st=stmt.%PrepareClassQuery("%SYS.LockQuery","List")
 set rset=stmt.%Execute()
 while rset.%Next() {
   write !,rset.%Get("FullReference")
   write !,rset.%Get("Owner")
   write !,rset.%Get("DelKey"),!
 }


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

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

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

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

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

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

 SET lname=""
 FOR I=1:1 {
    SET lname=$ORDER(^$LOCK(lname))
    IF lname="" QUIT }
    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トップに戻る