sticker (0.1.5.2) | 2009-10-25 12:47 |
<cursor>タグは、<for>タグによるループ処理や<if>タグによる分岐処理 を行いたい場合に利用するカーソルを定義するためのタグです。
<cursor>タグには子要素でSQLを記述しますが、このSQLを実行して得られた結果セット に対してカーソルが設定されます。このカーソルを利用して、<for>タグによる ループ処理や<if>タグによる分岐処理を行います。
実際には、<cursor>タグを定義した段階ではSQLは発行されません。SQLが発行され結果 セットに対するカーソルがオープンされるのは<for>タグ実行時や<if>タグ 実行時になります。
カーソルで得られた結果セットのフィールド値にアクセスするためには、 「_$$フィールド名$$_」とします。こうすることにより、他のタグの属性やテキスト要素 にカーソルで得られた結果の値を利用することができます。
<cursors> <corsor>タグの親タグです。
<for> <cursor>タグで生成した結果セットに対してループ処理を実行します。
<if> <cursor>タグで生成した結果セットの1行目1フィールド目の値をチェックし、結果に応じて条件分岐を行います。
<cursors> <cursor name="カーソル名"> カーソルを開くときに実行されるSQL文 </cursor> </cursors>
サーバー1のテーブルに対してカーソルを定義し、得られた結果セットの値を利用してログ出力を行います。
<servers> <server name="db-server1" user="scott" pass="tiger"/> </servers> <cursors> <cursor name="employee_cursor"> select * from Employee </cursor> </cursors> <connect name="db-server1"> <for name="employee_cursor"> <info>社員ID→_$$id$$_ 名前→_$$name$$_ </info> </for> </connect>
サーバー1のテーブルに接続し、各部署に所属する社員の一覧をCSVファイルにエクスポートします。 このとき、CSVファイル名を部署名.csvとします。
<servers> <server name="db-server1" user="scott" pass="tiger"/> </servers> <cursors> <cursor name="dept_cursor"> select * from Dept </cursor> </cursors> <connect name="db-server1"> <for name="dept_cursor"> <export destination="_$$name$$_.csv"> select * from employee where deptId=_$$id$$_ </export> </for> </connect>