#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. oc 类型判断

    #import <UIKit/UIKit.h> #import "AppDelegate.h" @interface A : NSObject @end @implem ...

  2. 转multicast vs broadcast

    转自:http://blog.csdn.net/bloghome/article/details/4682984 一.multicast概述:   多媒体应用集成了声音.图形.动画.文本以及视频,这种 ...

  3. RHEL6.4 多路径绑定

    # rpm -qa | grep mapper #查看multipath是否安装 # lsmod | grep dm_multipath #查看multipath模块是否加载 # rpm -ivh | ...

  4. PLSQL_统计信息系列06_统计信息的历史和日志

    20150506 Created By BaoXinjian

  5. 删除vs中最近的项目的方法

    Microsoft Visual Studio中可以自行设置显示多少个最近打开的项目,但有些时候会建个项目做测试,用完了就删了,却总显示在“文件”-“最近的项目”菜单中以及“起始页”-“打开现有项目” ...

  6. 在windows下部署Redis 当作系统服务器自动启动

    部署Redis 其实Redis是可以安装成windows服务的,开机自启动,命令如下: redis-server --service-install redis.windows.conf 安装完之后, ...

  7. Linux-Ubuntu操作记录

    ubuntu 基本命令 1.帮助man      --help简单的帮助  如:man tar 或者tar --help      help command 较详细的帮助      man comma ...

  8. Spring里的FactoryBean和BeanFactory有啥区别?

    分别看这俩文章就知道了 Spring的FactoryBean使用 Spring加载xml配置文件的方式 ApplicationContext

  9. Spring Cloud构建微服务架构(四)分布式配置中心(续)

    先来回顾一下,在前文中我们完成了什么: 构建了config-server,连接到Git仓库 在Git上创建了一个config-repo目录,用来存储配置信息 构建了config-client,来获取G ...

  10. [hihoCoder] #1081 : 最短路径·一

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 万圣节的早上,小Hi和小Ho在经历了一个小时的争论后,终于决定了如何度过这样有意义的一天——他们决定去闯鬼屋! 在鬼屋门口 ...