[Pro*c]滚动游标变量的使用
代码:xx.pc
/* 功能:演示了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, "scott"); 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 dno; // 定义宿主变量 char name[10]; float salary;// 定义游标变量sql_cursor emp_cursor; // sql_cursor:是Proc*C/C++的伪类型printf("请输入部门号:");scanf("%d", &dno);EXEC SQL ALLOCATE :emp_cursor; // 分配游标变量EXEC SQL EXECUTEBEGINOPEN :emp_cursor FOR Select ename, sal from emp where deptno=:dno;END;END-EXEC;EXEC SQL WHENEVER NOT FOUND DO BREAK; // 游标数据提取完毕后退出循环while(1){ EXEC SQL FETCH :emp_cursor into :name, :salary;printf("name = %s(%d), salary = %4.0f\n", name, strlen(name), salary);}EXEC SQL CLOSE :emp_cursor; // 关闭游标变量EXEC SQL FREE :emp_cursor; // 释放游标变量printf("sqlca.sqlerrd[2] = %d\n", sqlca.sqlerrd[2]); // sqlca.sqlerrd[2]存放着Select语句作用的行数
}
另外还需要做一定的设置:
[Pro*c]滚动游标变量的使用相关推荐
- Pro*c使用滚动游标进行更新或删除游标行
代码:xx.pc /* 功能:演示了Oracle滚动游标进行更新(或删除)操作 定义游标时注意事项: 1. DECLARE CURSOR语句必须是使用游标的第一条语句 2. 游标名称是一个标识符,而不 ...
- [Oracle]使用滚动游标
源代码:xx.pc /* 功能:演示了Oracle滚动游标操作 定义游标时注意事项: 1. DECLARE CURSOR语句必须是使用游标的第一条语句 2. 游标名称是一个标识符,而不是宿主变量,其长 ...
- [Oracle]使用非滚动游标
源码:xx.pc /* 功能:演示了Oracle非滚动游标操作 定义游标时注意事项: 1. DECLARE CURSOR语句必须是使用游标的第一条语句 2. 游标名称是一个标识符,而不是宿主变量,其长 ...
- Oracle主机变量锚定、游标变量
System Global varaibles. 系统全局变量,只要sqlplus不断开连接,name这个变量会一直存在,切换用户会话对其无影响. SQL> -- 非plsql变量 SQL> ...
- Oracle游标和游标变量
一.游标: 游标的概念: 游标的作用是临时存储从数据库中提取的数据块,由系统或者用户以变量的形式定义,是sql的内存工作区: // 分为两种类型:显式游标和隐式游标 隐式游标 系统定义和管理的,像DM ...
- Pro*c使用指示变量来处理NULL列值
代码:xx.pc /* 功能:演示了Oracle使用指示变量(专门用来处理NULL值) 指示变量专门用于处理数据库的NULL值,它是一种short类型的C语言变量. 当执行内嵌SELECT语句或FET ...
- oracle创建存储过程设置变量,oracle建游标变量包,且在存储过程中使用
--建包 createorreplacepackage PA_BGYZB as type sp_cursor is ref cursor; end PA_BGYZB; --存储过程调用包 create ...
- 一条一条来,MySQL变量、流程控制与游标,完整详细可收藏
文章目录 1. 变量 2. 定义条件与处理程序 3. 流程控制 4. 游标 MySQL8的新特性-全局变量的持久化 1. 变量 在MySQL数据库的存储过程和函数中,可以使用变量来存储查询或计算的中间 ...
- MySql基础篇---004 其它数据库对象篇:视图,存储过程与函数,变量、流程控制与游标 ,触发器
第14章_视图 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. 常见的数据库对象 对象 描述 表(TABLE) 表是存储数据的逻辑单元,以行和列的形 ...
最新文章
- 交换友链的几个技巧!
- javascript变量提前声明
- Java IO篇:序列化与反序列化
- SpringSecurity的简单使用使用案列说明
- linux docker漏洞,安装shadow或linux-pam的Alpine Linux Docker镜像有漏洞,附解决
- CAP 2.3版本发布,支持 MongoDB
- codeforces:812(div2):总结
- Linux 命令之 chown -- 用来变更文件或目录的拥有者或所属群组
- 作者:沈志宏(1977-),男,博士,中国科学院计算机网络信息中心高级工程师...
- perl java远程调用函数调用_如何从Java调用Perl?
- C语言 FileStreaming fseek
- 默认文件夹为空,如何从Microsoft Edge下载收藏夹
- Audio之音频帧周期(四十三)
- android webview浏览器下载文件,Android 浏览器 —— 使用 WebView 实现文件下载
- 如何查看电脑连接过的WiFi密码
- 基础优化 标题优化 上下架注意事项 流量少 转换率低 加购收藏 店铺层级 动销率 动态评分 当你弄清楚这些,自然流量的起来的重要因素
- 【Pygame实战】俄罗斯方块 | 太好玩了~停不下来,这种版本(Turtle彩版)你肯定没玩过……(经典怀旧:无人不知的俄罗斯方块)
- java语言基础(七):Collection、泛型、案例:斗地主
- WordPress调用文章中第一张图片作为缩略图(特色图像)的方法
- 2021 An Updated Comparison of Four Low Earth Orbit Satellite Constellation Systems to Provide Global