网站大量收购闲置独家精品文档,联系QQ:2885784924

第八章数据库编程.ppt

  1. 1、本文档共52页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

文档评论(0)

junjun37473 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档