SQLer 生島勘富 のブログ

RDB・SQLの話題を中心に情報発信をしています。

スタブ用のエクセルを販売します

 ビジネスロジックはストアドプロシージャに入れるべきと書いてきましたが、現在のバージョンでもOracleのストアドプロシージャ(ファンクション)は非常に書きにくいです。

 SELECT系のストアドプロシージャ(ファンクション)の書きやすさは

    SQLServerr > DB2PostgreSQLOracle

となります。

 いずれにしても、私の考える開発を行うにはスタブを作るのは必須です。これはエクセルのマクロで作れるのですが、弊社で使用しているマクロを販売することにしました。

図2 スタブ用エクセルマクロ

図2のように
    1.パラメータと戻り値の型と名前を入れる。
    2.ダミーデータを設定する。
    3.更新用のシートにパラメータと戻り値の型と名前を入れる。
    4.接続情報を設定シートに入力する。
    5.出力ボタンをクリックする。

とごく簡単な操作で、以下のようなスクリプトが出力されます。ダミーデータはスクリプトファイルにしないで、ADO経由で直接書き換えることも可能です。

    
    Oracle.zip 直
    SQLServer.zip 直


 現在、使用許諾書、並びに、ログの出力を含めるか検討中です。

 「ログの出力を含めるか」を検討中というのは、データベースに対するアクセスをストアドプロシージャ(ファンクション)に一元化することにより、もう一つ、大きなメリットがあるためです。

 それは、「完璧な監査証跡」が取れるということです。

 例えば、SELECT系のストアドプロシージャ(ファンクション)の呼び出しは以下のようになりますが、

 Oracle
    SELECT * FROM TABLE(ファンクション(?, ?, ?, ?))

 SQLServer
    EXEC プロシージャ ?, ?, ?, ?

これを、以下のようにバインド変数をリテラルへの変換を行った後、ログテーブルに保存します。

 Oracle
    SELECT * FROM TABLE(ファンクション(
        NULL, TO_DATE('20100608','YYYYMMDD'), NULL, NULL))

 SQLServer
    EXEC プロシージャ NULL, CONVERT(DATETIME, '20100608', 112), NULL, NULL

 このログは監査証跡だけではなく、ユーザインターフェース側がどんなテストを行ったか再現することも可能になりますし(テストファーストとは言い難いけれど)、トラブルの解析にも非常に役に立ちます。

 ただ、ログである以上、セッションIDやユーザID、IPアドレスなども必要になるでしょう。それをどんな形のテーブルに保存するか、パラメータ名なども会社毎にポリシーがあるし、ログテーブルの構造も私が決めるわけにはいきません。

 そのため、含めたとしてもサンプルとしてしか使えません。とにかく、少し検討いたしております。

販売価格について

 ソース公開で会社単位へのライセンスとなります。

 参考価格はすべて税込みで

 Oracle
    105,000円
 SQLServer
    105,000円
 DB2版(要望があれば)
    105,000円
 PostgreSQL版(要望があれば)
    105,000円

 2本パック
    157,500円
 3本パック
    210,000円    
 4本パック
    262,500円

 となります。

 数百人以上の会社を想定しているので、中小企業の方はメールにてご相談ください。
 個人で勉強したいという方には95%引きで販売いたします。こちらもメールにてご相談ください。

 info@g1sys.co.jp