ストリームデータが格納されたカラムに対して、クラスクエリではどのように操作しますか?

 

ストリーム用定義があるカラム(プロパティ)に対してクラスクエリを実行したとき、カラムに入るデータにはストリームデータに対するStreamIDが含まれます。

データの出し入れでは、StreamIDを使用して

参照時:StreamIDを元にストリームオブジェクトをオープンし操作します。
更新時:操作対象のストリームオブジェクトのStreamIDを取得して (%Library.SerialStream クラスのGetStreamId()を使用して取得)指定のカラムにセットします。

処理詳細は、以下ドキュメントをご参照ください。
ストリームクラスについて【IRIS】
ストリームクラスについて


注意:クラスクエリ実行、および、埋め込みSQL、どちらの利用方法も同様に上記操作が必要です。

例で使用するクラス定義詳細や確認方法、埋め込みSQLでの実行例など詳細は添付のサンプルをご利用下さい。

【実行例:クラスクエリ実行時】

USER>set statement=##class(%SQL.Statement).%New()
USER>set status=statement.%PrepareClassQuery("Test.Person","ByName")
USER>set rset=statement.%Execute("山")
USER>do rset.%Next()
 ↓ クエリ実行で取得したカラム情報ではストリームデータは取得できません
USER>write rset.%Get("Note")
^Test.PersonS %Library.GlobalCharacterStream^Test.PersonS
USER>write rset.%Get("Note").Size
WRITE rset.%Get("Note").Size
^
USER>set sid=##class(%SerialStream).%Open(rset.%Get("Note"))
USER>write sid.Read(sid.Size)
これはストリームプロパティです。大容量のデータを格納できます。
USER>


該当する製品: Caché, Ensemble, 旧HealthShare, IRIS Data Platform, IRIS for Health
関連トピック:
添付ファイル: 参考資料(zip)

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

FAQトップに戻る