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

沈阳工业大学信息科学与工程学院数据库原理与应用课件 第八章.ppt

沈阳工业大学信息科学与工程学院数据库原理与应用课件 第八章.ppt

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第八章 数据库编程 嵌入式SQL 存储过程(初步了解) ODBC编程(初步了解) 嵌入式SQL 实现复杂应用:高级语言计算完备性+SQL语言的高效处理 主语言(宿主语言), 嵌入式SQL 区分SQL语句和主语言的语句 SQL语句可以应用主变量 SQL语句的查询结果是一个集合,嵌入式SQL提供游标(Cursor) 机制来处理查询结果 嵌入式SQL的处理过程:数据库厂商提供 预编译器 修改和扩充主语言编译器 嵌入式SQL 例如: 关系DBMS一般提供一批用宿主语言编写的SQL函数,组成SQL函数库, 供应用程序调用DBMS的各种功能 嵌入式SQL SQL函数库实际上是DBMS向应用程序提供的一种接口, 称为调用级接口(CLI) 预编译器将嵌入SQL语句编译成宿主语言对SQL函数的调用 95年ISO公布了一个CLI标准, 作为SQL-92的一个附件,称为SQL-92/CLI或CLI95, 新的RDBMS都支持该标准, 标准中只规定了函数的定义 嵌入式SQL 嵌入式SQL 的一般格式 所有SQL语句必须加前缀EXEC SQL和语句结束标志(C语言中一般是“;” 号) EXEC SQL select Sno from SC where Cno=‘1’; 嵌入式SQL语句可分为: 可执行语句和说明性语句 嵌入式SQL语句与主语言语句之间的通信 SQL通信区(SQLCA): 每个SQL语句执行后, 系统要反馈给应用程序若干信息, 这些信息存于SQLCA中 嵌入式SQL 应用程序从SQLCA中取出这些状态信息, 并据此决定应用程序的进一步执行 SQLCA是一个数据结构, 由系统定义, 程序员只需在程序中加入 “EXEC SQL INCLUDE SQLCA;” 便可以引用其中的分量 分量SQLCODE是一整型变量, 系统将每个SQL语句执行成功与否的结果赋给该变量 0: 成功 正数: 已执行但有异常(其中100表示没取到数) 负数:表示SQL语句因某些错误而未被执行, 负数的值表示错误的类别 嵌入式SQL 主变量(宿主变量) 嵌入式SQL使用主语言的变量输入/输出数据, 主变量的说明(可以和属性同名) 例子: EXEC SQL BEGIN DECLARE SECTION; char Sno[7], char givenSno[7], char Cno [2], float Grade, short GradeIn; EXEC SQL END DECLARE SECTION; 主变量的使用 在SQL中使用主变量时, 主变量前以定加“:” 嵌入式SQL 主变量的使用 在SQL中使用主变量时, 主变量前以定加“:” 例子: EXEC SQL select Sno, Cno, Grade into :Sno, :Cno, :Grade from SC where Sno=:givenSno; 指示变量(主变量的一种) 一个主变量可以附带一个指示变量, 指示变量也必须说明, 使用时放在要主变量之后 例子: 嵌入式SQL EXEC SQL select Sno, Cno, Grade into :Sno, :Cno, :Grade :GradeIn from SC where Sno=:givenSno; 指示主变量的取值情况(是否为空值), 当GradeIn0时, 表明成绩为空值 指示变量不允许用在where子句中 游标 SQL与主语言具有不同的处理方式, 用游标协调 游标区是系统为用户开设的一个数据缓冲区, 存放SQL语句的执行结果, 每个游标区有一个名字 游标的说明和使用(举例说明) 嵌入式SQL EXEC SQL DECLARE cursor1 CURSOR FOR select Sno, Cno, Grade into :Sno, :Cno, :Grade from SC; EXEC SQL OPEN cursor1; while(1) { EXEC SQL FETCH cursor1; if(sqlca.sqlcode)0 break; printf(“Sno

文档评论(0)

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

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

1亿VIP精品文档

相关文档