0

我刚刚开始了一份新工作,并从地狱继承了这个项目。地狱 = {超过计划 2 年,过于复杂,同时使用 oracle 和 sql server}

Oracle 服务器中有 100 多个存储过程,每个存储过程都有一个 IBatis SQL Map。有些共享相同的结果图。DBA 喜欢每天更改存储过程而不告诉我。

问题:是否有任何工具可以检查解决方案中的所有 IBatis SQL 映射。理想情况下,它将验证:

  1. 存储过程存在
  2. 存储过程参数与参数映射中的参数匹配
  3. 存储过程结果 [列名] 与结果映射中的匹配
  4. 存储过程结果没有丢失结果映射中指定的任何内容
  5. 结果映射中的对象属性标题与结果映射中列出的匹配

背景:我通常只使用 SQL Server 和 SubSonic 2.2 作为 ORM。这样我只需执行一个命令,我的 DAL 就会神奇地自动生成,这样,如果我需要的列丢失,我会得到一个易于理解的编译时错误,而不是令人困惑的运行时错误。我可以在这里使用类似的工具吗?

感谢您的帮助!

4

2 回答 2

1

有一个名为Ibator的工具,但我认为它不适合您所描述的内容。我的方法是创建运行 iBatis 代码的测试。这样,当测试失败时,您就知道出了点问题。您可以做的其他事情是使用Oracle 的元数据来测试过程的存在等。这些检查可能是额外的测试。

于 2009-11-24T18:31:30.853 回答
0

自从我接触 Oracle 以来已经有一段时间了,但如果我没记错的话,存储过程的输出(例如,来自一个选择)没有在任何地方声明。因此,它需要通过工具进行逆向工程。LinqToSql 尝试为 SQL Server 执行此操作并取得部分成功,但这通常是一个困难且不可靠的过程。因此,这似乎使您列表中的第 3-5 项几乎无法通过代码生成/工具实现。我还没有深入研究 SubSonic 2.2 对存储过程的支持,但我认为它也会在第 3-5 项上遇到困难。相比之下,声明为存储过程一部分的单个输出字段处理起来相当简单。

第 1 项和第 2 项更容易实现,但我不熟悉 iBatis 周围可用的工具,抱歉。不过,我认为 iBatis 或 Oracle 与您的问题并没有太大关系。

您最好的选择可能是说服您的 DBA 提供更多帮助和/或积极运行差异来检测和手动应对存储过程的更改。

于 2009-11-24T18:44:19.877 回答