当前位置:Gxlcms > 数据库问题 > 数据库 proc编程六

数据库 proc编程六

时间:2021-07-01 10:21:17 帮助过:32人阅读

_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编程六

标签:erro   turn   into   string   reason   for   tor   fail   连接   

人气教程排行