在SQL和Java中编写DB2存储过程的优缺点是什么?

时间:2009-02-17 05:35:18

标签: stored-procedures db2

对于较新版本的DB2,您可以在SQL中编写存储过程,或者您可以使用Java(或其他语言)创建过程,然后可以将这些过程添加到数据库中,并像SQL过程一样调用。我想知道每种方法的优点和缺点是什么。我特别感兴趣的是比较这两种类型的程序,而不是辩论程序与外部代码,我认为已经涵盖了这些程序。这是我到目前为止所提出的:

SQL:

  • 提高基本SQL功能的性能

  • 简单逻辑的冗长,即您可以直接运行SQL

  • 没有额外的编译步骤 - 只需创建程序......

爪哇:

  • 更多结构化和功能齐全的代码(类,对象,重用,库)

  • 在程序员和文档方面提供更好的资源帮助

还有其他想法吗?

3 个答案:

答案 0 :(得分:4)

不只是Java而是任何程序语言:程序,这是关键。

DB2是一种关系代数,而不是一种编程语言。如果你需要做一些复杂的事情,那么最好使用一种过程语言,而不是尝试将SQL转化为它本身并不存在的东西。

我们实际上使用REXX进行DB2 / z工作,但我看到这里的人们在大型机上使用bash进行快速原型设计。一些只使用SQL的人会创建所有这些可怕的临时表来存储最好保存在结构中并远离数据库的东西。

我的想法是复杂性是在存储过程中直接使用SQL和过程方法之间唯一的区别因素。在做出这些决定时,我们有两条经验法则。

1 /如果一个工作单元需要两次以上的数据库访问,我们将其作为存储过程。

2 /如果存储过程创建了一个临时表,那么我们使用过程语言来完成它。

答案 1 :(得分:0)

您可能已经找到了这个,但为了以防万一,其他任何人都可以在这里找到一本关于SProcs的IBM红皮书以及DB2 v9的更改 DB2 9 for z/OS Stored Procedures: Through the CALL and Beyond 讨论了可用的选项及其相对优点。

答案 2 :(得分:-1)

SQL存储过程的优点是它们可以移植到其他Db2 UDb,只需很少或不需要更改。但是Db2外部程序将是一个更好的选择,因为你可以使用过程语言比单独的sql做更多。 我想说cobol比Java更适合DB2外部存储过程,原因如下。 1)。您将能够重用现有程序中的一些代码。将cobol子程序转换为存储过程或存储过程到cobol子程序很容易实现。 2)。您将能够使用具有该系统功能知识的现有cobol开发团队。