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()//游标操作{intdno,eno;//定义宿主变量charname[10];floatsalary;printf("输入部门号:");scanf("%d",&dno);EXECSQLDECLAREemp_cursorCURSORFORSelectempno,ename,salfromempwheredeptno=:dno;//定义游标EXECSQLOPENemp_cursor;//打开游标EXECSQLWHENEVERNOTFOUNDDObreak;//游标数据提取完毕后退出循环for(;{EXECSQLFETCHemp_cursorinto:eno,:name,:salary;//循环提取数据printf("name=%s(%d),salary=%.2f\n",name,strlen(name),salary);}EXECSQLCLOSEemp_cursor;//关闭游标printf("sqlca.sqlerrd[2]=%d\n",sqlca.sqlerrd[2]);//sqlca.sqlerrd[2]存放着Select语句作用的行数}
运行结果:
输入部门号:20
name = SMITH (9), salary = 800.00
name = JONES (9), salary = 2975.00
name = SCOTT (9), salary = 3000.00
name = ADAMS (9), salary = 1100.00
name = FORD (9), salary = 3000.00
sqlca.sqlerrd[2] = 5
关于Oracle中如何使用非滚动游标就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。