ページの先頭行へ戻る
Symfoware Server V12.10.0 SQLTOOLユーザーズガイド

3.2 データベースを操作する

Symfoware/SQLTOOLでは、データベース操作のためのSQL文をrdbexecsqlコマンドで実行できます。

SQL文の設計時に、このコマンドを使ってSQL文を1行ずつ実行することにより、SQL文の実行検証を行うことができます。これにより、アプリケーション開発時にSQL文の記述を何度も修正し、そのたびにコンパイル、リンク、実行を繰り返す必要がなくなり、効率的なアプリケーション開発を支援します。

以下に、rdbexecsqlコマンドを利用したSQL文の実行検証例を示します。

格納されているデータの確認を行う

例1

格納されているデータ数について調べ、対話的に結果を確認する

$ rdbexecsql -s USER_DB -mo
SQL>SELECT COUNT(*) FROM SCM1.TBL1 
  1
---- 
100 
Number of records:1
例2

格納されているデータの内容をファイル(/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
例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
例4

出力するデータの長さを指定する

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文の動作確認を行う

例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
例2

作成した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>

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