SQLからObjectScriptプログラムを実行し、値を返すことはできますか?

はい、できます。
詳細は、添付のISJ.TestClass1.xmlをインポートして、クラス定義をご参照ください。

クラス定義インポート後、ISJ.TestClass1 クラスに対してPopulate()メソッドを実行すると、サンプルデータが作成できます。

USER>do ##class(ISJ.TestClass1).Populate(10)


メソッド getLatestID() のように、InterSystems ObjectScript で記述し、戻り値を設定します。さらに、このメソッドを ClassMethod かつ、SQLストアドプロシージャ(sqlproc キーワード)に指定します。

ClassMethod getLatestID() As %Integer [ SqlName = getLatestID, SqlProc ]
{


この定義により以下のようにストアド関数として実行できます。
(ターミナルをSQLの実行環境に変更してから SELECT文を実行している例です)

USER>do $system.SQL.Shell()
SQL Command Line Shell
----------------------------------------------------
 
The command prefix is currently set to: <>.
Enter q to quit, ? for help.
USER>>select ISJ.getLatestID() As LatestID
4.      select ISJ.getLatestID() As LatestID
 
LatestID
10


また、以下実行例のように記述すると、最新IDのnameだけ表示します。

select name from ISJ.TestClass1 WHERE ID=ISJ.getLatestID()

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

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

FAQトップに戻る