- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第八章 數据库编程
第八章 数据库编程
8.1 嵌入式SQL
8.2 存储过程
8.3 ODBC编程
8.1 嵌 入 式 SQL
SQL语言提供了两种不同的使用方式:
交互式
嵌入式
将SQL语句嵌入到其它宿主语言编写的程序中,作为宿主语言的子语言,使宿主语言具备访问数据库的能力。
宿主语言:COBOL, C, Pascal, Fortran, VC++, VB, DEPHI, CB等能嵌入SQL语句的高级语言。
宿主语言本身不能直接识别SQL语句。
为什么要引入嵌入式SQL
SQL语言是非过程性语言
事务处理应用需要高级语言
这两种方式细节上有差别,在程序设计的环境下,SQL语句要做某些必要的扩充。
把SQL嵌入到其他高级语言中,必须解决的三个问题:
语句识别——如何区分SQL语句和主语言语句。
数据交换——由主语言提出的操作或数据,如何让数据库管理系统执行,由数据库查询出的数据如何交由主语言处理。
协调主语言的单记录操作和数据库的集合操作。
8.1.1 嵌入式SQL的处理过程
对宿主型数据库语言SQL(ESQL),DBMS采用预编译方法处理:
1.由DBMS的预处理程序对源程序进行扫描,识别出SQL语句
2.把它们转换成主语言调用语句,以使主语言编译程序能识别它
3.最后由主语言的编译程序将整个源程序编译成目标码。
8.1.1 嵌入式SQL的处理过程
为了能够区分SQL语句与主语言语句,所有的SQL语句必需要有前缀EXEC SQL,以(;)结束,嵌入式SQL语句的一般形式
EXEC SQL SQL语句;
例:EXEC SQL DROP TABLE Student;
8.1.2 嵌入式SQL语句与主语言之间的通信
将SQL嵌入到高级语言中混合编程,程序中会含有两种不同计算模型的语句。
SQL语句
描述性的面向集合的语句
负责操纵数据库
高级语言语句
过程性的面向记录的语句
负责控制程序流程
嵌入式SQL语句与主语言之间的通信主要是指:描述性面向集合与过程性面向纪录(元组)语句之间的通信。
工作单元之间的通信方式
SQL通信区
向主语言传递SQL语句的执行状态信息,主语言能够据此控制程序流程。
主变量
1)主语言向SQL语句提供参数。
2)将SQL语句查询数据库的结果交主语言进一步处理。
游标
解决集合性操作语言与过程性操作语言的不匹配。
一、 SQL通信区
SQLCA: SQL Communication Area
是一个数据结构——存放状态信息供程序读取 。
SQLCA的用途
SQL语句执行后,DBMS反馈给应用程序信息
描述系统当前工作状态
描述运行环境
这些信息将送到SQL通信区SQLCA中,应用程序从SQLCA中取出这些状态信息,据此决定接下来执行的语句
定义SQLCA
用EXEC SQL INCLUDE SQLCA加以定义
使用SQLCA
SQLCA中有一个存放每次执行SQL语句后返回代码的变量SQLCODE ;
如果SQLCODE等于预定义的常量SUCCESS,则表示SQL语句成功,否则在SQLCODE 存放错误代码;
应用程序每执行完一条SQL 语句之后都应该测试一下SQLCODE的值,以了解该SQL语句执行情况并做相应处理。
二、 主变量
什么是主变量
嵌入式SQL语句中可以使用主语言的程序变量来输入或输出数据,在SQL语句中使用的主语言程序变量简称为主变量(Host Variable)
主变量的类型
输入主变量---由应用程序对其赋值,SQL语句引用。
输出主变量--由SQL语句赋值或设置状态信息,返回给应用程序。
一个主变量有可能既是输入主变量又是输出主变量
定义SQLCA
用EXEC SQL INCLUDE SQLCA加以定义
使用SQLCA
SQLCA中有一个存放每次执行SQL语句后返回代码的变量SQLCODE ;
如果SQLCODE等于预定义的常量SUCCESS,则表示SQL语句成功,否则在SQLCODE 存放错误代码;
应用程序每执行完一条SQL 语句之后都应该测试一下SQLCODE的值,以了解该SQL语句执行情况并做相应处理。
指示变量
一个主变量可以附带一个指示变量(Indicator Variable)
什么是指示变量
整型变量
用来“指示”所指主变量的值或条件。
指示变量的用途
指示变量可以输入主变量是否为空值
指示变量可以检测输出主变量是否为空值,值是否被截断。
在SQL语句中使用主变量和指示变量的方法
1) 说明主变量和指示变量
BEGIN DECLARE SECTION
.........
......... (说明主变量和指示变量)
END DECLARE SECTION
2) 使用主变量
说明之后的主变量可以在SQL语
文档评论(0)