Jan 5, 2009

嵌入式SQL编程的编译过程

嵌入式SQL程序中包含SQL语句和编程语言语句,所以它不能直接提交给编程语言的编译程序,而是要通过多级的代理
所有支持嵌入式SQL的产品都有以下类似的处理过程
1:嵌入式SQL源程序提交给SQL预编译程序。它扫描整个程序,找到嵌入的SQL语句并处理他们
2:预编译程序输出两个文件,第一个是玻璃了嵌入的SQL语句的源程序。在嵌入的SQL语句的位置由预编译程序替换成对专用DBMS程序段的调用。这些程序段提供了程序和DBMS之间运行时的连接。第二个文件是程序中所有嵌入SQL语句的复制品,即数据库存取模块DBRM(database request module)
3:从预编译程序输出的源文件交给宿主编程语言的标准编译程序,处理后生成对象代码作为输出结果。注意这一部并没有利用DBMS或SQL做什么
4:连接器linker接收编译程序生成的目标模块,将模块与各种库程序段连接在一起,并生成一个可执行程序。参与生成可执行程序的库程序段包括在第2步中描述的专用DBMS程序段
5:预编译程序对所生成的数据库存取模块提交给一个特殊的BIND程序。这个程序检查SQL语句,对他们进行解析,验证和优化。并为每条语句生成一个应用计划。这样的结果是得到整个程序的组合应用计划,他是嵌入式SQL语句的DBMS可执行版本。BIND程序在数据库中存储该计划,通常以创建计划的应用程序名字为它命名

Jan 4, 2009

嵌入式SQL技术原理

嵌入式SQL技术使用下列技术嵌入SQL语句
1:SQL语句与宿主语言的语句在源程序中混合,这种嵌入式SQL源程序提交给SQL预编译程序,这个程序可以处理SQL语句
2:宿主编程语言的变量可以引用到嵌入式SQL语句中,这样允许SQL语句使用由程序计算得到的树枝
3:嵌入式SQL语句使用程序语言变量得到SQL查询结果。这样允许程序处理检索的树枝
4:有些特殊的程序标量用于为数据库字段分配NULL值,并支持对数据库中NULL值的检索
5:集中嵌入式SQL独有的SQL语句被添加到交互式SQL语言中,它们可以对擦和讯结果按记录进行处理

缺点:
1:程序源代码变为两种不同语言的混合物。
2:它是偶那个不再交互SQL中使用的SQL语言,如WHENEVER和INTO等

使用SQL编程

SQL数据库提供商为在应用程序中使用SQL提供了两项基本技术
1:嵌入式SQL SQL语句直接嵌入在程序源代码中,与其他编程语句混合使用
一个特殊的SQL预编译程序接收组合在一起的源代码然后借助于其他编程工

具,将其转化为可执行程序
2:应用程序接口 程序与DBMS进行通信,通过一系列的应用程序接口或API

函数调用进行通信。程序通过API调用传递SQL语句给DBMS,并使用API调用

检索查询结果。这种方法不需要特殊的预编译程序

DBMS语句处理
为了处理一条SQL语句,DBMS必须按5个步骤执行
1:DBMS从解析SQL语句开始。它将语句分解为单独的词,并确认该语句包含有效的动词,合法的子句等成分。在这一步中可以检测出语句中的语法错误和拼写错误
2:DBMS验证语句。用于和系统目录相反的顺序检查语句,可以检测出予以错误
3:DBMS优化语句。它用各种方法执行语句。研究了所有可选方案后,DBMS将选择合适的答案。
4:DBMS为语句生成应用计划,这个应用计划是一个二进制数,它代表执行计划所需步骤,它是DBMS可执行代码的等价物
5:最后DBMS执行应用计划实现语句
Powered By Blogger