嵌入式SQL及动态SQL语句.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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)

htfyzc + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档