#MYSQL#本篇主要介绍的是嵌入式SQL的使用规则,和具体的使用方法。

SQL语言可以嵌入到高级语言中,如PL1、COBOL、FORTRAN、 C,利用高级语言的过程性结构,可以弥补SQL语言在实现复杂应用方面的不足,在这种方式下使用SQL语嵌入式SQL的实现主要有两种方法:扩充宿主语言(高级语言)的编译程序,使之能处。

c 嵌入mysql mysql 嵌入式sql_SQL

理SQL语句和预处理方式。其中常用的是后者,即预处理方式。预处理方式的处理过程可表示如下。

(1)由DBMS的预处理程序对源程序进行扫描,识别出SQL语句。

(2)把识别出的SQL语句转换成主语言调用语句,以使主语言编译程序能识别它。

(3)由主语言的编译程序将整个源程序编译成目标码。

预处理方式首先从含有主程序语言和SQL语句的程序开始。在编译程序之前,系统首先把程序提交给-一个 预编辑器,它专门用于实现主程序语言的SQL.预编译器从主语言代码中

c 嵌入mysql mysql 嵌入式sql_主语言_02

剥离SQL语句,并用对SQL语句的调用来取代SQL语句。这样就创建了两个文件,一个用于主语言,一个用于SQL语句。主语言可以按照自己的方式编译,得到目标代码,从而可以连接到各数据库例程。

将SQL嵌入到高级语言中混合编程,程序中会含有两种不同计算模型的语句,如何区分它们以及它们之间如何通信,就成为使用嵌入式SQL的关键。创建嵌入式SQL语句当开发一种包含嵌入式SQL的程序时,必须遵守一些明确的协定, 用来决定SQL代码被添加到程序中的方式。

c 嵌入mysql mysql 嵌入式sql_SQL_03

要在主语言中得以使用,嵌入式SQL语句必须遵守以下原则。每个SQL语句都必须以限定前缀开头,并且指定结束符。必须根据主语言的要求,处理SQL语言中出现的行中断。注释的位 置必须根据主语言的风格来处理。几种主要语言的嵌入SQL语句的前缀。

c 嵌入mysql mysql 嵌入式sql_c 嵌入mysql_04

SQL语句与主语言之间的通信方式有SQL通信区、主变量和游标3种方式,其中SQL通信区( SQL Communication Area, SQLCA)是-一个数据结构,用于存储SQL语句运行时DBMS反馈给应用程序的状态信息。这些信息主要描述系统当前工作状态以及运行环境等。

应用程序从SQLCA中取出这些状态信息,据此决定接下来执行的语句。使用SQLCA时,首先需要在主语言中定义,定义语句如下。EXEC SQL INCLUDE SQLCA SQLCA中包含的字段及各字段的含义如表所示。

c 嵌入mysql mysql 嵌入式sql_c 嵌入mysql_05

主变量根据作用的不同,分为输入主变量和输出主变量。输入主变量由应用程序对其赋值,SQL语句引用。输出主变量由SQL语句对其复制或设置状态信息,返回给应用程序。一个主变量有可能既是输入主变量,又是输出主变量。利用输入主变量,可以实现如下功能。日指定向数据库中插入的数据。将数据库中的数据修改为指定值。

嵌入式SQL的使用。指定WHERE子句或HAVING子句中的条件.利用输出主变量,则可以得到SQL语句的结果数据和状态。一个主变量可以附带一个任选的指示变量( Indicator Variable)。所谓指示变量是一一个整型变量,用来指示返回给宿主变量的值是否为NULL值以及返回给宿主变量的字符串是否发生了截断。

c 嵌入mysql mysql 嵌入式sql_SQL_06

如果一个宿主变量所对应的数据库字段允许空值,或者字符串类型的宿主变量的长度可能小于所对应的数据库字段的长度,则需要-一个指示变量来指明数据库访问的返回状态。指示变量的返回值及其含义如表所示。

c 嵌入mysql mysql 嵌入式sql_嵌入式_07

输入主变量可出现的地方主要包括SQL的数据操纵语句中可出现常数的任何地方,SELECT等语句的INTO子句中。以上就是嵌入式SQL的使用方法。