文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-04-02 19:55

关注

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


#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中怎么使用使用滚动游标的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯