リストコレクションを定義したプロパティに対するSQLアクセス方法を教えてください。

リストコレクション(Property XXX As list of %String;)で定義したプロパティは、SQL関数: $LISTBUILD() 、$LISTFROMSTRING() を使用して操作できます。
各SQL関数については、下記ドキュメントページをご参照ください。

InterSystems SQL リファレンス - $LISTBUILD() 【IRIS】
IRIS SQL リファレンス - $LISTFROMSTRING() 【IRIS】
Caché SQL リファレンス - $LISTBUILD()
Caché SQL リファレンス - $LISTFROMSTRING()

/// クラス定義例
Class ISJ.ListOfData Extends %Persistent
{
Property listdata As list Of %String;
}


SQL文実行例は以下の通りです。
 

USER>do $system.SQL.Shell()
--- 表示省略 ---
USER>>insert into ISJ.ListOfData (listdata) values($LISTBUILD('あ','い','う'))
10.     insert into ISJ.ListOfData (listdata) values($LISTBUILD('あ','い','う'))

1 Row Affected
--- 表示省略 ---
↓次は $LISTFROMTOSTRING()を使用した例↓
USER>>insert into ISJ.ListOfData (listdata) values($LISTFROMSTRING('か,き,く'))
12.     insert into ISJ.ListOfData (listdata) values($LISTFROMSTRING('か,き,く')   )
1 Row Affected
statement prepare time: 0.0180s, elapsed execute time: 0.0001s.
---------------------------------------------------------------------------
USER>>quit
USER>set obj=##class(ISJ.ListOfData).%OpenId(1) // オブジェクトで確認
USER>write obj.listdata.Count()
3
USER>write obj.listdata.GetAt(1)

USER>write obj.listdata.GetAt(2)

USER>write obj.listdata.GetAt(3)

USER>set obj=##class(ISJ.ListOfData).%OpenId(2)
USER>for i=1:1:obj.listdata.Count() {write obj.listdata.GetAt(i),!}



ODBC形式でアクセスするとカンマ区切りデータとして取り扱えます。

※表示形式変更方法は、DATE型やTIME型カラムに対する方法と同じです。詳細は関連トピックをご参照ください。
 

USER>do $system.SQL.Shell()
-- 表示省略 --
USER>>set selectmode = odbc     // ←ODBCモードへの切り替え

selectmode = odbc
USER>>select * from ISJ.ListOfData
14.     select * from ISJ.ListOfData
ID      listdata
1       あ,い,う
2       か,き,く
2 Rows(s) Affected
statement prepare time: 0.0003s, elapsed execute time: 0.0006s.
---------------------------------------------------------------------------
USER>>update ISJ.ListOfData set listdata='さ,し,す' where ID=1
15.     update ISJ.ListOfData set listdata='さ,し,す' where ID=1
1 Row Affected
statement prepare time: 0.0007s, elapsed execute time: 0.0003s.
---------------------------------------------------------------------------
USER>>select * from ISJ.ListOfData
16.     select * from ISJ.ListOfData
ID      listdata
1       さ,し,す
2       か,き,く
2 Rows(s) Affected
statement prepare time: 0.0003s, elapsed execute time: 0.0005s.
USER>>quit
---------------------------------------------

 


該当する製品: Caché, Ensemble, HealthShare/Caché Based, IRIS Data Platform, HealthShare/IRIS Based, IRIS for Health
関連トピック: サーバ側ロジックでSQLを実行するとき、DATE型やTIME型カラムの操作方法を教えてください。
関連トピック:特殊変数$ZTIMESTAMP をローカルのタイムゾーンに変更する方法を教えてください。
添付ファイル:

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

FAQトップに戻る