数据库第八章数据库编程.ppt

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据库第八章数据库编程

例4 将某同学的所有选课记录删除。设该学生姓名已赋给主变量 Stdname EXEC SQL DELETE FROM SC WHERE Sno= (SELECT Sno FROM Student WHERE Sname=“stdname); 例5 某学生新选修了某门课程,将有关记录插入SC,假设学号已赋给主变量stdno,课程号已赋给主变量couno gradeid=-1; EXEC SQL INSERT INTO SC(Sno,Cno,Grade) VALUES(:stdno,:couno,:gr:gradeid); 由于该学生刚选修课程,未考试,成绩应为空,所以要把指示变量:gradeid赋为负值。 程序实例: 在嵌入式SQL中,SQL语句与主语言语句分工非常明确。SQL语句用来直接与数据库打交道,主语言语句用来控制程序流程以及对SQL语句的执行结果做进一步加工处理。SQL语句用主变量从主语言中接收执行参数,操纵数据库;SQL语句的执行状态由DBMS送到SQLCA中;主语言程序从SQLCA中取出状态信息,据此决定下一步操作;如果SQL语句从数据库中成功地检索出数据,则通过主变量传给主语言做进一步处理。SQL语言和主语言的不同数据处理方式通过游标来协调。 … EXEC SQL INCLUDE SQLCA;………(1)定义SQL通信区 EXEC SQL BEGIN DECLARE SECTION;(2)主变量说明开始 CHAR Sno(5); CHAR Cno(3); INT Grade; EXEC SQL END DECLARE SECTION; 主变量说明结束 Main() EXEC SQL DECLARE C1 CURSOR FOR (3)游标操作(定义游标) SELECT Sno,Cno,Grade FROM SC; /*从表中查询Sno,Cno,Grade*/ EXEC SQL OPEN C1; …… (4) 游标操作(打开游标) For (;;) EXEC SQL FETCH C1 INTO ::Sno,:Cno,:Grade; (5)游标操作(推进游标指针并将当前 数据放入主变量) If (sqlca.sqlcodeSUCCESS)…(6)利用SQLCA中的状态信息决定 何时退出循环 break; Printf(“Sno:%s,Cno:%s Grade:%d”,:Sno,:Cno, :Grade); /*打印查询结果*/ EXEC SQL CLOSE C1; (7)关闭游标 8.1.5 动态SQL简介 前面介绍的嵌入式SQL语句为编程提供了一定的灵活性,使用户可以在程序运行过程中根据实际需要输入WHERE 子句或HAVING子句中某些变量的值。这些SQL语句的共同特点是:语句中主变量的个数与数据类型在预编译时都是确定的,只有主变量的值是程序运行过程中动态输入的,称这类嵌入式SQL语句为静态SQL语句。 静态SQL语句提供的编程灵活性在许多情况下仍显得不足,有时需要编写更为通用的程序。例如,对SC表,任课教师想查询选修了他所授课程的学生学号及其成绩;班主任想查询某个学生选修的课程号及相应成绩;学生想查询自已某门课程的成绩。也就是说查询条件,要查询的属性列是不确定的,这时无法用一条静态SQL语句实现。 如果在预编译时下列信息不能确定,就必须使用动态SQL技术, 如(1)SQL语句正文 (2)主变量个数 (3)主变量的数据类型 (4)SQL语句中引用的数

文档评论(0)

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

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

1亿VIP精品文档

相关文档