我正在开始一个程序的工作,这个程序可能最自然地被描述为数据库表上的一批计算,并且将每月执行一次。所有输入都在Oracle数据库表中,所有输出都将写入Oracle数据库表。该程序应该在未来许多年内保持可维护性。
将其实现为一系列存储过程似乎很简单,每个存储过程执行一个合理的转换,例如根据某些业务规则在部门之间分配成本。然后,我可以编写单元测试来检查每个转换的输出是否如我所期望的那样。
用PL/SQL来做这一切是不是一个坏主意?您是否更愿意使用典型的面向对象编程语言(如C# )进行繁重的批处理计算?使用以数据库为中心的编程语言,比如PL/SQL,不是更有表现力吗?
发布于 2008-09-17 00:24:25
通常,我会说尽可能少地使用PL/SQL --它的可维护性通常要低得多--在我的最后一份工作中,我真的看到了使用它会变得多么混乱和困难。
但是,由于它是批处理,并且输入和输出都是DB,所以将逻辑放到PL/SQL中是很有意义的,以最大限度地减少“移动部分”。但是,如果是业务逻辑--或者系统的其他部分使用的组件--我会说不要这样做。
发布于 2008-09-18 12:12:35
您将描述以下需求
a)必须能够实现批处理b)结果必须是可维护的
我的回答是:
话虽如此,您的实现将取决于可用的技能、适当的设计和对高质量流程的坚持。
为了提高效率,您的实现必须批量处理数据(批量选择和批量插入/更新)。OO方法的危险在于,它很容易导致设计逐行处理数据。这种类型的方法包含不必要的开销,并且与成批处理数据的设计相比,效率要低得多。
成功地使用这两种方法是可能的。
马修·巴特勒
发布于 2008-09-17 15:40:41
其他评论者需要注意的是,这个问题是关于PL/SQL的,而不是关于SQL的。显然,有些答案是关于SQL的,而不是PL/SQL。PL/SQL是一种功能完备的数据库语言,也是一种成熟的数据库语言。有一些缺点,但对于海报想要做的事情类型来说,它是非常好的。
https://stackoverflow.com/questions/78626
复制相似问题