#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "sqlca.h" //普通游标是一条接一条查询数据
//滚动游标是跳跃着查询数据
//注意滚动游标和普通游标定义不同 typedef char ChararrType[]; EXEC SQL BEGIN DECLARE SECTION;
char *serverid="scott/123456@orcl";
EXEC SQL TYPE ChararrType is string();
int ida1;
int idb1;
ChararrType name1;
short name1_ind;
EXEC SQL END DECLARE SECTION; //错误处理升级函数
void sqlerr()
{
EXEC SQL WHENEVER SQLERROR CONTINUE;
printf("err reason:%.*s\r\n",sqlca.sqlerrm.sqlerrml,sqlca.sqlerrm.sqlerrmc);
EXEC SQL ROLLBACK WORK RELEASE;
} void main()
{
EXEC SQL WHENEVER SQLERROR DO sqlerr();
EXEC SQL connect:serverid ;
printf("connect ok!\r\n");
//1.定义滚动游标
EXEC SQL DECLARE c SCROLL CURSOR FOR
select ida,idb,name from t2;
//2.打开游标
EXEC SQL OPEN c;
//3.滚动提取数据 fetch into
//查询最后一条数据
exec sql fetch last c into :ida1,:idb1,:name1:name1_ind;
if(name1_ind==-)
{
memset(name1,,sizeof(name1));
strcpy(name1,"null");
}
printf("最后一条数据:ida=%d,idb=%d,name=%s\r\n",ida1,idb1,name1);
getchar(); //查询第一条数据
exec sql fetch first c into :ida1,:idb1,:name1:name1_ind;
if(name1_ind==-)
{
memset(name1,,sizeof(name1));
strcpy(name1,"null");
}
printf("第一条数据:ida=%d,idb=%d,name=%s\r\n",ida1,idb1,name1);
getchar(); //查询第3条数据
EXEC SQL FETCH ABSOLUTE c INTO :ida1,:idb1,:name1:name1_ind;
if(name1_ind==-)
{
memset(name1,,sizeof(name1));
strcpy(name1,"null");
}
printf("第3条数据:ida=%d,idb=%d,name=%s\r\n",ida1,idb1,name1);
getchar(); //查询当前游标相对位置是3的数据,(当前行下移3行)
exec sql fetch relative c into :ida1,:idb1,:name1:name1_ind;
if(name1_ind==-)
{
memset(name1,,sizeof(name1));
strcpy(name1,"null");
}
printf("相对位置是3的数据:ida=%d,idb=%d,name=%s\r\n",ida1,idb1,name1);
getchar(); //查询下一条数据
exec sql fetch next c into :ida1,:idb1,:name1:name1_ind;
if(name1_ind==-)
{
memset(name1,,sizeof(name1));
strcpy(name1,"null");
}
printf("下一条数据:ida=%d,idb=%d,name=%s\r\n",ida1,idb1,name1);
getchar(); //查询上一条数据
exec sql fetch prior c into :ida1,:idb1,:name1:name1_ind;
if(name1_ind==-)
{
memset(name1,,sizeof(name1));
strcpy(name1,"null");
}
printf("上一条数据:ida=%d,idb=%d,name=%s\r\n",ida1,idb1,name1); //4.关闭游标
EXEC SQL CLOSE c;
//提交断开连接
EXEC SQL COMMIT RELEASE;
system("pause");
}

数据库 proc编程八的更多相关文章

  1. 数据库 Proc编程二

    #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stri ...

  2. 数据库 proc编程六

    #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stri ...

  3. 数据库 proc编程五

    #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stri ...

  4. 数据库 proc编程四

    错误处理机制 当在Pro*C/C++应用程序中运行SQL语句中,Oracle会将最近执行的SQL语句的状态信息存储到状态变量SQLCODE.SQLSTATE或者SQLCA结构中. 当SQL语句执行成功 ...

  5. 数据库 proc编程九

    第一种动态sql EXEC SQL EXECUTE IMMEDIATE :psql; .仅适用于非select语句 .嵌入SQL语句中不能包含输入宿主变量 void main() { EXEC SQL ...

  6. 数据库 proc编程七

    #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stri ...

  7. 数据库 proc编程三

    #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stri ...

  8. Oracle Proc编程性能优化经验

    Proc 是Oracle提供的一种数据库操作的API.它是基于ESql技术的,需要预编译后才可以变成普通c代码,非常不直观,使用起来不太方便,阅读也存在困难. 因为这些问题导致程序员平时开发中会出现一 ...

  9. Manual | BSD手册| Linux手册 | 数据库手册 | 编程开发手册 | WEB开发手册 | 软件应用手册 | 网络技术手册 | GNU手册

    豆豆手册 □ BSD手册 □ Linux手册 □ 数据库手册 □ 编程开发手册 □ WEB开发手册 □ 软件应用手册 □ 网络技术手册 □ GNU手册 在线手册 首 页 BSD手册   ·FreeBS ...

随机推荐

  1. AP_创建标准发票后会计科目的变化(概念)

    2014-06-04 Created By BaoXinjian 1. 创建Invoice,并查看所创建的科目

  2. OGG_Oracle GoldenGate简介(概念)

    2014-03-01 Created By BaoXinjian

  3. Nginx 的线程池与性能剖析【转载】

    正如我们所知,NGINX采用了异步.事件驱动的方法来处理连接.这种处理方式无需(像使用传统架构的服务器一样)为每个请求创建额外的专用进程或者线程,而是在一个工作进程中处理多个连接和请求.为此,NGIN ...

  4. USB的中断说明

    STM32的USB模块可以产生三种中断:USB唤醒中断.USB高优先级中断和USB低优先级中断,在STM32的参考手册中没有详细说明这三种中断对应哪些事件,现说明如下: 1)USB唤醒中断:在中断向量 ...

  5. Android开发10——Activity的跳转与传值

    Activity跳转与传值,主要是通过Intent类,Intent的作用是激活组件和附带数据. 一.Activity跳转 方法一Intent intent = new Intent(A.this, B ...

  6. hadoop详细了解5个进程的作用

    1.job的本质是什么?2.任务的本质是什么?3.文件系统的Namespace由谁来管理,Namespace的作用是什么?4.Namespace 镜像文件(Namespace image)和操作日志文 ...

  7. 【转】使用create_project.py创建cocos2d项目时出错

    命令格式:create_project.py -project 项目名字 -package 包名 -language cpp,例如: create_project.py -project HelloC ...

  8. 面向对象中private理解

    我们大家都知道思想訪问修饰符.public,protected,private,那么我们知道了继承中private私有属性能够继承吗?我么接下来做个小实验 class A {     private ...

  9. [na]代理arp导致的问题(路由卷)

    已过期... 一 理论概述 \ 二 实验 实验一:代理arp在nat中的作用(实验发现一下是错的) 实验二.代理arp导致的问题 pc访问服务器想让走路由器(写32bit静态路由),右边的R arp ...

  10. Chisel Tutorial(七)——模块

    下面内容根据2015-7-10版的Chisel 2.2 Tutorial整理 Chisel中的模块与Verilog HDL中模块的概念十分相似,都是用层次结构描写叙述电路.Chisel中的module ...