存储过程的所有这些缺点(数据库可移植性等)我现在面对的是。我们将把我们的VB.Net/ASP/SQL Server应用程序迁移到Mono/Postgresql和完全国际化。
我们面临的众多问题之一是我们有800-900个存储过程。我们正在考虑做的是将这些SP中的逻辑转移到应用程序代码中。我到处寻找人们是如何做到这一点的,或者如何做到这一点,但我几乎没有找到什么。关于存储过程的大多数信息都是关于它们应该包含什么等等。因此,我得出的结论是,实现这一点的最佳方法是将SQL检索/更新类型的查询保留为存储过程,而将具有业务逻辑的查询移到应用程序中。
所以我的问题是,做这样的事情最好的方法是什么(可能没有最好的方法,但从哪里开始的一些建议会很好)?
谢谢利亚姆
发布于 2010-07-22 13:59:04
由于存储过程提供了到数据库的接口,因此现在需要确保对存储过程的所有调用都转到相同的客户端代码。如果您当前从应用程序中的多个位置调用SP,甚至从多个应用程序(可能是多模式)调用SP,则它们都需要通过公共代码。我首先要确保每个SP只从您的客户端库中的一个位置调用。然后,来自存储过程的所有逻辑都将被该方法调用封装。如果您的存储过程使用事务来确保复杂操作的完整性,则现在需要在应用程序端库中启动和提交这些事务。
重构最终是必要的,即使您不能移植所有的SP,重构也是有好处的。
发布于 2010-07-26 15:57:49
在将ASP.NET+ SQL Server应用程序迁移到Postgres数据库时,我也遇到了同样的情况。与将SP迁移到您的应用程序代码相比,将它们转换为等效的pl/pgsql函数会容易得多。您所需要做的就是更改ADO.NET提供程序,并且不需要在应用程序代码中进行任何更改。有很多postgres (npgsql)的提供者将SP和postgres的功能等同起来。
https://stackoverflow.com/questions/3305829
复制相似问题