




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
esql c 编编程程培培训训教教材材 esql c 编程培训教材 版本 1 0 1 i 目目 录录 编写说明编写说明 1 目目 录录 i 1 概述概述 1 1 1 sql语句嵌入方法 1 1 2 宿主变量 1 1 3 头文件 2 1 4 错误诊断 2 1 5 esql c程序的编译 4 2 c 语言程序中嵌入的语言程序中嵌入的 sql 语句语句 5 2 1 有关数据库和表的权限 5 2 1 1 选择数据库 database 5 2 1 2 关闭数据库 close database 5 2 1 3 创建表 create table 5 2 1 4 删除表 drop table 5 2 2 数据查询语句select 5 2 3 插入语句insert 7 2 4 数据修改语句update 7 2 5 数据删除语句delete 7 2 6 prepare语句 8 3 游标游标 8 3 1 滚动游标 8 3 1 1 declare 8 3 1 2 open 8 3 1 3 fetch 9 3 1 4 close 10 3 1 5 free 10 3 2 更新游标 10 esql c 编程培训教材 版本 1 0 1 1 1 概述概述 1 1 sql语句嵌入方法语句嵌入方法 任何可以交互式输入的sql语句 例如数据定义语句 数据检索语句 数据 控制语句等 都可以嵌入到c程序中 可以使用两种方法指明sql语句 一种是在sql语句之前用 作为前缀 如 include main database book delete from book where book num 100 另一种是在sql语句之前使用ansi标准的exec sql关键字来标识 如 include main exec sql database book exec sql delete from book where book num 100 1 2 宿主变量宿主变量 sql 语句中可以有变量 变量可以出现在交互式 sql 语句中常量可以出现 的任何位置 sql 语句中的这种变量称为宿主变量 informix esql c 程序 通过宿主变量在 c 语句和 sql 语句中传递数据 一般情况下 在宿主变量前加 如 esql c 编程培训教材 版本 1 0 1 2 exec sql update book set book price fnewprice 在定义宿主变量时也需要使用如下声明语句 exec sql begin declare section int inumber char name 10 struct student int no char name 10 stu exec sql end declare section 另外 宿主变量可以像 c 语言变量一样用在 c 语言表达式中 如 exec sql begin declare section char dbname 11 exec sql end declare section gets dbname 80 exec sql database dbname 1 3 头文件头文件 informix esql c 提供了许多头文件 其中最常用的是 sqlca h 它用于 确定 sql 语句的返回值和 sql 语句执行后的其他信息 在 esql c 程序中是 必须包含的 包含方法是 exec sql include sqlca 另外 如果自定义的 头文件中包含 sql 语句或宿主变量的定义 也必须用同样的方法进行说明 如 exec sql include filename 如果源文件在某个路径下 应将其用引号括起来 如 include exec sql include sqlca exec sql include xyz h exec sql include users test test h esql c 编程培训教材 版本 1 0 1 3 1 4 错误诊断错误诊断 在 informix esql c 程序中执行一条 sql 语句时 数据库服务器会返回 几种信息 反映 sql 语句的执行情况 包括 该 sql 语句的完成状况 有关性能的信息 有关可能发生或已经发生的事情的警告 这些返回信息传送到一个称为 sqlca 的结构中 该结构定义在 sqlca h 中 struct sqlca s longsqlcode charsqlerrm 72 charsqlerrp 8 longsqlerrd 6 struct sqlcaw s charsqlwarn0 charsqlwarn1 charsqlwarn2 charsqlwarn3 charsqlwarn4 charsqlwarn5 charsqlwarn6 charsqlwarn7 sqlwarn sqlca 上述 sqlca 结构中的信息反映了 informix esql c 语句执行后的情况 成功或异常 其中异常情况包括三种 1 执行成功 但没有找到记录 2 执行成功 但出现警告信息 3 执行结果失败 可通过 sqlcode 来检测 sql 语句的执行结果 其含义如下 sqlcode 0 时 说明语句执行成功 esql c 编程培训教材 版本 1 0 1 4 sqlcode 100 说明在执行 select 或 fetch 查找操作后返回零记 录 在 sqlca h 中将宏 sqlnotfound 定义为 100 sqlcode 0 时 说明 sql 语句执行后有错误发生 以下是一个简单的 esql c 程序 1 5 esql c程序的编译程序的编译 用 informix esql c 语句编写的程序在使用 c 编译程序之前必须预处理 预处理程序把嵌入的语句转换成 c 语言程序 informix esql c 提供了编译命令 esql 用来编译 informix esql c include exec sql include sqlca main exec sql begin declare section char fname 15 char lname 20 exec sql end declare section int i printf this is a esql c program n exec sql database book exec sql declare democursor cursor for select fname lname into fname lname from bookname where lname c exec sql open democursor for exec sql fetch democursor if sqlca sqlcode break printf s s n fname lname close demecursor printf nprogram over n esql c 编程培训教材 版本 1 0 1 5 源代码 这些源代码的名称必须具有 ec 后缀才能进行转换 转换后的结果存在 与源文件同名但后缀为 c 的文件中 然后调用 c 编译器将 c 文件转换成以 o 为后缀的目标文件 最后调用 c 语言标准库和 informix esql c 库以及用户 自己所链接的库生成可执行文件 2 c语言程序中嵌入的语言程序中嵌入的sql语句语句 2 1 有关数据库和表的权限有关数据库和表的权限 2 1 1 选择数据库 选择数据库 database 功能 database 语句用来选择已存在的数据库 使其成为当前数据 库 格式 database database name 2 1 2 关闭数据库 关闭数据库 close database 功能 关闭当前数据库 格式 close database 2 1 3 创建表 创建表 create table 功能 在当前数据库中建立一张新表 格式 create temp table table name column name datatype not null 2 1 4 删除表 删除表 drop table 功能 删除一个已存在的表 以及相关的索引和数据 格式 drop table table name esql c 编程培训教材 版本 1 0 1 6 2 2 数据查询语句数据查询语句select 数据查询语句 select 的执行结果有三种情况 没有满足条件的记录 返回单个记录 返回多个记录 前两种情况可以使用单个的 select 语句 最后一种情况必须使用游标进 行查询 格式 select 子句 into 子句 from tablelist where filterjoin group by columngrouplist having groupfilter order by orderfilter into termtable 说明 into 子句检索出来的数据存放的宿主变量 into temptable将检索处理的结果存在至临时表 select 如果返回多个记录 必须通过游标方式进行处理 如果返回单条 记录 我们将该语句称为单记录 select 语句 如果有记录返回 sqlca sqlcode 则被设置为 0 如果没有满足条件的记录 sqlca sqlcode 则被设置为 sqlnotfound 以下是对单记录 select 语句操作的示例 exec sql begin declare section char fj 11 zh 10 xb 20 double zhxb exec sql end declare section exec sql select fj zh xb zhxb into fj zh xb zhxb from book where book num 100 esql c 编程培训教材 版本 1 0 1 7 if sqlca slqcode sqlnotfound printf 没有满足条件的记录 n if sqlca sqlcode 0 printf 书名 s n fj printf 作者 s n zh printf 出版社 s n xb printf 定价 2f n zhxb 2 3 插入语句插入语句insert 功能 insert 语句的主要目的是在表中增加一条或多条新记录 格式 insert into table name columnlist values valuelist 示例 exec sql insert into customer customer num fname lname company values 0 firstname lastname john corp 2 4 数据修改语句数据修改语句update 功能 update 语句用来改变一个或多个记录中的一个或多个字段的值 格式 update table name set column name expr column list expr list where condition 示例 exec sql update customer set fname lname fname lname where customer num cust esql c 编程培训教材 版本 1 0 1 8 2 5 数据删除语句数据删除语句delete 功能 删除语句 delete 从数据库表中删除一个或多个记录 格式 delete from table name where condition 示例 exec sql delete from book where book num booknum 2 6 prepare语句语句 功能 prepare 语句显示地请求对 sql 语句进行语法分析 格式 prepare statement name from string spec 示例 exec sql prepare del from delete from book where boo num if sqlcode 0 sqlcode sqlca sqlcode printf prepare del error sqlcode d n sqlcode exit 1 while exec sql execute del using book10 3 游标游标 3 1 滚动游标滚动游标 3 1 1 declare declare 定义一个游标 它给游标命名并把一个查询同一个游标相关联 esql c 编程培训教材 版本 1 0 1 9 格式 declare cursor name cursor for selectstmt 示例 exec sql declare c1 cursor for select xy1 xy2 into xy1 xy2 from fj 3 1 2 open open 语句激活游标并开始执行相关联的 select 语句 格式 open cursor name 示例 exec sql declare custptr scroll cursor for select from customer where zipcode zip exec sql open custptr 3 1 3 fetch fetch 语句把已打开的游标移到一个新的位置 并把记录的字段值存放到 into 子句说明的宿主变量中 格式 fetch position cursor name into hostvarlist 说明 对于一个滚动游标 该新位置可以是活动集中的任意位置 1 绝对位置 first取得活动集中的第一个记录 last取得活动集中的最后一个记录 current取得当前记录 absolute n 取得活动集的第 n 个记录 2 相对位置 next取得活动集的下一个记录 previous取得活动集的前一个记录 relative n取得相对当前记录的第 n 个记录 负值向前 正值 向后数 示例 esql c 编程培训教材 版本 1 0 1 10 exec sql declare custptr scroll cursor for select customer num lname fname from customer where zipcode zip exec sql open custptr exec sql fetch next custptr into cnum lname fname 当游标成功地移动到指定位置且在该位置有记录时 则 sqlcode 值为 0 如果没有记录 则返回 sqlnotfound 100 3 1 4 close close 语句关闭游标 格式 close cursor name 示例 exec sql declare custptr scroll for select cnum lname fname from customer where zipcode zip exec sql open custptr exec sql fetch next custptr into cnum lname fname exec sql close custptr 关闭游标之后 除了 open 和 free 语句之外 所有其它语句都不能再使 用 3 1 5 free free 语句释放空间和数据服务器中的游标资源 格式
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 防尘袋采购合同协议书
- 智能分类垃圾桶创业计划书
- 鱼泡网商业计划书
- 养殖厂合同协议书
- syb创业计划书-完整版
- 高空贴瓷片协议书合同
- 送水合同协议书范本
- 配音合同协议书范本下载
- 奶牛生产瘫痪的防治
- 2025年鱼类市场需求分析
- 道路提升改造、公路工程 投标方案(技术标)
- 木香防治病虫害对策
- 《筵席设计与制作》考试复习题库(含答案)
- DZ/T 0462.6-2023 矿产资源“三率”指标要求 第6部分:石墨等26种非金属矿产(正式版)
- 交通出行车费报销单模板
- 中国民族钢琴艺术鉴赏智慧树知到期末考试答案章节答案2024年西安交通大学
- 咖啡文化与饮品调制智慧树知到期末考试答案2024年
- (高清版)DZT 0319-2018 冶金行业绿色矿山建设规范
- 体检中心医护培训课件
- 2024年中国人保财险全系统陕西分公司招聘笔试参考题库含答案解析
- 医院培训课件:《护患沟通技巧》
评论
0/150
提交评论