数据库 proc编程六
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "sqlca.h" //指示变量:用来对宿主变量做说明
//指示变量作输入:表示宿主变量是空值
//指示变量做输出:当值-1,表示返回的变量是空值
//语法格式:宿主变量 [indicator] 指示变量 其中indicator关键字可加可不加
//eg::name1 indicator :name_ind EXEC SQL BEGIN DECLARE SECTION;
char *serverid="scott/123456@orcl"; int ida1[];
int idb1[];
varchar name1[][];
short name_ind[];//定义指示变量,必须是short宿主类型 int ida2;
int idb2;
varchar name2[];
short name2_ind;//定义指示变量,做输入
EXEC SQL END DECLARE SECTION; int sqlgls(void *,void *,void *); //错误处理升级函数
void sqlerr()
{
int ret=;
char stn[];
//sqlfc:SQL语句的实际长度
size_t sqlfc,stmlen=;
EXEC SQL WHENEVER SQLERROR CONTINUE;
ret=sqlgls(stn,&stmlen,&sqlfc);
if(ret!=)
{
printf("sqlgls() failed ! err code: %d\r\n",ret);
return ;
}
printf("出错的SQL语句是:%.*s\r\n",stmlen,stn);
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");
//指示变量做输入,插入空值数据
ida2=;
idb2=;
//注意:就算设置了指示变量的值不是-1,宿主变量也会变成空值存入数据库
name2_ind=;
exec sql insert into t2 values(:ida2,:idb2,:name2:name2_ind);
//提交事务
EXEC SQL COMMIT;
getchar();
EXEC SQL WHENEVER NOT FOUND CONTINUE;
//指示变量做输出
EXEC SQL select ida,idb,name into :ida1,:idb1,:name1:name_ind from t2;
//sqlca.sqlerrd[2]获取SQL语句查询到的记录数
int count=sqlca.sqlerrd[];
//终端打印数据
int i=;
for(i=;i<count;i++)
{
if(name_ind[i]==-)
{
printf("第%d条:ida1=%d,idb1=%d,name1=%s\r\n",i,ida1[i],idb1[i],"空值");
}else
{
printf("第%d条:ida1=%d,idb1=%d,name1=%s\r\n",i,ida1[i],idb1[i],name1[i].arr);
} }
//提交断开连接
EXEC SQL COMMIT RELEASE;
system("pause");
}
数据库 proc编程六的更多相关文章
- 数据库 Proc编程二
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stri ...
- 数据库 proc编程五
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stri ...
- 数据库 proc编程四
错误处理机制 当在Pro*C/C++应用程序中运行SQL语句中,Oracle会将最近执行的SQL语句的状态信息存储到状态变量SQLCODE.SQLSTATE或者SQLCA结构中. 当SQL语句执行成功 ...
- 数据库 proc编程九
第一种动态sql EXEC SQL EXECUTE IMMEDIATE :psql; .仅适用于非select语句 .嵌入SQL语句中不能包含输入宿主变量 void main() { EXEC SQL ...
- 数据库 proc编程八
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stri ...
- 数据库 proc编程七
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stri ...
- 数据库 proc编程三
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stri ...
- JDBC编程六部曲
今天初学jdbc,明白了大致的编程流程,在此总结一下: JDBC编程可以分为六步——六部曲: * 第一步:注册驱动. * 1.1 获取驱动对象 * 1.2 注册驱动 * 第二步:获取数据库连接 * 第 ...
- Oracle Proc编程性能优化经验
Proc 是Oracle提供的一种数据库操作的API.它是基于ESql技术的,需要预编译后才可以变成普通c代码,非常不直观,使用起来不太方便,阅读也存在困难. 因为这些问题导致程序员平时开发中会出现一 ...
随机推荐
- xmpp 服务器配置 open fire for windows 及 spark 测试
xmpp 服务器配置 open fire for windows 此文章为 XMPP windows服务器配置,使用的是 open fire 3.9.1.exe 1: 下载 open fire ope ...
- Jquery重新学习之五[操作JSON数据]
Jquery操作Json格式的数据在我们平时的项目中也经常运用:最近看Jquery权威指南中就有一章节是对这方面的整理总结:最后通过一个Asp.net结合一般处理程序ashx的实例,基本上能满足项目中 ...
- 有关WINDOWS XP登录密码的几种方法
网上关于破解WINDOWS XP登录密码的几种方法很多,但许多根本不行.我现在总结自己试过几种,这几种方法其实均比较菜的,但可行的.WINDOWS XP登录是由SAM 文件管理的,总体来说“山姆大叔” ...
- Linux操作系统中多线程的同步
1 互斥锁 互斥锁用来保证一段时间内只有一个线程在执行一段代码.必要性显而易见:假设各个线程向同一个文件顺序写入数据,最后得到的结果一定是灾难性的. 先看下面一段代码.这是一个读/写程序,它们公用一个 ...
- 逻辑回归的相关问题及java实现
本讲主要说下逻辑回归的相关问题和详细的实现方法 1. 什么是逻辑回归 逻辑回归是线性回归的一种,那么什么是回归,什么是线性回归 回归指的是公式已知,对公式中的未知參数进行预计,注意公式必须是已知的,否 ...
- Unity3D游戏开发之SQLite让数据库开发更简单
各位朋友大家好.欢迎大家关注我的博客,我是秦元培,我是博客地址是http://blog.csdn.net/qinyuanpei.在经历了一段时间的忙碌后,博主最终有时间来研究新的东西啦,今天博客向和大 ...
- EasyUI combobox的panelHeight自动高度
在使用EasyUI的时候,有时会用到combobox组件,这里的记录数不是很固定,设置为auto可能会被挡住,设置固定高度时,option很少时,也很丑 所以这里给出我自己自动调整combobox的p ...
- unity, asset operations
//----create asset //ref: http://wiki.unity3d.com/index.php?title=CreateScriptableObjectAsset CmyScr ...
- 每日英语:The Perils Of Giving Advice
I know what you should do and here's my advice. How many times have you heard that (and groaned)? gr ...
- ntoj 808 蚂蚁的难题(八)
蚂蚁的难题(八) 时间限制:2000 ms | 内存限制:65535 KB 难度:5 描述 蚂蚁是一个古玩爱好者,他收藏了很多瓶瓶罐罐. 有一天,他要将他的宝贝们一字排开, 摆放到一个长度为L的展 ...