嵌入式SQL 即为将SQL嵌入到高级语言中进行混合编程,高级语言负责控制整个流程的运行,SQL 就负责数据库操纵的部分。
所以SQL和高级语言之间就要有“交流”,交流的几个载体分别是主变量,游标和SQL通信区,以下是参考教材内容和我对这几个定义的理解:
- SQL通信区负责将SQL语句的信息进行临时存储,起到类似中转的作用,应用程序从这里提取出状态信息并决定下面要执行的语句。
- 主变量,SQL语句中使用的主语言程序变量简称主变量。主变量根据其作用的不同分为输入主变量和输出主变量。输入主变量由应用程序对其赋值,SQL语句引用;输出主变量由SQL语句对其赋值或设置状态信息,返回给应用程序。
一个主变量可以附带一个任选的指示变量。指示变量是一个整型变量,用来指示所指主变量的值或条件。指示变量可以指示输入主变量是否为空值,可以检测输出主变量是否为空值,值是否被截断。 - SQL是面向集合的,一条SQL语句可以产生或处理多条记录;而主语句是面向记录的,一组主变量只能存放一条记录。所以仅使用主变量并不能完全满足SQL语句向应用程序输出数据的要求,为此嵌入式SQL引入了游标的概念,用游标来协调这两种不同的处理方式。
游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果,每个游标区都有一个名字。用户可以通过游标逐一获取记录并赋给主变量,交由主语言进一步处理。
就是在我们实际操作中,主变量只能存放某一条的数据信息