#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "sqlca.h" //注意:在oracle中,如果使用char定长类型,那么数据库中的数据如果不足20,那么oracle默认以空格填充
//varchar是变长类型,不足20,oracle不会填充空格
//varchar本质上是typedef struct { unsigned short len; unsigned char arr[1]; } varchar;是个结构
//但是在做输入(例如insert into)的时候,char和varchar没有区别 EXEC SQL BEGIN DECLARE SECTION;
char *serverid="scott/123456@orcl"; int deptno1[];
char dname1[][];
char loc1[][]; int deptno2[];
varchar dname2[][];
varchar loc2[][]; int ida1[];
int idb1[];
char name1[][];
EXEC SQL END DECLARE SECTION; //错误处理升级函数
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");
//安装没有找到错误函数,没有找到数据(比如要查询100条数据,但是数据库只有5条),继续执行下一条语句
EXEC SQL WHENEVER NOT FOUND CONTINUE;
//执行多条查询--
//into关键字解释:因为要将查询出来的数据放入宿主变量中
EXEC SQL select deptno,dname,loc into :deptno2,:dname2,:loc2 from dept;
//sqlca.sqlerrd[2]获取SQL语句查询到的记录数
int count=sqlca.sqlerrd[];
//终端打印数据
int i=;
for(i=;i<count;i++)
{
printf("第%d条:deptno=%d,dname=%s,loc=%s\r\n",i,deptno2[i],dname2[i].arr,loc2[i].arr);
}
//批量插入
for(i=;i<;i++)
{
ida1[i]=i+;
idb1[i]=i*;
strcpy(name1[i],"hello");
}
//for 5:表示只插入5条数据
//bug提示:有时候insert 操作会卡住,这可能是由于表中已经有相同的主键了,约束下无法插入
EXEC SQL for insert into t2 values(:ida1,:idb1,:name1);
//提交断开连接
EXEC SQL COMMIT RELEASE;
system("pause");
}

最新文章

  1. 怎么写makefile?(转)
  2. css 清除浮动 clear
  3. angular run()运行块
  4. 【转】svn服务器IP修改后,本地怎么跟新svn同步,svn relocate 操作
  5. Delaunay三角剖分
  6. Spring in action笔记
  7. php对mongo操作问题
  8. hdu1466 计算直线的交点数
  9. ZOJ-1456 Minimum Transport Cost---Floyd变形+路径输出字典序最小
  10. 与其想当然的 overdesign,不如自己动手做个试验
  11. Qt核心机制与原理
  12. 剑指offer(49)把字符串转换成整数。
  13. 华为机型cordova-plugin-image-picker读取图库闪退
  14. 37.scrapy解决翻页及采集杭州造价网站材料数据
  15. Hamburger
  16. 【Ray Tracing The Next Week 超详解】 光线追踪2-3
  17. SQL —— 获取重复某个字段的第一条记录
  18. UVa 116 单向TSP(多段图最短路)
  19. AI,DM,ML,PR的区别与联系
  20. C++中函数的返回值

热门文章

  1. 【Cocos2d-x 3.0】游戏开发之android交叉编译
  2. ajax local.href不跳转的原因之一
  3. Python set特点
  4. mysql 流程函数 存储引擎 InnoDB简单特性
  5. 有关索引的DMV(转)
  6. java的重写、重载、覆盖的差别
  7. ERP,SCM,CRM,BRP,OMS,WMS 企业管理的6大核心系统
  8. const与#define、结构体对齐、函数重载name mangling、new/delete 等
  9. SQL server 2008定期的备份数据库及删除job
  10. c# 隐藏Tab控件的标签