SQL编程中的模块语言、阻抗不匹配及其他绑定风格
1. 模块语言概述
在SQL编程中,编写“纯” SQL的方式被称为模块语言。SQL将嵌入式SQL处理定义为一种语法转换,它会提取嵌入式程序中的SQL语句到一个SQL模块中,用模块中相应过程的调用替换所有SQL语句(除声明外),最终留下一个纯3GL程序。虽然这种技术未被广泛实现,但它仍是一个出色的概念模型。
1.1 模块语言的优缺点
模块语言允许将SQL语句与3GL语句分开编写,再通过链接器组合成应用程序,具有以下优点:
- 可聘请SQL专家编写SQL代码,无需考虑他们所掌握的3GL;也可聘请优秀的3GL程序员,无需对他们进行SQL编码细节的培训。
- 能利用模块化编程的概念,将批量操作与传统数据处理等方面清晰分离。
- 编写SQL时,可在开发后期以最小的SQL代码改动来选择或重新选择3GL。
- 至少在应用程序的3GL部分,可使用带有完整源代码功能的调试器;而使用嵌入式SQL时,调试器在源代码上往往几乎无用。
不过,模块语言也存在一些缺点:
- 嵌入式SQL比模块语言的实现更广泛,这在希望自由使用不同DBMS时可能是一个重要因素。
- 许多人认为,当能流畅地同时阅读3GL和SQL代码时,更容易理解和维护应用程序,而不是同时查看两段代码。
1.2 模块的结构与语法
一个模块由模块头和过程与声明的混合部分组成。过程包含实际的SQL语句,声明可用于声明游标和临时表。模块声明的语法如下:
MODULE [ module-name ] [