声明:这不是“不要使用存储过程 - 想到孩子们!”后,我不打算点燃火焰战争。我只是建议代码重用更容易,可能更适合某些情况和平台。
代码重用作为一个概念通常会改善代码库。你保留着东西DRY,并开始形成一个共同的功能层,以同样的方式解决常见的问题。
然而,就像任何事情一样,人们可以弄错它(权力来自责任等等等等等等)。
在大多数现代编程语言中,通过编写函数或者创建可以一次又一次使用的整个框架来重用代码是相对简单的。但是,在T-SQL中,这是棘手的,因为你的选择较少。存储过程可以做到这一点,但是你已经看到了它们可能会有多尴尬。
我个人的偏好是保持业务逻辑不在数据库中。这意味着我不使用视图,UDF,sprocs等(除非在性能分析后我们认为我们可以使用这些技术加快速度),而是将其保留在我的应用程序代码中。这往往会引起“业务逻辑层”的思考,但有各种各样的风格,所以它可能是一个误用。不过,这当然不是直接位于UI按钮点击处理程序之后的代码。
我的目标是限制数据库存储和检索数据,因为这就是他们擅长的。我们都知道笨重和过时的T-SQL可以作为一种语言(想想异常处理,部署,游标等)。如果您的应用程序被写入数据库本身,并且您也无法扩展您的应用程序,因为数据库不可知是完全不可能的,因为数据库是应用程序。如果您在应用程序代码中拥有该业务逻辑,则可以更容易地扩展它。
在这种情况下,“业务逻辑”是用于生成报表的查询和转换,并且我将研究在考虑其他选项之前如何在报表工具/代码中重用代码。
“我现在认为代码重用不一定会增强数据库设计的可维护性。”是主要问题,其余部分是针对上下文的。 – gb2d 2011-01-19 12:39:57
存储过程的标题中是否有任何特定限制的原因?这些不是代码重用的唯一机制。 – 2011-01-19 12:44:14
不是。我知道有几种方法可以实现代码重用。 – gb2d 2011-01-19 12:45:39