欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    《嵌入式SQL补充》PPT课件.ppt

    • 资源ID:5582905       资源大小:283.49KB        全文页数:28页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《嵌入式SQL补充》PPT课件.ppt

    第6章数据库编程,嵌入式SQL,练习:,显示”王平“同学的学号和电话查询“数据库设计”课程的任课教师工号查询马建平授课的数据库设计班中“王一”的成绩,use ma_regi1Select id,name,phone from m_student where name=王一,use ma_regi2Select instructor$id from section where secton.code=(select code from course where title=“数据库设计”),Select student$id,section$call_no,grade from m_enroll Where m_enroll.section$call_no=(Select call_no from m_section where instructor$id=(select id from m_instructor where name=马建平)and course$code=(select code from m_course where title=数据库设计),Select student$id,section$call_no,grade from m_enroll where m_enroll.student$id=(select id from m_student where name=王一)and m_enroll.section$call_no=(Select call_no from m_section where instructor$id=(select id from m_instructor where name=马建平)and course$code=(select code from m_course where title=数据库设计),10.1 SQL语言的运行环境,SQL有两种使用方式:终端交互方式下使用交互式SQL嵌入在高级语言中使用嵌入式SQL(高级语言可以是C,PASCAL,COBOL等,称为宿主语言),有些操作对于交互式SQL是不可能的任务。SQL的表达能力相比高级语言有一定的限制,有些数据访问要求单纯使用SQL无法完成。(1)SQL在逐渐增强自己的表达能力,(2)太多的扩展会导致优化能力及执行效率的降低。非声明性动作实际的应用系统是非常复杂的,数据库访问只是其中一个部件。有些动作如与用户交互、图形化显示数据等只能用高级语言实现。,为什么使用嵌入式SQL?,将SQL访问数据库的能力,与宿主语言的过程化处理的能力进行综合将SQL语句嵌入宿主语言中引入变量的使用,嵌入式SQL的实现,有两种方法:扩充宿主语言的编译程序,使之能处理SQL语句;预处理方式(常用)预处理方式:将具有前缀的语句,转换成宿主语言的函数调用语句由宿主语言的编译器生成目标程序,嵌入式SQL执行过程,嵌入式SQL语句与主语句之间的通信,数据库与源程序工作单元之间通信主要包括:1.向主语言传递SQL语句的执行状态信息,使主语言能够据此控制程序流程,主要用SQL通信区实现;(SQL Communication Area,简称SQLCA)2.主语言向SQL语句提供参数,主要用主变量(host variable)实现;3.将SQL语句查询数据库的结果交主语言进一步处理,主要用主变量和游标(cursor)实现SQL通信区,主变量,游标的概念,存储设备上的数据库是用SQL语句存取的,数据库和宿主语言程序间信息的传递是通过共享变量实现的。,共享变量先由宿主语言程序定义,再用SQL的DECLARE语句声明,随后SQL语句就可引用这些变量。,共享变量是SQL和宿主语言的接口。,SQL规定,SQLSTATE是一个特殊的共享变量,起着解释SQL语句执行状况的作用,由5个字符组成的字符数组的标准(ISO)返回信息码。SQLSTATE:00000:成功非0:出错02000:未找到元组根据SQLSTATE的值可以控制程序的流向。,10.2 嵌入式SQL的使用规定,1、在程序中要区分SQL语句与宿主语言语句嵌入的SQL语句以EXEC SQL开始,以分号(;)或END_EXEC结束(根据具体语言而定)EXEC SQL END_EXEC举例:EXEC SQL delete from swhere sno=s10;,2、允许嵌入的SQL语句引用宿主语言的程序变量(共享变量),但有以下规定:(1)、宿主变量出现于SQL语句中时,前面加(:)以区别数据库变量(列名)。宿主变量可出现在SQL的数据操纵语句中可出现常数的任何地方,select等语句的into字句中。例:EXEC SQL select SNAME,AGE into:stu_name,:age from s where SNO=:input_no;,(2).共享变量的用法:先由宿主语言的程序定义,并用SQL的DECLARE语句说明。EXEC SQL BEGIN DECLARE SECTIONint stu_no;char stu_name30;int age;char SQLSTATE6EXEC SQL END DECLARE SECTION EXEC SQL select sname,age into:stu_name,:age from s where sno=:stu_no;,(3)SQL的集合处理方式与宿主语言单记录处理方式之间的协调SQL:一次一集合。C语言:一次一记录。游标:在查询结果的记录集合中移动的指针。若一个SQL语句返回单个元组,则不用游标。若一个SQL语句返回多个元组,则使用游标。,需要游标的数据操作,当select语句的结果中包含多个元组时,使用游标可以逐个存取这些元组。活动集:select语句返回的元组的集合。当前行:活动集中当前处理的那一行。游标即是指向当前行的指针。游标分类:滚动游标:游标的位置可以来回移动,可在活动集中取任意元组。非滚动游标:只能在活动集中顺序地取下一个元组。更新游标:数据库对游标指向的当前行加锁,当程序读下一行数据时,本行数据解锁,下一行数据加锁。,需要游标的数据操作,游标的使用方法:1、定义游标:定义一个游标,使之对应一个select语句。EXEC_SQL DECLARE CURSOR FOR END_EXEC2、打开游标:打开一个游标,执行游标对应的查询,结果集合为该游标的活动集。EXEC SQL OPEN/执行查询 END_EXEC/定位于第一行的前一行,需要游标的数据操作,3、游标推进语句:在活动集中将游标移到特定的行,并取出该行数据放到相应的宿主变量中 EXEC SQL FETCH FROM INTO END_EXEC4、游标关闭语句:关闭游标,释放活动集及其所占资源,使它不再和查询结果相联系。需要再使用该游标时,执行open语句。EXEC SQL CLOSE END_EXEC,10.3 嵌入式SQL的使用技术,1、不需要游标的SQL操作如果是insert、delete和update,加上前缀EXEC SQL 和END_EXEC 就可以嵌入在宿主语言中使用,对于select语句,如果已知结果为单元组,可以直接嵌入在主程序中使用。1)结果是一个元组的select语句EXEC SQL select SNAME,AGE into:stu_name,:age from s where sno=s10;,不需要游标的数据操作,insert语句 EXEC SQL insert into s values(:stu_no,:stu_name,:stu_age,:stu_sex);delete语句 EXEC SQL delete from s values age:stu_age;update语句EXEC SQL update sc set grade=grade+:raisewhere c#in(select c#from c where cname=MATHS);,(2)涉及游标的SQL DML语句(Data Manipulation Language)数据操纵语言,1)select语句的使用方式,当select语句查询结果是多个元组时,要用游标把多个元组一次一次的传递给宿主语言程序处理;具体过程:1、先定义一个游标与某个select语句对应。2、打开游标(活动状态),此时游标指向第一个元组之前。3、每执行一次fetch语句,游标指向下一个元组,并把其值送到共享变量,供程序处理,如此重复,直到所有查询结果处理完毕。4、最后用close语句关闭游标。,关闭的游标可以被重新打开,与新的查询结果相联系,没有打开前,不能使用。,2)对游标指向元组的修改或删除操作,在游标处于活动状态时,可以修改或删除游标指向的元组。,While(1)Exec sql Fetch FROM scx into:sno,:cno,:gif(NO_MORE_TUPLES)break;if(g60)Exec sql DELETE FROM sc WHERE CURRENT OF scx;elseif(g70)EXEC SQL UPDATE sc SET grade=70 WHERE CURRENT OF scx;g=70;printf(“sno:%s,cno:%s:%d”,sno,cno,g);,(3)卷游标的定义和使用,上面的游标,在推进时只能沿查询结果中元组顺序从头到尾一行行推进,并且不能返回,不便。SQL提供了卷游标,在推进卷游标时可以进退自如。1)卷游标的定义:EXEC SQL DECLARE SCROLL CURSOR FOR END_EXEC,卷游标的打开和关闭与以前一样。2)卷游标的推进语句:EXEC SQL FETCH NEXT|PRIOR|FIRST|LAST|CURRENT|RELATIVE N|ABSOLUTE M INTO END_EXEC,Relative 3:表示把游标从当前位置推进3行;Relative 5:表示把游标从当前位置返回5行;Absolute 4:表示把游标移向查询结果的第4行;Absolute 6:表示把游标移向查询结果的倒数第6行;,

    注意事项

    本文(《嵌入式SQL补充》PPT课件.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开