- 1、本文档共52页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第八章 数据库编程 嵌入式SQL 嵌入式SQL语句 将SQL语言嵌入到某种高级语言中使用,利用高级语言的过程性结构来弥补SQL语言实现复杂应用方面的不足。 这种方式下使用的SQL语言称为嵌入式SQL(Embedded SQL)。 嵌入SQL的高级语言称为主语言或宿主语言。 把SQL嵌入到宿主语言中使用必须要解决以下三个方面的问题: 嵌入识别问题: 宿主语言的编译程序不能识别SQL语句,所以首要的问题就是要解决如何区分宿主语言的语句和SQL语句; 宿主语言与SQL语言的数据交互问题: SQL语句的查询结果必须能够交给宿主语言处理,宿主语言的数据也要能够交给SQL语句使用; 宿主语言的单记录与SQL的多记录的问题: 宿主语言一般一次处理一条记录,而SQL常常处理的是记录(元组)的集合,这个矛盾必须解决。 嵌入式SQL的一般形式 嵌入式SQL语句与主语言之间的通信 1. SQL 通信区 SQLCA在应用程序中用 EXEC SQL INCLUDE SQLCA 加以定义 SQLCODE: SQLCA中的一个存放返回代码的变量; 用来存放每次SQL语句执行后返回的代码(一个值),表示该SQL语句执行是否成功,以及不成功的原因。 通常用预定义的常量SUCCESS表示成功;否则在SQLCODE中将存放错误代码。 2. 主变量 主变量说明的例: EXEC SQL BEGIN DECLARE SECTION ; char whnumb[5] char city[12] int wh_area EXEC SQL END DECLARE SECTION; 3. 游 标(cursor) 实 例 不使用游标的SQL语句 1、说明性语句 2、数据定义语句 3、数据控制语句 4. 查询结果为单记录的SELECT语句 5、非CURRENT形式的增删改语句 1)非CURRENT形式的UPDATE语句 2)非CURRENT形式的DELETE语句 3)INSERT语句 使用游标的SQL语句 1、 查询结果为多条记录的SELECT语句 1) 说明游标 2) 打开游标 3) 移动游标指针,然后取当前记录 4)关闭游标 5)释放游标 释放游标 DEALLOCATE 游标名 该命令的功能是删除由DECLARE说明的游标。该命令不同于CLOSE命令,CLOSE命令只是关闭游标,需要时还可以重新打开;而DEALLOCATE命令则要释放和删除与游标有关的所有数据结构和定义。 2. CURRENT 形式的UPDATE和DELETE语句 CURSOR不仅仅可以用来浏览查询结果,还可以用UPDATE语句修改CURSOR对应的当前行或用DELETE命令删除对应的当前行。 使用游标的UPDATE命令 UPDATE 表名 SET 列名={表达式|NULL} [,列名={表达式|NULL}…] WHERE CURRENT OF 游标名 使用游标的DELETE命令 DELETE FROM 表名 WHERE CURRENT OF 游标名 动态SQL简介 例 下面两个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; 非CURRENT形式的DELETE语句 使用主变量 WHERE子句 非CURRENT形式的DELETE语句可以操作多条元组 例8 某个学生退学了,现要将有关他的所有选课记录删除掉。 假设该学生的姓名已赋给主变量stdname EXEC SQL DELETE FROM SC WHERE Sno= (SELECT Sno F
您可能关注的文档
- 第二章原核生物分子克隆的宿主和载体系统.ppt
- 第二章国际商务活动中的基本.ppt
- 第二章基因工程制药新版4.ppt
- 第二轮复习高三化学《专题十有机物的组成与结构》.ppt
- 第二章婚姻的成立.ppt
- 第二部分专题六第四讲分析综合考点二归纳内容要点概括中心意思.ppt
- 第二章微生态平衡与人类健康.ppt
- 第二部分必修一Module2MyNewTeachers.ppt
- 第二章我国秦汉时期的园林.ppt
- 第二部分第一章影响消费者.ppt
- 中国电暖气市场全景评估及投资规划建议报告.docx
- 中国车辆智能交互终端行业市场深度研究及投资规划建议报告.docx
- 妇产科第四季度试卷(附答案).doc
- 门诊护理课件.pptx
- 黑龙江省龙江县《一级注册建筑师之建筑物理与建筑设备》资格考试必背100题完整题库带答案(夺分金卷).docx
- 职业道德与食品安全知识测试卷.doc
- 门槛课件教学课件.pptx
- 黑龙江省龙江县《一级注册建筑师之建筑物理与建筑设备》资格考试必背100题完整题库及答案.docx
- 黑龙江省龙江县《一级注册建筑师之建筑物理与建筑设备》考试必刷100题题库及答案(全优).docx
- 2025年中国电解电容行业市场发展监测及投资战略规划报告.docx
文档评论(0)