Stored procedures 与Java相比,用SQL编写DB2存储过程的优缺点是什么?

Stored procedures 与Java相比,用SQL编写DB2存储过程的优缺点是什么?,stored-procedures,db2,Stored Procedures,Db2,对于较新版本的DB2,您可以用SQL编写存储过程,也可以用Java(或其他语言)创建过程,然后将这些过程添加到数据库中,并像SQL过程一样调用。我想知道每种方法的优缺点是什么。我特别感兴趣的是比较这两种类型的过程,而不是讨论过程和外部代码,我认为它们已经被介绍过了。以下是我到目前为止得出的结论: SQL: 提高基本SQL功能的性能 对于简单的逻辑,您可以直接运行SQL 没有额外的编译步骤-只需创建过程 爪哇: 更结构化、功能更全面的代码(类、对象、重用、库) 在程序员和文档方面提供更好的帮

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

SQL:

  • 提高基本SQL功能的性能

  • 对于简单的逻辑,您可以直接运行SQL

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

爪哇:

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

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


还有其他想法吗?

不仅仅是Java,还有任何过程语言:过程的,这是关键

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

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

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

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


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

您可能已经发现了这一点,但为了以防万一,这里还有一本关于存储过程的IBM红皮书以及DB2 v9的更改,可在
它讨论了可用的选项及其相对优点。

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