SQLSequencer 取り扱い説明書 ---Oracle 版

特許出願中
SQLSequencer 取り扱い説明書
及びソフトウエア使用許諾契約
---Oracle 版---
Ver.1.0
2009.08.014
Copyright(c) Since 2009 (株)オンネット・システムズ All rights reserved.
1
本取り扱い説明書に記されたソフトウェア(SQLSequencer)をご使用される前に、必ず以下のソ
フトウェア使用許諾契約をよくお読み頂き、同意される場合にのみご使用ください。
ソフトウェア使用許諾契約
本ソフトウェア使用許諾契約(以下「本契約」といいます。)は、お客様が株式会社オンネット・システム
ズ(以下「オンネット」といいます。)から入手したソフトウェアやマニュアルなどの情報(以下「本件ソフ
トウェア」といいます。)に関し、オンネットと、本件ソフトウェアの全部又は一部をハードディスク等の記
憶装置へ保存し、又は本件ソフトウェアに含まれるプログラムをコンピュータ上で実行するお客様との
間で締結される契約です。
第1条 (本契約の成立、効力及び終了)
(1) お客様は、本件ソフトウェアの全部又は一部をコンピュータのハードディスク等の記憶装置へ保
存したとき、又は本件ソフトウェアを使用したときは、本契約の締結に同意したものとみなされま
す。このお客様の同意をもって、本契約は成立し、効力を生じます。
(2) お客様は、自己が保存した本件ソフトウェアの全てを削除することにより、本契約を終了させるこ
とができます。
(3) オンネットは、独自の判断に基づき、本契約を終了することができます。
(4) お客様は、理由のいかんを問わず、本契約の終了についてオンネットに対し補償金その他いか
なる名目での支払いも請求することはできないものとします。
第2条 (使用条件)
(1) オンネットは、お客様に対し、本件ソフトウェアを本契約に基づく使用条件の範囲内、仕様の範
囲内で、自由に利用できる権利を許諾します。
(2) 製品利用の場合、本件ソフトウェアの利用は、本件ソフトウェアがインストールされた 1 台のコン
ピュータの範囲に限定します。但し、そのコンピュータの OS 種類、利用人数、データ処理の件数
について制限を設けません。
試用(Trial 指定)の場合、(2)項で示す、1 台の制限は適用されません。但し機能制限につきま
しては、事前に承諾されているものとします。
(3) 1台のコンピュータから接続されるデータベースシステム(以下 DBMS といいます)の数に制限を
設けません
第 3 条 (禁止事項)
Copyright(c) Since 2009 (株)オンネット・システムズ All rights reserved.
2
(1) お客様は、本契約において、オンネットより明示的に認められた場合を除き本件ソフトウェアを複
製することはできません。
(2) お客様は、本件ソフトウェアを第三者に配布、レンタル、リース、貸与及び譲渡することはできま
せん。
(3) お客様は、本件ソフトウェアに含まれるプログラムに対して、修正を加えること、翻訳を行うこと、
及び逆コンパイル、逆アセンブル等のリバースエンジニアリングを行うことはできません。
第4条 (著作権の帰属)
本件ソフトウェアの著作権は、全てオンネットに帰属します。
第 5 条 (免責)
(1) オンネットは、お客様、その他の第三者が本件ソフトウェアに関連して直接間接に蒙ったいかな
る損害に対しても、賠償等の一切の責任を負わず、かつ、お客様はこれに対してオンネットを免
責するものとします。
(2) オンネットはお客様に対し、本件ソフトウェアの動作保証、使用目的への適合性の保証、商業性
の保証、使用結果についての的確性や信頼性の保証、第三者の権利侵害及び瑕疵担保義務
も含め、いかなる責任も一切負いません。オンネットがこれらの可能性について事前に知らされ
ていた場合も同様です。
(3) オンネットは独自の判断に基づき、本件ソフトウェアの仕様又は内容の変更、修正、配布方法等
の変更及び対価の設定をすることができます。
(4) オンネットからお客様に提供される本件ソフトウェアにかかる情報についても、直接間接を問わ
ず、本条各項の規定が適用されます。
第 6 条 (管轄裁判所)
本契約に関する紛争は、東京地方裁判所を第一審の専属の合意管轄裁判所とします。
2009 年 8 月 14 日
株式会社オンネット・システムズ
代表取締役 重永 裕祥
Copyright(c) Since 2009 (株)オンネット・システムズ All rights reserved.
3
■ 目次
項目
内容
1 SQLSequenser(以下
SQLSequenser(以下 SQLS
SQLS)ついて
LS)ついて
頁
5
1.1 バッチ処理をプログラムレスで
1.2 SQLS の機能
1.3 動作概要
1.4 システム要件
2 インストールと操作
7
2.1 パッケージの内容
2.2 インストール事前作業
2.3 インストール
2.4 実行
2.5 アンインストール
3 環境設定と実行方法
9
3.1 実行環境
3.2 実行環境設定ファイル
3.3 起動方式
3.4 戻り値
4 動作定義 XML 記述方法
14
4.1 サンプルフロー
4.2 記述例(XML の仕様で記述します)
4.3 動作定義 XML ファイルに記述するタグ説明(通常)
4.4 動作定義 XML ファイルに記述するタグ説明(条件分岐)
5 SQL の実行制御の実際
22
5.1 置換文字列の解釈
5.2 SQL の実行
5.3 SQL 条件分岐処理
5.4 エラー分岐処理(DBMS からのエラーのみ判定する)
5.5 次 SQLNO「99」の扱い
6 ログ出力
26
6.1 出力例
Copyright(c) Since 2009 (株)オンネット・システムズ All rights reserved.
4
1
SQLSequenser
SQLSequenser(以下
equenser(以下 SQLS)ついて
SQLS)ついて
1.1
バッチ処理をプログラムレスで
近年、データベース(以下、RDB)が発達し、その中に格納されたデータは、
SQL で簡単に操作できる様になりました。
そうなりますと、ビジネスシステムにおいて、COBOL、C や Java などの言語で
行ってきた複雑なデータ処理も殆ど SQL 操作で可能になってきました。
同時にハードウエア進歩も目覚しく、高性能化、低価格化が進んでおり、価
格、処理速度の面でも全く問題がなくなって参りました。
私たちは、この DB の技術進歩に着目し、2005 年頃から SQLS の原型を開発
し、実際に基幹業務構築に使用して参りました。
例えば汎用コンピュータで動作していた COBOL(バッチプログラム)700 本程
度のバッチプログラムを SQLS ですべて代替したことから実用性に自信を持ち
ました。
当初心配しました処理速度においても、サーバの技術進歩により汎用コンピュ
ータと比べても全く遜色ありませんでした。逆に、10 年程度古い汎用コンピュ
ータと比べれば数倍の速さ(30 万円前後のインテルサーバ)を経験しました。
また、SQLS は出力結果を CSV の形で出力しますので、これまで紙の帳票出
力を簡単にエクセル連携に切り替えることもできました。
その他、アイコン社の風神レポート(注)と連携しまして複雑な帳票出力、専用
帳票出力も極めて低価格に簡単に行えるようになりました。
従いまして業務の実世界を RDB でモデル化できれば、画面を伴わない処理の
殆どは SQLS で安価なシステム構築が可能となると確信し、SQLS の商品化を
行いました。
今後(株)オンネット・システムズでは、SQLS を用いた販売、購買、生産・原価
計算などのシステム構築経験から得られたノウハウを開発方法論(文書)、ツ
ールなどの形でまとめていきたいと考えております。
(注)
風神レポートは、http://www.icon-co.jp/Hoozin/をご参照ください
Copyright(c) Since 2009 (株)オンネット・システムズ All rights reserved.
5
1.2
SQLS の機能
・SQL を順番に実行する
・外部変数による SQL 文字列の置換実行
・SQL 結果による分岐の指定
・SQL エラー時の分岐の指定
・SQL エラーの無視、または、プログラム終了の指定
・コミットタイミングの指定
・ファイル出力(現在 CSV)
・対話モード(Yes,No,Cancel 画面の表示)
・ログ出力
1.3
動作概要
SQLS に対して、外部パラメータとして、SQL 実行を定義した xml ファイル(以
下、動作定義 XML ファイル)を指定することで動作します。
1.4
システム要件
・DBMS は、Oracle10g 以上
・Framework2.0 以上が動作する OS
・Oracle と SQLS が動作する PC 間で通信が確立していること
Copyright(c) Since 2009 (株)オンネット・システムズ All rights reserved.
6
2 インストールと操作
2.1
パッケージの内容
・SQLS 実行プログラム類(sqls_ora.zip)
・取り扱い説明書(ソフトウェア使用許諾契約を含む)
2.2
インストール事前作業
1.Framework2.0 以降がインストールされていること
インストール状況は以下の画面で確認できます。
インストールされていない場合は、以下のサイトからダウンロードしてください。
http://msdn.microsoft.com/ja-jp/netframework/cc807036.aspx
2.Oracle と SQLS 実行 PC の通信設定が完了されていること
確認方法は、DB 管理者、Oracle マニュアルを参照してください
2.3
インストール
①配付ファイル中の SQLS_ora.exe を任意のディレクトリにコピーします。
②必要により SQLS を実行するためのパス指定をします。
現在のパスは、[システム]-[プロパティ]の下記画面で確認できます。
2.4
実行
Copyright(c) Since 2009 (株)オンネット・システムズ All rights reserved.
7
・コマンドラインからパラメータ付きで実行します。
2.5
アンインストール
・インストール時のディレクトリ、プログラムファイルを削除します。
Copyright(c) Since 2009 (株)オンネット・システムズ All rights reserved.
8
3
環境設定と実行方法
環境設定と実行方法
3.1
実行環境
会話用
system.ini
対象 DB
MessageBox
KEY-CSV
KEY-DB
動作定義
SQLSequencer
XML ファイル
ログファイル
対象 DB
CSV ファイル
(説明)
①system.ini
SQLS の動作環境を設定するファイルです。
②ログファイル
実行結果が格納されます。
③会話用 MessageBox
順次実行する際に必要により会話するための MessageBox です。指示により、実行
分岐をすることが目的です。
④動作定義 XML ファイル
ここに、SQLとその実行順序を記述します。
SQL は、DBMS が扱うすべてを記述できます。
⑤対象DB
動作定義 XML ファイル内のSQLにより操作する(入力、出力)対象のDB(テーブ
ル)です。数に制限はございません。
⑥CSVファイル
動作定義 XML ファイル内SQLのSELECT文によりCSVを出力することが可能で
す。
⑦KEY-CSV, KEY-DB(KEY 情報設定)
通常はコマンドラインから KEY 情報(置換文字列)を与えますが、外部から KEY 情報
を与えることで、置換文字列を切り替えながら複数回実行することが可能になりま
す。
Copyright(c) Since 2009 (株)オンネット・システムズ All rights reserved.
9
3.2
実行環境設定ファイル
system.ini を編集します。
[ORACLESERVER]
User=user-ID
*ユーザーID を指定します。
Password=psswd
*パスワードを指定します。
Using=connect-name
*接続文字列を指定します。
AlterSessionSet=sql_trace=true timed_statistics=true
*Oracle との動作設定は、Oracle 社技術資料をご確認願います。
[格納フォルダ]
LogPath=C:\USER\Log\
*ログファイルの格納位置を指定する
[SQL 実行制御]
Param=XXXXXXX
Sample=XXXXXXX
*置換文字列設定
動作定義 XML ファイル内で置換する文字列を設定します。
左辺=右辺 の書式で何個でも指定可能です。
XML ファイル内では左辺文字列を使用します。例えば CSV 出力場所が長くなるの
で、本機能を利用します。
ここで指定した置換文字列は、動作定義 XML で$$Param$$, $$Sample$$と指定すれ
ば、右辺の値に変換されます。
置換文字列は、KEY 情報として、後述する起動パラメータでも与えられますので、管
理上、どちらが有効かを考慮してください。
[製品登録]
PID=trial
製品登録をした場合、ここに、別途連絡された ID を登録します。試用の場合、trial を
指定しますと商品の評価を無料で行えます。
但し、SQLNO タグが示す NO の数が 3 個(ステップ)までの制限がございますが、そ
Copyright(c) Since 2009 (株)オンネット・システムズ All rights reserved.
10
の他の機能は製品版と同様です。
製品登録の方法は、別紙「製品登録方法」で行ってください。
3.3
起動方式
●起動パラメータ説明
/INIF=<実行環境設定ファイル名>
無指定の場合は、プログラムインストール場所となる。指定する場合は、フルパスでファ
イル名まで記述。
/XML ファイル=<SQL 情報.xml>
動作定義 XML ファイル名を指定する。
フォルダが指定された場合は、指定フォルダ下の全 XML ファイルを対象とする。文字列
SORT の順に実行されるので留意のこと
/KEY 情報=(KEY1=XXXX,KEY2=XXXX,・・・)
必要なキー情報を項目名と値で指定する。並べられた、キー情報の数だけ複数回実行
する。
複数回とは、複数並べられた SQL の実行を1回とし、それをまた最初から繰り返すという
意味。
/KEYSQL=(select KEY1,KEY2,… from XXXX where …)
必要なキー情報を SQL で指定する。
SQL で指定されたリスト名を項目名、レコード値を値として複数回実行する。
/KEYCSV=CSV ファイル名
必要なキー情報を CSV ファイルで指定する。
CSV ファイルの位置は、本プログラム実行位置からの相対パス、又は、絶対パスで指定
する。
先頭行は、1 行目(ヘッダー)は項目名を記述し、2行目からを値として、複数回実行す
る。
/SQL 表示={Y|N}
ログに実行 SQL 文を表示するかしないかを指定する。
省略時は、「N」。
/dialog={Y|N}
Copyright(c) Since 2009 (株)オンネット・システムズ All rights reserved.
11
対話モード、バッチモードを指定する。
/区切り文字=X
SQL 実行結果表示を行う際の項目間区切文字を指定する。
省略時は、「\t」(Tab)。
/show={Y|N}
XML ファイル内容をリスト表示するかしないかを指定する。「Y」指定時、SQL の実行は行
わず、リストの表示のみを行う。/SQL 表示の指定に関係なく、SQL 文がログに出力され
る。
省略時は、「N」。
/log=<ログファイル名>
出力ログファイル名を指定する。
省略時は、「SQLS_ORA」+「_yyyymmdd」(作成日) +「.log」。
/囲み={Y|N}
SQL の実行結果出力の際に各項目に対して囲み文字(”など)を付加するかを指定しま
す。
省略時は「N」、「Y」の時は「“」で囲む
●KEY 情報の与え方詳細
前述のとおり KEY 情報の設定により以下の三通りの起動法があります
KEY 情報とは、左辺(任意)と右辺(任意)の組み合わせで、置換文字列を表していま
す。
①置換文字列を直接指定する方法
SQLS_ORA.exe /XML ファイル=<SQL 情報.xml>
[/INIF=<実行環境設定ファイル名>]
[/KEY 情報=(KEY1=XXXX,KEY2=XXXX,・・・)]
[/SQL 表示={Y|N}] [/dialog={Y|N}] [/区切文字=X] [囲み={Y|N}] [show={Y|N}] [/log=<ログ
ファイル名>]
KEY1,KEY2・・・には、同じ項目名(左辺)を記述できません。
(例)
SQLS_ora.exe /XML フ ァ イ ル=sample4.xml /KEY 情 報=(NO1=00000002, NO2=00000002) /SQL 表 示=y
/DIALOG=y /SHOW=n /log=sample4.log /囲み=y
Copyright(c) Since 2009 (株)オンネット・システムズ All rights reserved.
12
②置換文字列を DB から指定する方法(レコード分連続実行します)
SQLS_ORA.exe /XML ファイル=<SQL 情報.xml>
[/INIF=<実行環境設定ファイル名>]
[/KEYSQL=(select KEY1,KEY2,・・・ from XXXX where ・・・)]
[/SQL 表示={Y|N}] [/dialog={Y|N}] [/区切文字=X] [囲み={Y|N}] [show={Y|N}] [/log=<ログ
ファイル名>]
(例)
SQLS_ora.exe /XML ファイル=sample6.xml /KEYSQL=("SELECT 受注 NO,取引名 FROM 受注基本") /SQL
表示=y /DIALOG=y /SHOW=n /log=sample6.log /囲み=y
③置換文字列を CSV(ヘッダー付)から指定する方法(レコード分連続実行します)
SQLS_ORA.exe /XML ファイル=<SQL 情報.xml>
[/INIF=<実行環境設定ファイル名>]
[/KEYCSV=CSV ファイル名]
[/SQL 表示={Y|N}] [/dialog={Y|N}] [/区切文字=X] [囲み={Y|N}] [show={Y|N}] [/log=<ログ
ファイル名>]
(例)
SQLS_ora.exe /XML ファイル=sample5.xml /KEYCSV=sample5param.csv /SQL 表示=y /DIALOG=y /SHOW=n
/log=sample5.log /囲み=y
3.4
戻り値
SQLS は以下の内容で戻り値を返します。スクリプト実行などで、判定に利用す
る場合に使用できます。
例えば、異常時には、後続処理を実行しないなどの場合に利用します。
戻り値
0 : 正常終了
1 : (現在、利用していません)
2 : SQL がエラー時無視で異常終了した(警告終了)
8 : 動作定義 XML ファイルが存在しない(異常終了)
9 : SQL が異常終了した(異常終了)
その他、動作定義 XML ファイル内で任意の戻り値を指定することが可能です。
Copyright(c) Since 2009 (株)オンネット・システムズ All rights reserved.
13
4
動作定義 XML 記述方法
4.1
サンプルフロー
以降、例題を元にご説明します。
START
01:未出力伝票の
カウント
No
再発行日
の付与?
請求書
Cancel
Yes
02:再発行日付の
付与
03:CSV 出力
請求書.csv
04:出力日付の付
与
99:END
(注)
<SQLNO>の 99 は、最後のステップという特別な意味を持っています。
4.2
記述例(XML の仕様で記述します)
(起動コマンド例)
SQLS_ora.exe /XML ファイル=sample3.xml /KEY 情報=(追加条件=取引先, CD=’00000001’) /SQL 表示=y /DIALOG=y
/SHOW=n /log=sample3.log /囲み=y
(動作定義 XML)
<?xml version="1.0" encoding="Shift_JIS" ?>
<SQL 情報リスト>
<!-- ================================================================= -->
<!-- ==========未出力伝票のチェック===================================== -->
Copyright(c) Since 2009 (株)オンネット・システムズ All rights reserved.
14
<!-- ================================================================= -->
<SQL 情報>
<SQLNO>01</SQLNO>
<SQL タイトル>未出力請求 NO の存在チェック</SQL タイトル>
<SQL 種別>SELECT</SQL 種別>
<SQL>
SELECT count(*) 件数
from 請求書
KEY 情報として外部から与えて
where 出力日 is NULL
います
and ( $$追加条件$$ )
</SQL>
<エラー時無視>N</エラー時無視>
<実行後コミット>N</実行後コミット>
<SQL 条件分岐>
<条件検査順>1</条件検査順>
01 ステップの結果を利用して
<条件タイトル>未出力の請求データが存在するか?</条件タイトル>
Yes,No,Cancel のダイアログ表
<条件>$$件数$$!=0</条件>
います
示をしています
<メッセージタイプ>YesNoCancel</メッセージタイプ>
<メッセージ>未出力の帳票が存在します。再発行日付をセットしますか?</メッセージ>
<Yes 選択次 SQLNO>02</Yes 選択次 SQLNO>
<No 選択次 SQLNO>03</No 選択次 SQLNO>
<Cancel 選択次 SQLNO>99,4,処理を中断しました。</Cancel 選択次 SQLNO>
<DialogN 次 SQLNO>02</DialogN 次 SQLNO>
</SQL 条件分岐>
<SQL 条件分岐>
<条件検査順>2</条件検査順>
条件分岐は複数記述できま
す。
<条件タイトル>未出力の帳票が存在するか2?</条件タイトル>
<条件>$$件数$$=0</条件>
<メッセージタイプ>None</メッセージタイプ>
<DialogN 次 SQLNO>99,5,未出力伝票が存在しません。</DialogN 次 SQLNO>
</SQL 条件分岐>
<次 SQLNO>02</次 SQLNO>
</SQL 情報>
<!-- ================================================================= -->
<!-- ==========再発行日付のセット ===================================== -->
<!-- ================================================================= -->
<SQL 情報>
<SQLNO>02</SQLNO>
<SQL タイトル>再発行日付のセット</SQL タイトル>
<SQL 種別>UPDATE</SQL 種別>
$$TODAY$$ は 、標 準定 義 キ ー で
<SQL>
UPDATE 請求書 K SET
す
再発行日付= $$TODAY$$
Copyright(c) Since 2009 (株)オンネット・システムズ All rights reserved.
15
where 出力日 is NULL
and ( $$追加条件$$ )
</SQL>
<エラー時無視>N</エラー時無視>
SQL の条件記述を外部
パラメータから与えてい
ます。
<実行後コミット>Y</実行後コミット>
<次 SQLNO>03</次 SQLNO>
</SQL 情報>
<!-- ================================================================= -->
<!-- ========== CSV 出力 ============================================= -->
<!-- ================================================================= -->
<SQL 情報>
<SQLNO>03</SQLNO>
<SQL タイトル>CSV 出力(請求書)</SQL タイトル>
<SQL 種別>SELECT</SQL 種別>
<SQL>
SELECT "請求書 NO","行 NO","売上 YYYYMMDD","得意先 CD","得意先名"
,"商品 CD","商品名","単価","個数",$$TODAY_TIME$$
FROM 請求書
where 出力日 is null
and ( $$追加条件$$ )
ORDER BY
"請求書 NO","行 NO"
</SQL>
<SQL 実行結果表示>WithHeaderFILE</SQL 実行結果表示>
<SQL 実行結果 FILE>$$CSVPath$$請求書_$$TODAY_TIME$$.csv</SQL 実行結果 FILE>
<エラー時無視>N</エラー時無視>
<実行後コミット>N</実行後コミット>
結 果 の CSV 出 力 。
<次 SQLNO>04,0,正常に終了しました。</次 SQLNO>
$$CSVPath$$は、INI ファイルで予
</SQL 情報>
め与えておきます。
<!-- ================================================================= -->
<!-- =========出力日付のセット ======================================== -->
<!-- ================================================================= -->
<SQL 情報>
<SQLNO>04</SQLNO>
<SQL タイトル>出力日のセット</SQL タイトル>
<SQL 種別>UPDATE</SQL 種別>
<SQL>
UPDATE 請求書 K SET
出力日=$$TODAY$$
</SQL>
<エラー時無視>N</エラー時無視>
<実行後コミット>N</実行後コミット>
<次 SQLNO>99,0,正常に終了しました。</次 SQLNO>
</SQL 情報>
Copyright(c) Since 2009 (株)オンネット・システムズ All rights reserved.
16
</SQL 情報リスト>
4.3
動作定義 XML ファイルに記述するタグ説明(通常)
説明
SQL 情報
SQLNO
SQL ブロック全体で一意となる、SQL への ID
次 SQLNO や分岐の際に特定する ID
連番でなくてもよいが、昇順に付けるのが分かり易いと思い
ます。10 刻みくらいで付番しておけば、機能追加時などで
SQL ブロックの追加を生じた場合などに、間に挿入できるの
で便利です。
SQL タイトル
SQL の内容を表すタイトル、ログに表示される
SQL 種別
発行 SQL の種別(ログ出力時のメモ程度)
Insert, Update, Delete, Analyze 等任意の文字を記述でき
ます。
SQL
発行 SQL 文中に「$$」で囲まれた変数を含む
起動時(優先)若しくは System.ini で置換文字列を与える
SQL 実行結果
SQL が Select 文の時に、実行結果をログに表示するかどう
表示
かを指定する
次のいずれかを指定、指定は無い場合は「None」
・ 「WithHeader」:項目名付きで SQL 実行結果をログに
出力する、項目間は、指定された区切文字で区切る
・ 「NoHeader」:項目名無しで SQL 実行結果をログに出
力する、項目間は、指定された区切文字で区切る
・ 「WithHeaderFile」:結果を CSV に出力する。指定の
場合は、SQL 実行結果 FILE を指定すること
・ 「NoHeaderFile」:結果を項目名無しで CSV に出力す
る。指定の場合は、SQL 実行結果 FILE を指定するこ
と
「None」:SQL 実行結果をログに出力しない
SQL 実 行 結 果
出力する CSV ファイル名をフルパスで指定する。ファイル名
FILE
は、$$CSVPath$$請求書_$$TODAY_TIME$$.csv の様に
置換文字列で動的に変換できます。
エラー時無視
次のいずれかを指定、指定は無い場合は「N」
・ 「Y」:SQL 実行時のエラーを無視する
Copyright(c) Since 2009 (株)オンネット・システムズ All rights reserved.
17
・ 「N」:SQL 実行時にエラーがあった場合、エラー分岐
にあてはまるエラー条件があれば実行を移す、無け
ればプログラムを中断する
実行後コミット
次のいずれかを指定、指定は無い場合は「N」
・ 「Y」:SQL 実行後、コミットを発行する
・ 「N」:なにも行わない(トランザクションを継続する)
次 SQLNO
次に実行する SQLNO を指定、ただし、99,<終了コード>,<終
了メッセージ>が指定された場合は、次実行が無し、メッセー
ジ内容をログに出力し、指定された戻り値でプログラムを終
了する
条件分岐が指定されていた場合は、条件分岐の判定を行
い、最終的になにもあてはまらなかった場合の実行先とな
る
4.4
動作定義 XML ファイルに記述するタグ説明(条件分岐)
前項の通常タグに加えて、SQLS では条件分岐を備えています。条件分岐に
は、SQL 条件分岐とエラー分岐の2通りがあります。両分岐とも、複数の条
件を記述できます。また、それらは、条件検査順によって検査順序を指定で
きます。
条件分岐の場合
SQL 条件分岐
説明
条件検査順
条件検査する順序、昇順に検査を行う
条件タイトル
条件(チェック)の内容を表すタイトル、ログに表示される
条件
SQL 文の SELECT リストを使用した条件文、又は、実行件
数を表す変数「$$処理件数$$」を用いた条件文
条件文が、真になった場合、/Dialog パラメータ、メッセージ
タイプに従いメッセージを出力し、応答に従って分岐を行う
・ 条件文が、真になった場合、メッセージを出力しない
場合は、DialogN 次 SQLNO を使用する、これ以上の
同 SQLNO の条件検査は行わない
・ 条件文が、偽になった場合、次の条件検査へ進む
・ 同 SQLNO 内の条件検査が全て偽であった場合は、
Copyright(c) Since 2009 (株)オンネット・システムズ All rights reserved.
18
SQL 情報内の次 SQLNO が次の実行先となる
メッセージタイプ
メッセージボックスの種類
次のいずれかを指定、指定は無い場合は「None」
・ 「OK」:「はい」ボタン1つのメッセージボックス
・ 「YesNo」:「はい」「いいえ」ボタン2つのメッセージボ
ックス
・ 「YesNoCancel」:「はい」「いいえ」「中断」ボタン3つ
のメッセージボックス
・ 「None」:メッセージボックスは出力しない(条件真の
場合の行き先だけ決定する)
メッセージ
メッセージボックス内に表示する、メッセージ文。メッセージ
は SELECT リストの項目名で置換可能です。$$変数名
$$で指定します。
Yes
選 択 次
SQLNO
SQLNO を指定、ただし、99,<終了コード>,<終了メッセージ>
が指定された場合は、次実行が無し、メッセージ内容をロ
グに出力し、指定された戻り値でプログラムを終了する
No 選択次 SQLNO
SQLNO を指定、ただし、99,<終了コード>,<終了メッセージ>
が指定された場合は、次実行が無し、メッセージ内容をロ
グに出力し、指定された戻り値でプログラムを終了する
Cancel 選 択 次 SQLNO を指定、ただし、99,<終了コード>,<終了メッセージ>
SQLNO
が指定された場合は、次実行が無し、メッセージ内容をロ
グに出力し、指定された戻り値でプログラムを終了する
DialogN 次 SQLNO
SQLNO を指定、ただし、99,<終了コード>,<終了メッセージ>
が指定された場合は、次実行が無し、メッセージ内容をロ
グに出力し、指定された戻り値でプログラムを終了する
メッセージボックスを出力しないで実行する場合(/Dialog=N
または、メッセージタイプ None)の、次 SQLNO
●エラー分岐の場合
エラー分岐とは、SQL の実行によって DBMS から出力されるエラーコードによって出
力される戻り値によって分岐するものです。下の例では、ORA-00054 により、他ユー
ザの利用を検出しています。まず、記述方法を確認ください。
エラーコードは、DB のマニュアルなどで確認してください。
Copyright(c) Since 2009 (株)オンネット・システムズ All rights reserved.
19
(エラー分岐サンプル)
<エラー分岐>
<条件検査順>1</条件検査順>
<条件タイトル>支払通知書テーブル使用中か?</条件タイトル>
<条件>ORA-00054</条件>
<メッセージタイプ>OK</メッセージタイプ>
<メッセージ>他の方が使用中です。</メッセージ>
<Yes 選択次 SQLNO>99,2,ロック失敗により処理を中断しました。</Yes 選択次 SQLNO>
</エラー分岐>
エラー分岐タグ(動作定義 XML)の説明
説明
エラー分岐
条件検査順
条件検査する順序、昇順に検査を行う
条件タイトル
条件(チェック)の内容を表すタイトル、ログに表示される
条件
エ ラ ー 分 岐 は DBMS か ら の エ ラ ー 分 岐 の み で
「ORA-XXXXX」と指定する。
条件文が、真になった場合、/Dialog パラメータ、メッセージ
タイプに従いメッセージを出力し、応答に従って分岐を行う
・ 条件文が、真になった場合、メッセージを出力しない
場合は、DialogN 次 SQLNO を使用する、これ以上の
同 SQLNO の条件検査は行わない
・ 条件文が、偽になった場合、次の条件検査へ進む
・ 同 SQLNO 内の条件検査が全て偽であった場合は、
プログラムを終了する(Exit9)
メッセージタイプ
メッセージボックスの種類
次のいずれかを指定、指定は無い場合は「None」
・ 「OK」:「はい」ボタン1つのメッセージボックス
・ 「YesNo」:「はい」「いいえ」ボタン2つのメッセージボ
ックス
・ 「YesNoCancel」:「はい」「いいえ」「中断」ボタン3つ
のメッセージボックス
・ 「None」:メッセージボックスは出力しない(条件真の
場合の行き先だけ決定する)
Copyright(c) Since 2009 (株)オンネット・システムズ All rights reserved.
20
メッセージ
メッセージボックス内に表示する、メッセージ文。メッセージ
は SELECT リストの項目名で置換可能です。$$変数名
$$で指定します。
Yes
選 択 次
SQLNO
SQLNO を指定、ただし、99,<終了コード>,<終了メッセージ>
が指定された場合は、次実行が無し、メッセージ内容をロ
グに出力し、指定された戻り値でプログラムを終了する
No 選択次 SQLNO
SQLNO を指定、ただし、99,<終了コード>,<終了メッセージ>
が指定された場合は、次実行が無し、メッセージ内容をロ
グに出力し、指定された戻り値でプログラムを終了する
Cancel 選 択 次 SQLNO を指定、ただし、99,<終了コード>,<終了メッセージ>
SQLNO
が指定された場合は、次実行が無し、メッセージ内容をロ
グに出力し、指定された戻り値でプログラムを終了する
DialogN 次 SQLNO
SQLNO を指定、ただし、99,<終了コード>,<終了メッセージ>
が指定された場合は、次実行が無し、メッセージ内容をロ
グに出力し、指定された戻り値でプログラムを終了する
メッセージボックスを出力しないで実行する場合(/Dialog=N
または、メッセージタイプ None)の、次 SQLNO
Copyright(c) Since 2009 (株)オンネット・システムズ All rights reserved.
21
5
SQL の実行制御の実際
の実行制御の実際
5.1
置換文字列の解釈
動作定義 XML 内の SQL コマンドを読み、’$$’で囲まれた変数を含んでいる為、これを
標準定義キー(予約キー)または、パラメータで KEY 情報で指定されたキー値(置換文字
列)で置き換える。標準定義キーと同じ名前がパラメータキーとして指定された場合、パ
ラメータキーを優先としています。
置換文字列は、起動コマンドの引数、system.ini から与えられます。
置換処理の優先順位は、起動パラメータの KEY 情報(コマンド引数)>system.ini>
標準定義キーとなります。
前述のとおり、コマンド引数には、①コマンドラインで与える、②CSV ファイルで与え
る、③DB(テーブル)で与える3通りがあります。
$$TODAY$$
プログラム起動時の CPU 日付(数値8桁)
(標準定義)
【例】『20041208』
$$TODAY_TIME$$
プログラム起動時の CPU 日付及び 24 時表記時刻(数
(標準定義)
値8桁_数値6桁)
【例】『20041208_170000』
KEY 情報パラメータ
KEY 情報パラメータ
各左辺(KEYn)
各右辺(XXXX)
*キー文字列は任意
【例】『/KEY 情報=(会計年月=200411,日付=30,置場
CD=1001)
$$会計年月$$ 200411
$$日付$$ 30
$$置場 CD $$ 1001』
SQL 例
【動作定義 XML SQL コマンド】
delete KA 管理会計
where 会計年月=$$
$$処理年
$$処理年月
処理年月$$
【編集後 SQL】
delete KA 管理会計
where 会計年月’
’200601’
200601’
Copyright(c) Since 2009 (株)オンネット・システムズ All rights reserved.
22
5.2
SQL の実行
動作定義 XML の SQL 情報を順次取り出し、編集した SQL を順次実行します。
SQL 実行時の、エラー、トランザクション処理は、各エラー時無視指定、実行後コミット指
定に従います。
エラー時無視が、Y 指定の場合、エラーの内容、エラーを無視した旨をログに記述し、次
処理を行います。
実行後コミットが、Y 指定の場合、編集 SQL 実行の後に、Commit 発行します。
SQL 条件分岐の指定がない SQL 情報の場合、SQL 情報内の次 SQLNO を次に実行す
る SQLNO とし必ず指定する必要があります。分岐の場合は、条件による分岐先として
SQLNO を記述します。
エラー時無視が Y 指定でエラーが起きた後の条件分岐は、判定を行わずに、SQL 情報
内の次 SQLNO を次に実行する SQLNO とします。
次 SQLNO が「99」以外の場合、同様に SQL 実行処理を行い、次 SQLNO が「99」まで繰
り返します。SQLNO「99」は、最後という意味を表しています。
show=y の場合、SQL の実行、判定処理は行わず、SQLNO 順にログへ全 SQL 文の出力
のみ行う。機能の目的は、置換文字列の解釈を確認するためです。
5.3
SQL 条件分岐処理
SQL 条件分岐の条件が、SELECT リストで取り出した項目の内容で、真か偽かを条件検
査順に判定します。
また、UPDEATE、DALETE 文などでは、処理件数($$処理件数$$)を条件分岐判定に使用
することが可能です。
1つの条件判定で真だった場合、指定メッセージタイプのメッセージボックスを、指定メッ
セージで表示します。
表示されたメッセージボックスのボタンは以下の通りです。
「はい」応答時、Yes 選択次 SQLNO に指定された SQLNO を次 SQLNO とする。
「いいえ」応答時、No 選択次 SQLNO に指定された SQLNO を次 SQLNO とする。
「中断」応答時、Cancel 選択次 SQLNO に指定された SQLNO を次 SQLNO とする。
起動パラメータで/dialog=N が指定された場合は、メッセージボックスを出力せず、
DialogN 次 SQLNO に指定された SQLNO を次 SQLNO とすします。
Copyright(c) Since 2009 (株)オンネット・システムズ All rights reserved.
23
動作定義 XML 内でメッセージ出力が指定されていても起動パラメータで/dialog=N で指定
されると、こちらが優先されることを注意してください。
SELECT リストの同一項目がすべて(注)偽だった場合、次の SQL 条件分岐で判定を行
います。
すべての SQL 条件分岐で偽だった場合、SQL 情報内の次 SQLNO を次 SQLNO としま
す。
エラー時無視 Y 以外での SQL エラー発生時、エラーの内容をログに記述、エラー分岐が
指定されていれば、下記エラー分岐処理により、次 SQLNO を求めます。エラー分岐の指
定が無い場合、本プログラムを終了します。(EXIT:9)
(注)SELECT リストの同一項目がすべての意味
条件分岐の判定レコードは SELECT 文などで抽出されます。その際、条件によって
は、ひとつの項目値が複数得られる場合があります。
ひとつの条件判定は、その複数の値からひとつずつ取り出しで判定処理します。
5.4
エラー分岐処理(DBMS からのエラーのみ判定する)
エラー分岐の条件が、取り出したレコードの内容で、真か偽かを条件検査順に判定しま
す。条件は、<条件>ORA-00054</条件>の様に記述します。
1つの条件判定で真だった場合、指定メッセージタイプのメッセージボックスを、指定メッ
セージで出力します。
「はい」応答時、Yes 選択次 SQLNO に指定された SQLNO を次に実行する SQLNO とし
ます。
「いいえ」応答時、No 選択次 SQLNO に指定された SQLNO を次に実行する SQLNO とし
ます。
「中断」応答時、Cancel 選択次 SQLNO に指定された SQLNO を次に実行する SQLNO と
します。
パラメータで/dialog=N が指定された場合は、メッセージボックスを出力せず、DialogN 次
SQLNO に指定された SQLNO を次に実行する SQLNO とします。
判定が偽だった場合、次の SQL 条件分岐で判定を行います。
すべてのエラー分岐で偽だった場合、本プログラムを終了します。(Exit 9)
5.5
次 SQLNO「99」の扱い
Copyright(c) Since 2009 (株)オンネット・システムズ All rights reserved.
24
1連の SQL 実行を ROLLBACK で終了、ログに終了メッセージ、及び終了コードを出力す
る。終了コード省略時は「0」とする。
Copyright(c) Since 2009 (株)オンネット・システムズ All rights reserved.
25
6
ログ出力
6.1 出力例
LOG ファイルは追加モードで出力します。動作定義 XML ファイルの記述が間違っている
場合などでも重要な情報が出力されますので、必ず確認する様にしてください。
出力例を示します。KEY 情報を外部の CSV から与えていますので、その内容により、3
回実行されています。
(出力例)
***** SQLS_ora [Ver1.0] 開始 2009/06/27(土) 16:11:26 *****
指定パラメータ : /XML ファイル=sample5.xml /KEYCSV=sample5param.csv /SQL 表
示=y /DIALOG=y /SHOW=n /log=sample5.log /囲み=y
Trial モードで実行します
■/KEY 情報=(NO=00000001,CSV-FNAME=sample5_1.csv)
■ フ ァ イ ル 名 : D:\USER\ 開 発 環 境 \O_ オ ン ネ ッ ト ・ シ ス テ ム ズ
\SQLS_ora\SQLS_ora_1_0\SQLS_oraSample\sample5.xml
01:売上伝票の件数を確認 SELECT
SELECT count(*) 件数
from 売上伝票基本
where 売上伝票 NO = '00000001'
1 件
件数:1
処理件数:1
条件:対象データが存在するか否か? 結果:偽
条件:処理続行通知 結果:真
メッセージ(OK):対象データが 1 件以上存在しますので続行します
応答:Yes
02:売上合計のログ表示 SELECT
SELECT s.売上伝票 NO,s.物件名,sum(d.売上額) as 売上合計,
sum(d.売上消費税額) as 消費税合計,sum(d.売上合価)
as 総合計
FROM 売上伝票基本 s,売上伝票明細 d
where s.売上伝票 NO=d.売上伝票 NO
and s.売上伝票 NO = '00000001'
group by s.売上伝票 NO,s.物件名
1 件
終了しました
終了コード:0
■/KEY 情報=(NO=00000002,CSV-FNAME=sample5_2.csv)
■ フ ァ イ ル 名 : D:\USER\ 開 発 環 境 \O_ オ ン ネ ッ ト ・ シ ス テ ム ズ
\SQLS_ora\SQLS_ora_1_0\SQLS_oraSample\sample5.xml
01:売上伝票の件数を確認 SELECT
Copyright(c) Since 2009 (株)オンネット・システムズ All rights reserved.
26
SELECT count(*) 件数
from 売上伝票基本
where 売上伝票 NO = '00000002'
1 件
件数:1
処理件数:1
条件:対象データが存在するか否か? 結果:偽
条件:処理続行通知 結果:真
メッセージ(OK):対象データが 1 件以上存在しますので続行します
応答:Yes
02:売上合計のログ表示 SELECT
SELECT s.売上伝票 NO,s.物件名,sum(d.売上額) as 売上合計,
sum(d.売上消費税額) as 消費税合計,sum(d.売上合価)
as 総合計
FROM 売上伝票基本 s,売上伝票明細 d
where s.売上伝票 NO=d.売上伝票 NO
and s.売上伝票 NO = '00000002'
group by s.売上伝票 NO,s.物件名
1 件
終了しました
終了コード:0
■/KEY 情報=(NO=00000003,CSV-FNAME=sample5_3.csv)
■ フ ァ イ ル 名 : D:\USER\ 開 発 環 境 \O_ オ ン ネ ッ ト ・ シ ス テ ム ズ
\SQLS_ora\SQLS_ora_1_0\SQLS_oraSample\sample5.xml
01:売上伝票の件数を確認 SELECT
SELECT count(*) 件数
from 売上伝票基本
where 売上伝票 NO = '00000003'
1 件
件数:1
処理件数:1
条件:対象データが存在するか否か? 結果:偽
条件:処理続行通知 結果:真
メッセージ(OK):対象データが 1 件以上存在しますので続行します
応答:Yes
02:売上合計のログ表示 SELECT
SELECT s.売上伝票 NO,s.物件名,sum(d.売上額) as 売上合計,
sum(d.売上消費税額) as 消費税合計,sum(d.売上合価)
as 総合計
FROM 売上伝票基本 s,売上伝票明細 d
where s.売上伝票 NO=d.売上伝票 NO
and s.売上伝票 NO = '00000003'
group by s.売上伝票 NO,s.物件名
1 件
Trial モードの場合ステップ数が 3
以内の制限があります
終了しました
Trial モードの最大実行ステップ数に達したので処理を中断します。
終了コード:0
プログラム終了コード:0
Copyright(c) Since 2009 (株)オンネット・システムズ All rights reserved.
27
***** SQLS_ora [Ver1.0] 終了 2009/06/27(土) 16:11:31 *****
Copyright(c) Since 2009 (株)オンネット・システムズ All rights reserved.
28
お問い合わせ先:
お問い合わせは、ご連絡内容を確実にするためにメール、FAX
で願います。
株式会社オンネット・システムズ
110-0016 東京都台東区台東 1-14-7 B ビレッジ 6F
URL :http://www.onnet.ne.jp
FAX : 03-5807-5082
Mail :
[email protected]
Copyright(c) Since 2009 (株)オンネット・システムズ All rights reserved.
29