"高级SQL讲稿第五章:嵌入式SQL的执行过程以及需要解决的问题"

需积分: 21 0 下载量 96 浏览量 更新于2024-01-15 收藏 264KB PPT 举报
数据库6版讲稿第五章----高级SQL.ppt中的第四节介绍了嵌入式SQL,重点讨论了使用嵌入式SQL的原因、执行过程和需要解决的问题。首先,提出了使用嵌入式SQL的原因,包括某些操作无法通过交互式SQL完成,SQL表达能力有限,以及实际应用系统复杂性所导致的非声明性动作需要高级语言实现。接着,详细解释了嵌入式SQL的执行过程,包括主语言、嵌入SQL、预处理、函数调用、主语言编译器和主语言执行程序等环节。最后,阐述了使用嵌入式SQL需要解决的几个问题,包括区分SQL语句与C语言语句、嵌入SQL语句与C语言之间的数据传递,以及宿主变量的使用。 嵌入式SQL是一种将SQL语句嵌入到高级语言(如C语言)中的技术,其使用原因主要包括某些操作无法通过交互式SQL完成和SQL表达能力的限制。首先,对于某些复杂的数据访问要求,单纯使用SQL无法满足。虽然SQL在逐渐增强自己的表达能力,但仍有一定局限性,过多的扩展也会影响执行效率。其次,实际的应用系统非常复杂,数据库访问只是其中的一个部件,与用户交互、图形化显示数据等操作只能通过高级语言实现。因此,使用嵌入式SQL可以弥补SQL在表达能力和非声明性动作方面的不足。 嵌入式SQL的执行过程主要包括主语言、嵌入SQL、预处理、函数调用、主语言编译器和主语言执行程序。在执行过程中,首先是主语言中嵌入SQL语句,然后通过预处理对SQL语句进行处理,接着通过函数调用将SQL语句传递给数据库,最后由主语言编译器和执行程序来完成整个过程。在这个过程中,需要解决的几个问题包括区分SQL语句与C语言语句、嵌入SQL语句与C语言之间的数据传递以及宿主变量的使用。 要解决SQL语句与C语言语句的区分问题,可以通过在嵌入的SQL语句前加上EXEC SQL开始,以分号或END_EXEC结束来实现。例如,使用EXEC SQL delete from PROF where DNO = 10;来执行删除操作。而对于嵌入SQL语句与C语言之间的数据传递问题,可以通过宿主变量来实现。宿主变量是C变量,既可以用在C语句中,也可用在SQL语句中,用来传递数据信息。 综上所述,嵌入式SQL是一种弥补SQL在表达能力和非声明性动作方面不足的技术,其执行过程包括嵌入SQL、预处理、函数调用、主语言编译器和主语言执行程序,并需要解决SQL语句与C语句的区分问题以及嵌入SQL语句与C语言之间的数据传递问题。通过使用宿主变量等方式,可以有效解决这些问题,实现嵌入式SQL技术的有效应用。