2

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

SQL:

  • 基本 SQL 功能的更好性能

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

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

爪哇:

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

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

还有其他想法吗?

4

3 回答 3

4

不仅是 Java,还有任何程序语言:procedural,这是关键。

DB2 是一种关系代数,而不是一种编程语言。如果您需要做一些复杂的事情,最好使用过程语言而不是试图将 SQL 弯曲成它不应该的东西。

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

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

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

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

于 2009-02-17T05:47:21.463 回答
0

您可能已经发现了这一点,但为了以防万一,以及其他任何经过这里的人,有一本关于 SProcs 的 IBM 红皮书和 DB2 v9 的更改可在 DB2 9 for z/OS 存储过程:通过 CALL 和超越 讨论可用的选项及其相对优点。

于 2009-03-02T05:28:52.977 回答
-1

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

于 2009-04-06T00:09:47.080 回答