实现例程逻辑时,可选择实现 SQL 例程或外部例程。选择两种实现的其中任何一种都有原因。
关于此任务
只要
SQL 例程能够满足您的需求,就应该选择使用 SQL 例程而不是外部例程。当您必须实现复杂逻辑或者访问数据库服务器上的文件或脚本时,请使用外部例程。
过程
- 下列情况下选择实现 SQL 例程:
- SQL PL 和 SQL 语句为实现所需逻辑提供足够支持。
- 例程逻辑主要由查询或修改数据的 SQL 语句组成,并且会考虑性能。与查询或修改数据库数据的 SQL 语句数目相比,包含的控制流逻辑相对较少的逻辑的性能通常比 SQL 例程实现的性能更好。SQL PL
适合用于实现数据库操作中的过程逻辑,而不太适合用于编写复杂逻辑。
- 可在外部例程实现中执行需要执行的 SQL 语句。
- 您可能想要模块在操作系统环境间具有高可移植性并且使其对编程语言代码编译器和脚本解释器的依赖性降至最低。
- 您想要迅速实现逻辑并轻松使用高级编程语言。
- 您更愿意使用 SQL 而不是脚本编制或编程语言。
- 您想要保护数据库管理系统中的逻辑。
- 您想要将发行版升级或操作系统升级时产生的例程维护和例程包维护工作量降至最低。
- 您想要将实现逻辑所需的代码量降至最低。
- 您想要尽量降低内存管理、指针操作或其他常用编程陷阱所带来的风险以使所实现的代码的安全性达到最高。
- 您想要受益于使用 SQL PL 时可用的特殊 SQL 高速缓存支持。
- 下列情况下选择实现外部过程:
- 如果例程逻辑非常复杂并且几乎不包括 SQL 语句,同时需要考虑例程性能。涉及大量字符串操作的复杂算术算法或或不访问数据库之类的逻辑的性能通常比外部例程实现的性能好。
- 如果可在外部例程实现中执行需要执行的 SQL 语句。
- 例程逻辑将进行操作系统调用(这只能通过外部例程完成)。
- 例程逻辑必须读取或写入文件(这只能通过外部例程完成)。
- 写入服务器文件系统。执行此任务时需谨慎。
- 调用驻留在数据库服务器上的应用程序或脚本。
- 发出在 SQL 过程中不受支持的特定 SQL 语句。
- 您更愿意使用 SQL PL 以外的编程语言进行编程。