Oracle中怎么使用使用滚动游标
Oracle中怎么使用使用滚动游标,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
/*功能:演示了Oracle滚动游标操作定义游标时注意事项:1.DECLARECURSOR语句必须是使用游标的第一条语句2.游标名称是一个标识符,而不是宿主变量,其长度是可以任意的,但只有前31个字符有效3.游标所对应的SELECT语句不能包含INTO子句4.游标语句(DECLARE,OPEN,FETCH,CLOSE)必须在同一个预编译单元内*/#include<stdio.h>#include<string.h>#include<stdlib.h>#include<sqlca.h>#pragmacomment(lib,"orasql10.lib")intconnect();voidcursor();voidsql_error();voidmain(){EXECSQLWHENEVERSQLERRORDOsql_error();//安装错误处理句柄if(connect()==0){cursor();EXECSQLCOMMITRELEASE;//提交事务,断开连接}elseprintf("连接失败\n");}intconnect()//connecttooracledatabase{charusername[10],password[10],server[10];strcpy(username,"scott");strcpy(password,"zzb888888");strcpy(server,"orcl");EXECSQLCONNECT:usernameIDENTIFIEDBY:passwordUSING:server;if(sqlca.sqlcode==0)return0;elsereturnsqlca.sqlcode;}voidsql_error()//printerrorinfomation{printf("%.*s\n",sqlca.sqlerrm.sqlerrml,sqlca.sqlerrm.sqlerrmc);}voidcursor()//游标操作{inteno;//定义宿主变量charname[10],action;floatsalary;EXECSQLDECLAREemp_cursorSCROLLCURSORFORSelectempno,ename,salfromemp;//定义游标EXECSQLOPENemp_cursor;//打开游标EXECSQLWHENEVERNOTFOUNDDOBREAK;//游标数据提取完毕后退出循环for(;{printf("\nF:第一行,P:前一行,N:下一行,L:最后一行\n");printf("C:当前行,X:退出\n请输入具体操作:");scanf("%c",&action);fflush(stdin);switch(action){case'F':case'f':EXECSQLFETCHFIRSTemp_cursorinto:eno,:name,:salary;break;case'P':case'p':EXECSQLFETCHPRIORemp_cursorinto:eno,:name,:salary;break;case'N':case'n':EXECSQLFETCHNEXTemp_cursorinto:eno,:name,:salary;break;case'L':case'l':EXECSQLFETCHLASTemp_cursorinto:eno,:name,:salary;break;case'C':case'c':EXECSQLFETCHCURRENTemp_cursorinto:eno,:name,:salary;break;case'X':case'x':EXECSQLCLOSEemp_cursor;return;}printf("name=%s(%d),salary=%.2f\n",name,strlen(name),salary);}printf("sqlca.sqlerrd[2]=%d\n",sqlca.sqlerrd[2]);//sqlca.sqlerrd[2]存放着Select语句作用的行数}
看完上述内容,你们掌握Oracle中怎么使用使用滚动游标的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。