




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
融海咨询INFORMIX-ESQL/C应用开发第十八章在ESQL/C程序中使用插入游标本章介绍在INFORMIX-ESQL/C程序中定义和使用插入游标。有两种方法可以向数据库中添加记录:一次添加一条记录或一次添加多条记录。INSERT语句允许向数据库中插入一个记录。如果把INSERT语句放在循环中,用户可以向数据库插入多条记录,但是,对于每一次循环INSERT语句只执行一次。每次执行INSERT语句时,设置_sqibind结构,并把该结构包的内容送往数据库服务器,在那里进行I/O操作。如果有许多的记录要添加到表中,送往数据库服务器的结构包的数量和I/O操作的数目可能极大地影响系统的性能。由于这个原因,通常的INSERT语句无法提供一种对表进行多记录插入的灵活办法。如果INSERT语句可以把多个记录存放到一个缓冲区中,然后把缓冲区(一个包)送往数据库服务器进行一次“大”的插入,则该问题就被解决了。实际上,可以使用INFORMIX-ESQL/C的插入游标完成该项功能。插入缓冲区在通过INFORMIX-ESQL/C设置时,是依赖于系统的,而且它的大小不能改变。在一般情形里,它从1k和记录大小两者中取一大值。同插入游标相关联的语句有五个:l DECLARE l OPENl PUTl FLUSHl CLOSE这些语句将在后面讨论。DECLARE语句用来同INSERT语句相关联。如果有VALUES子句,它还绑定宿主变量的类型、大小和地址。该语句必须出现在任何对游标的引用之前,如果没有这样做,编译时会出错或给出警告信息。OPEN语句完成下面的工作:l 发送消息给服务器,让它检查INSERT语句中表和字段的合法性。- 是否有一个名称为manufact的表?- 要插入值的字段是否都属于该表?- 是否有权限插入记录?- 在数据段中打开插入缓冲区。l 如果游标已经打开,又对同一个游标执行OPEN语句,即试图重新打开游标,INFORMIX-ESQL/C写缓冲区中的内容,并重新初始化游标结构。全局变量sqlca.sqlerrd2的值被设置为实际插入到数据库中的记录的数目。l 可能已经注意到用于INSERT语句的OPEN语句的语法,同用于所有三种类型的SELECT游标:一般的、加锁的和滚动的一样。使用PUT语句,可以把一个记录存放到INSERT缓冲区,以后再插入到数据库表中。全局变量sqlca.sqlcode和sqlca.sqlerrd2指明每次PUT语句执行的结果。l 如果INFORMIX-ESQL/C仅把一个记录存放到插入缓冲区,它把sqlca.sqlcode和sqlca.sqlerrd2的值都设置为0。l 如果由于执行了PUT语句,使INFORMIX-ESQL/C进行一个FLUSH操作,并成功地把一组(整个缓冲区)记录插入到数据库中,则sqlca.sqlcode的值设置为0,而sqlca.sqlerrd2的值设置为所插入记录的数目。l 如果由于执行了PUT语句,使INFORMIX-ESQL/C进行一个FLUSH操作,并试图把整个缓冲区的记录插入到数据库中,但是操作不成功,则sqlca.sqlcode的值设置为负值(特别地,设置为错误信息的号码),而sqlca.sqlerrd2的值设置为成功插入到数据库中的记录的数目。在上次成功插入记录之后的缓冲区中的记录被丢弃。使用FLUSH语句使得INFORMIX-ESQL/C把缓冲区中的记录插入到数据库中,而不关闭游标。l 可以使用FLUSH语句强迫进行插入操作。但是,无法通过不使用FLUSH语句来延迟插入,因为缓冲区满了,INFORMIX-ESQL/C会自动腾空缓冲区。l 全局变量sqlca.sqlcode和sqlca.sqlerrd2指明每次FLUSH语句执行的结果。如果INFORMIX-ESQL/C成功地把缓冲区里的记录插入到数据库中,它把sqlca.sqlcode的值设置为0,而把sqlca.sqlerrd2的值设置为所插入记录的数目。如果INFORMIX-ESQL/C试图把缓冲区里的记录插入到数据库中,但是操作不成功,它把sqlca.sqlcode的值设置为负值(特别地,设置为错误信息的号码),而把sqlca.sqlerrd2的值设置为成功插入到数据库中的记录的数目。退出程序之前如果没有关闭游标,则缓冲区的内容不会写入到数据库中。自从上次FLUSH操作(不论是显式的还是隐式的操作)以来写入到缓冲区中而且仍保存在里面的记录会丢失。不要期望程序结束时会关闭缓冲区并把缓冲区中的内容写到数据库中。CLOSE语句腾空缓冲区,并使INSERT游标和INSERT缓冲区失效。缓冲区内存被释放。使用FREE语句释放游标结构占用的空间:$free insert_buf;l 全局变量sqlca.sqlcode和sqlca.sqlerrd2指明每次CLOSE语句执行的结果。l INFORMIX-ESQL/C没有提供全局变量来记录由INSERT游标成功插入到数据库中的记录的数目。如果想知道所插入记录的总数目,必须在程序中设置一个计数器,并在执行每次PUT语句时,增加计数器的值。l 在使用INSERT游标之前必须先用DECLARE语句来定义它。l 使用DECLARE语句定义游标后,用OPEN语句打开它。l 一旦打开了INSERT游标,就有了INSERT缓冲区,可以用PUT语句把数据放入INSERT缓冲区。l FLUSH语句是可选择的,通
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年国家基本公共卫生服务项目内部培训试卷(含答案)
- 2025年吉林省特岗教师招聘考试职位表模拟试卷及答案详解(网校专用)
- 2025甘肃武威市武威市从小学全科型教师培养计划毕业生中招聘事业单位人员46人模拟试卷完整参考答案详解
- 2025河南安阳市疾病预防控制中心招聘15人模拟试卷附答案详解(考试直接用)
- 2025湖北恩施州立强学校选聘副校长、教师8人考前自测高频考点模拟试题及完整答案详解一套
- 2025春季九江银行吉安分行招聘考前自测高频考点模拟试题及参考答案详解1套
- 2025年甘肃省兰州石佛沟国家森林公园景区招聘考前自测高频考点模拟试题附答案详解(完整版)
- 2025年台州玉环市卫生健康系统公开招聘卫技人员40人模拟试卷及参考答案详解
- 2025金华市金投集团有限公司招聘7人考前自测高频考点模拟试题完整答案详解
- 2025广东揭阳市惠来县校园现场招聘教师70人(编制)模拟试卷及参考答案详解一套
- 2025年共青团考试题库(附答案)
- 全国数智产业发展研究报告(2024-2025)
- 2025麻精等特殊管理药品考核(医、药、护人员)试题及答案
- 2025山东淄博博山区城乡公益性岗位招聘492人笔试备考试题及答案解析
- 中职技能大赛备赛培训课件
- 新版中华民族共同体概论课件第六讲“五胡入华”与中华民族大交融(魏晋南北朝时期)-2025年版
- 六堡茶课件教学课件
- 材料作文“交流登山成功的经验”(2024年河南省中考满分作文9篇附审题指导)
- 2025年中国宽温液晶屏行业市场全景分析及前景机遇研判报告
- 小学语文高段课程标准解读
- 提高痰标本送检合格率PDCA课
评论
0/150
提交评论