首页 > 代码库 > 数据库 proc编程六
数据库 proc编程六
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <string.h> #include "sqlca.h" //指示变量:用来对宿主变量做说明 //指示变量作输入:当值-1,表示宿主变量是空值 //指示变量做输出:当值-1,表示返回的变量是空值 //语法格式:宿主变量 [indicator] 指示变量 其中indicator关键字可加可不加 //eg::name1 indicator :name_ind EXEC SQL BEGIN DECLARE SECTION; char *serverid="scott/123456@orcl"; int ida1[10]; int idb1[10]; varchar name1[10][20]; short name_ind[10];//定义指示变量,必须是short宿主类型 EXEC SQL END DECLARE SECTION; //错误处理升级函数 void sqlerr() { int ret=0; char stn[120]; //sqlfc:SQL语句的实际长度 size_t sqlfc,stmlen=120; EXEC SQL WHENEVER SQLERROR CONTINUE; ret=sqlgls(stn,&stmlen,&sqlfc); if(ret!=0) { 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"); 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[2]; //终端打印数据 int i=0; for(i=0;i<count;i++) { if(name_ind[i]==-1) { 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编程六
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。