Symfoware/SQLTOOLでは、データベース操作のためのSQL文をrdbexecsqlコマンドで実行できます。
SQL文の設計時に、このコマンドを使ってSQL文を1行ずつ実行することにより、SQL文の実行検証を行うことができます。これにより、アプリケーション開発時にSQL文の記述を何度も修正し、そのたびにコンパイル、リンク、実行を繰り返す必要がなくなり、効率的なアプリケーション開発を支援します。
以下に、rdbexecsqlコマンドを利用したSQL文の実行検証例を示します。
格納されているデータ数について調べ、対話的に結果を確認する
$ rdbexecsql -s USER_DB -mo SQL>SELECT COUNT(*) FROM SCM1.TBL1 1 ---- 100 Number of records:1
格納されているデータの内容をファイル(/tmp/out_data)に出力する(1)
$ rdbexecsql -s USER_DB -o /tmp/out_data -mo SQL>PRINT OFF SQL>SELECT * FROM SCM1.TBL1 Number of records:3
[ファイル(/tmp/out_data)の出力結果]
SELECT * FROM SCM1.TBL1 INT_D SMALLINT_D CHAR_D ----- ---------- ---------- 1 1 あいうえお 2 1 あいうえお 3 1 あいうえお Number of records:3
格納されているデータの内容をファイル(/tmp/out_data)に出力する(2)
$ rdbexecsql -s USER_DB -mo SQL>PRINT OFF SQL>LOG ON /tmp/out_data SQL>SELECT * FROM SCM1.TBL1 Number of records:3 SQL>LOG OFF
[ファイル(/tmp/out_data)の出力結果]
SELECT * FROM SCM1.TBL1 INT_D SMALLINT_D CHAR_D ----- ---------- ---------- 1 1 あいうえお 2 1 あいうえお 3 1 あいうえお Number of records:3
出力するデータの長さを指定する
CHARデータ、NCHARデータおよびBLOBデータの出力データ長を変更して出力します。(CHAR/VCHAR,NCHAR/NVCHARは先頭より10バイト、BLOBは先頭より64バイト)
$ rdbexecsql -s USER_DB -o /tmp/out_data -mo SQL>PRINT OFF SQL>COLUMN FORMAT CHARMAX 10 SQL>COLUMN FORMAT NCHARMAX 10 SQL>COLUMN FORMAT BLOBMAX 64 SQL>SELECT * FROM SCM1.TBL1 Number of records:1
[ファイル(/tmp/out_data)の出力結果]
SELECT * FROM SCM1.TBL1 INT_D SMALLINT_D CHAR_D BLOB_D ----- ---------- ---------- --------------------------------------------------・・・ 1 1 あいうえお 41414141414141414141414141414141414141414141414141・・・ Number of records:1
作成したSQL文の動作確認を行った後に実行履歴表示機能を利用して性能情報を取得する
SQL性能情報出力例の詳細については、“4.3.6 SQL性能情報の出力形式”を参照してください。
$ rdbexecsql -mo SQL>PRINT OFF SQL>SELECT * FROM SCM1.TBL1 Number of records:20 SQL>SQL TRACE ON /home/rdb2/trace.log SQL>!SEL SELECT * FROM SCM1.TBL1 Number of records:20
作成したSQL文の実行を行う(ファイル入力)
$ rdbexecsql -mo SQL>INFILE /tmp/sqlfile.txt SQL>DELETE FROM SCM1.TBL1 WHERE INT_D = 1 EXECUTE?(y|n|q)=>y Number of records:20 SQL>SELECT * FROM SCM1.TBL1 EXECUTE?(y|n|q)=>q SQL>
出力結果行を5行とし、実行結果を表形式で出力する
$ rdbexecsql -mo SQL>PRINT RECORDMAX 5 SQL>SELECT INT_D FROM SCM1.TBL1 INT_D ------ 100 200 300 400 500 Number of records:20