[计算机软件及应用]数据库编程

[计算机软件及应用]数据库编程

ID:40005175

大小:184.86 KB

页数:49页

时间:2019-07-17

[计算机软件及应用]数据库编程_第1页
[计算机软件及应用]数据库编程_第2页
[计算机软件及应用]数据库编程_第3页
[计算机软件及应用]数据库编程_第4页
[计算机软件及应用]数据库编程_第5页
资源描述:

《[计算机软件及应用]数据库编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第八章数据库编程◆嵌入式SQL◆存储过程◆ODBC编程8.1嵌入式SQL引入嵌入式SQL的原因SQL语言是非过程性语言事务处理应用需要高级语言这两种方式细节上有差别,在程序设计的环境下,SQL语句要做某些必要的扩充嵌入式SQL当一个程序即要访问数据库,又要处理数据时,把SQL语言嵌入程序设计语言即宿主语言中,将SQL语言访问数据库的功能和宿主语言的数据处理功能相结合,是目前解决该问题的最有效途径。这样使用的SQL称为嵌入式SQL(EmbeddedSQL,ESQL)8.1.1嵌入式SQL的处理过程嵌入式SQL的基本处理过程主语言程序含ESQL语句RDMS的预处理程序ESQL语

2、句转换为函数主语言编译程序目标语言程序为了区分SQL语句与主语言语句,需要:前缀:EXECSQL结束标志:随主语言的不同而不同一般形式以C为主语言的嵌入式SQL语句的一般形式EXECSQL;例:EXECSQLDROPTABLEStudent;1)嵌入识别问题宿主语言的编译程序不能识别SQL语句,所以首要问题要解决如何区分宿主语言的语句和SQL语句。2)宿主语言与SQL语言的数据通信问题DBMS将SQL语句的查询结果或执行状态必须交给宿主语言/应用程序处理(通过SQLCA);运行时,宿主语言的数据通过变量(称为主变量)也要能够交给SQL使用。3)宿主语言的单记录

3、与SQL的多记录的问题宿主语言一般一次处理一条记录;SQL语言常常处理的是记录(元组)的集合,其查询结果通常是含多个记录的一张表。说明:SQL作为子语言嵌入在宿主语言中使用必须要解决以下三方面问题:8.1.2嵌入式SQL语句与主语言之间的通信将SQL嵌入到高级语言中混合编程,程序中会含有两种不同计算模型的语句SQL语句:描述性的面向集合的语句-负责操纵数据库高级语言语句:过程性的面向记录的语句-负责控制程序流程工作单元之间的通信方式(1)SQL通信区♦向主语言传递SQL语句的执行状态信息♦主语言能够据此控制程序流程(2)主变量♦主语言向SQL语句提供参数♦将SQL语句查询数

4、据库的结果交主语言进一步处理(3)游标♦解决集合性操作语言与过程性操作语言的不匹配应用SQLCADBMS连接参数状态信息一、SQL通信区(SQLCommunicationArea,SQLCA)SQL被执行时,DBMS将产生的各类系统信息(如执行状态信息)写入系统通信区,应用程序在调用SQL后,可通过读取数据通信区中信息来确定语句执行情况。使用SQLCA:SQLCA中有一个存放每次执行SQL语句后返回代码的变量SQLCODE如果SQLCODE等于预定义的常量SUCCESS,则表示SQL语句成功,否则表示出错应用程序每执行完一条SQL语句之后都应该测试一下SQLCODE的值,以

5、了解该SQL语句执行情况并做相应处理定义SQLCA:用EXECSQLINCLUDESQLCA加以定义二、主变量(HostVariable)♦主变量的分类与作用输入主变量:由应用程序赋值,SQL引用。输出主变量:SQL对其赋值或设置状态信息,返回给应用程序。SQL语句使用宿主语言的程序变量来输入/输出数据,这样的变量简称为主变量(HostVariable)♦指示变量(IndicatorVariable)1)什么是指示变量:整型变量用来“指示”所指主变量的值或条件2)指示变量的用途:输入主变量可以利用指示变量赋空值输出主变量可以利用指示变量检测出是否空值,值是否被截断♦在SQL

6、语句中说明主变量和指示变量BEGINDECLARESECTION..................(说明主变量和指示变量).........ENDDECLARESECTION♦在SQL语句中使用主变量SQL语句中的主变量名前要加冒号(:)作为标志♦在SQL语句使用指示变量(1)指示变量前也必须加冒号(:)标志(2)必须紧跟在所指主变量之后例如::Hgrade:Gradeid三、 游标(Cursor)♦游标的概念游标是系统为用户开设的一个数据缓冲区,存放SQL的执行结果。♦为什么要使用游标当查询结果超过一个元组时,不能一次性将结果值赋给宿主语言的变量,因为主变量仅能保存一个

7、数据,而不是一组数据。(1)定义游标EXECSQLDECLARESXCURSORFORSELECTSno,Sname,Ssex,Sage/*SX对应语句的执行结果*/FROMStudentWHERESDept=:deptname;不可执行的指令,仅定义游标,SELECT语句没有执行(2)打开游标EXECSQLOPENSX;执行SELECT语句,将结果放入结果集中。(3) 推进游标移动指针,改变结果集的当前记录。(4)通过游标更新数据(5)关闭游标♦游标的定义和使用四、建立和关闭数据库连接建立数据库连接:EXECSQ

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

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

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