温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Oracle中怎么使用使用滚动游标

发布时间:2021-08-03 17:03:41 来源:亿速云 阅读:213 作者:Leah 栏目:数据库

Oracle中怎么使用使用滚动游标,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

/*	功能:演示了Oracle滚动游标操作	定义游标时注意事项:	1. DECLARE CURSOR语句必须是使用游标的第一条语句	2. 游标名称是一个标识符,而不是宿主变量,其长度是可以任意的,但只有前31个字符有效	3. 游标所对应的SELECT语句不能包含INTO子句	4. 游标语句(DECLARE,OPEN,FETCH,CLOSE)必须在同一个预编译单元内 */ #include <stdio.h> #include <string.h> #include <stdlib.h> #include <sqlca.h> #pragma comment(lib, "orasql10.lib") int connect(); void cursor(); void sql_error(); void main() {	EXEC SQL WHENEVER SQLERROR DO sql_error();	// 安装错误处理句柄	if(connect() == 0)	{	cursor();	EXEC SQL COMMIT RELEASE;	// 提交事务,断开连接	}	else	printf("连接失败\n"); } int connect()	// connect to oracle database {	char username[10], password[10], server[10];	strcpy(username, "scott");	strcpy(password, "zzb888888");	strcpy(server, "orcl");	EXEC SQL CONNECT :username IDENTIFIED BY :password USING :server;	if(sqlca.sqlcode == 0)	return 0;	else	return sqlca.sqlcode; } void sql_error()	// print error infomation {	printf("%.*s\n", sqlca.sqlerrm.sqlerrml, sqlca.sqlerrm.sqlerrmc); } void cursor()	// 游标操作 {	int eno;	// 定义宿主变量	char name[10], action;	float salary;	EXEC SQL DECLARE emp_cursor SCROLL CURSOR FOR Select empno, ename, sal from emp;	// 定义游标	EXEC SQL OPEN emp_cursor;	// 打开游标	EXEC SQL WHENEVER NOT FOUND DO BREAK;	// 游标数据提取完毕后退出循环	for(;  	{	printf("\nF: 第一行,P:前一行,N:下一行,L:最后一行\n");	printf("C: 当前行,X:退出\n请输入具体操作:");	scanf("%c", &action);	fflush(stdin);	switch(action)	{	case 'F':	case 'f':	EXEC SQL FETCH FIRST emp_cursor into :eno, :name, :salary;	break;	case 'P':	case 'p':	EXEC SQL FETCH PRIOR emp_cursor into :eno, :name, :salary;	break;	case 'N':	case 'n':	EXEC SQL FETCH NEXT emp_cursor into :eno, :name, :salary;	break;	case 'L':	case 'l':	EXEC SQL FETCH LAST emp_cursor into :eno, :name, :salary;	break;	case 'C':	case 'c':	EXEC SQL FETCH CURRENT emp_cursor into :eno, :name, :salary;	break;	case 'X':	case 'x':	EXEC SQL CLOSE emp_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中怎么使用使用滚动游标的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI