ストリーム用定義があるカラム(プロパティ)に対してクラスクエリを実行したとき、カラムに入るデータにはストリームデータに対する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>