利用高级语言的过程性结构来弥补SQL语言实现复杂应用

利用高级语言的过程性结构来弥补SQL语言实现复杂应用

ID:43466603

大小:163.00 KB

页数:30页

时间:2019-10-08

利用高级语言的过程性结构来弥补SQL语言实现复杂应用_第1页
利用高级语言的过程性结构来弥补SQL语言实现复杂应用_第2页
利用高级语言的过程性结构来弥补SQL语言实现复杂应用_第3页
利用高级语言的过程性结构来弥补SQL语言实现复杂应用_第4页
利用高级语言的过程性结构来弥补SQL语言实现复杂应用_第5页
资源描述:

《利用高级语言的过程性结构来弥补SQL语言实现复杂应用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、EmbeddedSQL-SoftwareSchoolofHunanUniversity-2006.09利用高级语言的过程性结构来弥补SQL语言实现复杂应用方面的不足。嵌入SQL的高级语言称为主语言或宿主语言。在混合编程中,SQL语句负责操作数据库,高级语言语句负责控制程序流程。预编译方法:由DBMS的预处理程序对源程序扫描,识别出SQL语句,把它们转换成主语言调用语句,以使主语言编译器能识别它,最后由主语言编译器将整个源程序编译成目标码。嵌入式SQL的一般形式所有的嵌入式SQL语句都不得必须加前缀

2、EXECSQL例如:在C语言中:EXECSQLEXECSQLDROPTABLEStudent;在COBOL中:EXECSQLEND-EXEC嵌入式SQL与主语言的通信向主语言传递SQL语句执行状态信息,使语言能够据此信息控制程序流程,用SQL通信区(SQLCA)实现。主语言向SQL语句提供参数,主要用主变量(HostVariable)实现;将SQL语句查询数据库的结果交主语言进一步处理,主要用主变量和游标(Cursor)实现。SQL通信区SQL是一个数据结构,在应用程序

3、中用EXECSQLINCLUDESQLCA加以定义。SQLCA中有一个存放每次执行SQL语句后返回代码的变量SQLCODE。每次执行完SQL语句后都应该测试一下SQLCODE的值,以了解该SQL语句执行情况并做相应处理,如果SQLCODE等于预定的常量SUCCESS,则表示SQL语句成功,否则在SQLCODE中存放错误代码。SQL通信区例如:在执行删除语句后,不同的执行情况SQLCA中有下列不同的信息:成功删除并有删除的行数(SQLCODE=SUCCESS)无条件删除警告信息违反数据保护规则,拒绝

4、操作没有满足条件的行,一行也没有删除由于各种原因,执行出错主变量(HostVariable)主语言程序变量:主变量输入主变量:由应用程序对其赋值,SQL语句引用输出主变量:由SQL语句对其赋值或设置状态信息,返回给应用程序一个主变量既可是输入主变量也可是输出主变量。指示变量(IndicatorVariable)指示变量:主变量附带的可选变量,是一个整型变量,用来”指示”所指主变量的值或条件。可以指示输入主变量是否为空,可以检测输出主变量是否为空值,值是否被截断。所有主变量和指示变量必须在SQL语句

5、BEGINDECLARESECTION与ENDDECLARESECTION之间进行说明。SQL语句的主变量名和指示变量前要加冒号作为标志,且指示变量必须紧随主变量之后。在SQL语句之外,主变量和指示变量直接引用,不须加冒号。游标(Cursor)SQL语言面向集合,一条SQL语句原则上可以产生或处理多条记录,而主语言是面向记录的,一组主变量一次只能存放一条记录。所以仅用主变量不能完全满足SQL语句向应用程序输出数据的要求。游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果,每个游标区都有

6、一个名字。用户可以通过游标逐一获得数据,并赋给主变量,交由主语言处理。程序实例(SQLinC)EXECSQLINCLUDESQLCA;……………………定义SQL通信区EXECSQLBEGINDECLARESECTION;……….主变量说明开始CHARSno(5)CHARCno(3)INTGrade;EXECSQLENDDECLARESECTION;……….主变量说明结束Main(){EXECSQLDECLAREC1CURSORFOR……….定义游标SELECTSno,Cno,GradeFROMSC

7、;EXECSQLOPENC1;……….……….打开游标for(;;){程序实例(SQLinC)EXECSQLFETCHC1INTO:Sno,:Grade;……….推进游标指针并将当前数据放入主变量if(sqlca.sqlcode<>SUCCESS……….利用SQLCA中的状态信息决定何时退出循环break;printf(“Sno:%s,Cno:%s,Grade:%d”,:Sno,:Cno,:Grade);……….打印查询结果}EXECSQLCLOSEC1;……….……….关闭游标}不用游标的SQL

8、语句说明性语句数据定义语句数据(权限)控制语句查询结果为单记录的SELECT语句非CURRENT形式的UPDATE语句非CURRENT形式的DELETE语句INSERT语句不需要使用主变量通常需要使用主变量查询结果为单记录的SELECT语句EXECSQLSELECT[ALL

9、DISDINCT]<目标列表达式1>……INTO<主变量>[<指示变量>]……FROM<表名或视图名>,……[WHERE][GROUPBY<列名>[HAVING<条件表达式>]][ORDE

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。