0

私はちょうど新しい仕事を始めて、地獄からプロジェクトを継承しました。地獄={2年のスケジュール超過、過度に複雑、OracleサーバーとSQLサーバーの両方を使用}

Oracleサーバーには100以上のストアドプロシージャがあり、それぞれにIBatisSQLマップがあります。同じ結果マップを共有するものもあります。DBAは、店舗の手続きを毎日変更するのが好きで、教えてくれません。

質問:ソリューション内のすべてのIBatisSQLマップを調べることができるツールはありますか?理想的には、次のことを確認します。

  1. ストアドプロシージャが存在します
  2. ストアドプロシージャのパラメータは、パラメータマップのパラメータと一致します
  3. ストアドプロシージャの結果[列名]は、結果マップの結果と一致します
  4. ストアドプロシージャの結果には、結果マップで指定されたものが欠落していません
  5. 結果マップのオブジェクトプロパティのタイトルは、結果マップにリストされているものと一致します

背景:私は通常、SQLServerとSubSonic2.2だけをORMとして使用しています。このようにコマンドを実行するだけで、DALが魔法のように自動生成されます。このようにして、必要な列が欠落している場合でも、わかりやすいコンパイル時エラーが発生し、混乱を招く実行時エラーは発生しません。ここで使用できる同様のツールはありますか?

ご協力いただきありがとうございます!

4

2 に答える 2

1

Ibatorというツールがありますが、あなたが説明していることを意図したものではないと思います。私のアプローチは、iBatis コードを実行するテストを作成することです。そうすれば、テストが失敗したときに、何かがおかしいことがわかります。他にできることは、Oracle のメタデータを使用して、プロシージャの存在などをテストすることです。これらのチェックは、追加のテストになる可能性があります。

于 2009-11-24T18:31:30.853 に答える
0

Oracle に触れてからしばらく経ちましたが、記憶が正しければ、ストアド プロシージャの出力 (たとえば、select から) はどこにも宣言されていません。したがって、ツールによるリバース エンジニアリングが可能である必要があります。LinqToSql は、SQL Server に対してこれを試み、部分的に成功していますが、一般的には困難で信頼性の低いプロセスです。したがって、リストの項目 3 ~ 5 は、コード生成/ツールではほとんど達成できないように思われます。SubSonic 2.2 のストアド プロシージャのサポートについてはあまり深く掘り下げていませんが、項目 3 ~ 5 についても同様に苦労すると思います。対照的に、ストアド プロシージャの一部として宣言された単一の出力フィールドは、かなり簡単に処理できます。

項目 1 と 2 ははるかに実現可能ですが、iBatis で利用できるツールについては詳しくありません。申し訳ありません。ただし、iBatis や Oracle が実際にあなたの問題と関係があるとは思いません。

最善の策は、DBA にもっと役立つよう説得するか、積極的に差分を実行してストアド プロシージャの変更を検出し、手動で対処することです。

于 2009-11-24T18:44:19.877 に答える