- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式SQL及动态SQL语句
嵌入式SQL及动态SQL语句
SQL语言有两种使用方式:一种是在终端交互方式下使用,称为交互式SQL;另一种是嵌入在高级语言的程序中使用,称为嵌入式SQL,而这些高级语言可以是C、ADA、PASCAL、COBOL或PL/I等,称为宿主语言。
本章主要讲解以下4点知识:
1 SQL的运行环境
2 嵌入式SQL的使用规定
3 嵌入式SQL的使用技术
4 动态SQL语句
SQL的运行环境
宿主语言十嵌入式SQL
↓
预处理程序
↓
宿主语言十函数调用
↓
SQL函数定义库
↓
宿主语言编译程序
↓
目标程序
嵌入式SQL的使用规定
在程序中要区分SQL语句和宿主语言语句
允许嵌入的SQL语句引用宿主语言的程序变量(称为共享变量),但有两条规定:
(1) 引用时,这些变量前必须加冒号“:”作为前缀标识,以示和数据库中变量有区别。
(2) 这些变量由宿主语言的程序定义,并用SQL的DECLARE语句说明。
SQL的集合处理方式和宿主语言单记录处理方式之间的协调。
(1) 游标定义语句(DECLARE)。
(2) 游标打开语句(OPEN)。
(3) 游标推进语句( FETCH )。
(4) 游标关闭语句(CLOSE)。
嵌入式SQL的使用技术
1,不涉及游标的SQL DML语句
2,涉及游标的SQL DML语句
3,卷游标的定义和推进
涉及游标的SQL DML语句
(1)SELECT语句的使用方式
当SELECT语句查询结果是多个元组时,此时宿主语言程序无法使用,一定要用游标机制把多个元组一次一个地传送给宿主语言程序处理。
(2)对游标指向元组的修改或删除操作
在游标处于活动状况时,可以修改或删除游标指向的元组。
动态SQL语句
1,动态SQL预备语句
EXEC SQL PREPARE〈动态SQL语句名〉FROM〈共享变量或字符串〉
这里共享变量或字符串的值应是一个完整的SQL语句。这个语句可以在程序运行时由用户输入才组合起来。此时,这个语句并不执行。
2,动态SQL执行语句
EXEC SQL EXECUTE〈动态SQL语句名〉
动态SQL语句使用时,还可以有两点改进:
(1)当预备语句中组合而成的SQL语句只需执行一次时,那么预备语句和执行语句可合并成一个语句:
EXEC SQL EXECUTE IMMEDIATE〈共享变量或字符串〉
(2)当预备语句中组合而成的SQL语句的条件值尚缺时,可以在执行语句中用USING短语补上:
EXEC SQL EXECUTE 动态SQL语句名 USING 共享变量
例3.33 下面两个C语言的程序段说明了动态SQL语句的使用技术。
①EXEC SQL BEGIN DECLARE SECTION;
char *query;
EXEC SQL END DECLARE SECTION;
scanf(〞%s〞,query);/* 从键盘输入一个SQL语句 */
EXEC SQL PREPARE que FROM :query;
EXEC SQL EXECUTE que;
这个程序段表示从键盘输入一个SQL语句到字符数组中;字符指针query指向字符串的第1个字符。
如果执行语句只做一次,那么程序段最后两个语句可合并成一个语句:
EXEC SQL EXECUTE IMMEDIATE :query;
②char *query =UPDATE sc
SET grade = grade * 1.1
WHERE c# = ?;
EXEC SQL PREPARE dynprog FROM :query;
char cno[5] = 〞C4〞;
EXEC SQL EXECUTE dynprog USING :cno;
这里第一个char语句表示用户组合成一个SQL语句,但有一个值(课程号)还不能确定,因此用“?”表示。第二个语句是动态SQL预备语句。第三个语句(char语句)表示取到了课程号值。第四个语句是动态SQL执行语句,“?”值到共享变量cno中取。
小结
SQL是关系数据库的标准语言,已广泛应用在商用系统中。
SQL的数据定义部分包括对SQL模式、基本表、视图、索引的创建和撤消。
SQL的数据操纵分成数据查询和数据更新两部分。
SQL的数据查询是用SELECT语句实现,兼有关系代数和元组演算的特点。
SQL的数据更新包括插入、删除和修改等三种操作,在视图中只有行列子集视图是可以更新的。
嵌入式SQL涉及到SQL语句的宿主语言程序中的使用规定,以解决两种语言的不一致和相互联系的问题。同时还介绍了动态SQL语句。
本章重要内容分析
SELECT语句是SQL的核心内容,对于该语句考生应掌握下列内容。
1.SELECT语句的来历
在关系代数中最常用的式子是下列表达式:
πA1,…,An(σF(R1×…×Rm))
原创力文档


文档评论(0)