Oracle数据库中游标的游标的使用
本人不喜欢说概念啥的,就直接说明使用方法吧
案例1:
DECALRE
--声明游标
CURSOR C_USER(C_ID NUMBER) IS
SELECT NAME FROM USER WHERE TYPEID = C_ID;
V_NAME C_USER%rowtype; --定义游标变量
BEGIN
OPEN C_USER(变量值); --打开游标
LOOP
FETCH C_USER INTO V_NAME;
EXIT FETCH C_USER%NOT FOUND;
do something
END LOOP
CLOSE C_USER;
END;
是不是有点看不懂,没关系,我也没怎么看得懂
所以案例2:
说明:
1、file$是表名,file#, status$,blocks 是字段名
2、将表file$中的file#, status$,blocks 数据列出来,相当于select file#, status$,blocks from file$;
--连接系统数据库
SQL>conn / as sysdba --以下是在sql窗口下执行的
declare
--声明游标
Cursor cur_file is
select file#, status$,blocks from file$;
CurFileInfo cur_file%rowtype; --定义游标变量(所有的变量都在里面)
begin
open cur_file; --打开游标
Loop
Fetch cur_file into CurFileInfo ;
Exit when cur_file%notfound;--查不到数据则退出;
Dbms_Output.put_line(CurFileInfo.file#);
end loop;
Exception--出现异常,则关闭游标,并打印出问题来
when others then
close cur_file;
Dbms_Output.put_line(sqlerrm); if cur_file%isopen then
--关闭游标
close cur_file;
end if;
end;
然后稍微进阶一下:
案例3:
问题:假如我查到多个表,而每个表都要加入同一个字段,这个怎么解决。
解决办法如下:
--连接数据库,是在命令窗口下执行的
登陆系统:
sqlplus /nolog
以管理员的身份运行:
SQL>conn / as sysdba --以下是在SQL窗口下执行的
DECLARE
ADD_SQL VARCHAR2(1000); --定义添加字段的语句
ADD_TABLE_NAME VARCHAR2(50); --定义获取的表名
CURSOR ADD_TABLE_FIELD IS --取名添加表字段
SELECT TABLE_NAME FROM USER_TABLES where table_name like 'WRI%SYNOPSIS$' ; --查出指定的表出来
BEGIN
OPEN ADD_TABLE_FIELD;
LOOP
--提取一行数据到ADD_TABLE_FIELD
FETCH ADD_TABLE_FIELD INTO ADD_TABLE_NAME;
--判断是否读取到,没读取到就退出
--%notfound是没有取到的意思
EXIT WHEN ADD_TABLE_FIELD%NOTFOUND; --下面sql语句中,表名两边都要有空格,不然不会执行语句的,即:[table ']和[' add]不能写成[table']和['add]
ADD_SQL := 'alter table ' || ADD_TABLE_NAME || ' add 修改人 varchar2(20)';
EXECUTE IMMEDIATE ADD_SQL;--执行该语句 END LOOP;--关闭游标
CLOSE ADD_TABLE_FIELD;
END;
好了,差不多了,就这样了。
等等,你们应该没有照搬执行吧,不然的话, 怎么删除我增加的列呢?
Oracle数据库中游标的游标的使用的更多相关文章
- Oracle存储过程中游标的简单使用
存储过程中查询语句如何返回多行结果? 我们知道,如果存储过程中查询语句有多行结果输出,会报错:ORA-01422: exact fetch returns more than requested nu ...
- oracle数据库中的游标
oracle中的游标,游标的概念与作用,游标的分类,游标的使用. 一,游标的概念与作用 摘自百度百科:游标(Cursor)是处理数据的一种方法,为了查看或者处理结果集中的数据,游标提供了在结果集中一次 ...
- 在python操作数据库中游标的使用方法
cursor就是一个Cursor对象,这个cursor是一个实现了迭代器(def__iter__())和生成器(yield)的MySQLdb对象,这个时候cursor中还没有数据,只有等到fetcho ...
- 2018.5.30 Oracle数据库PLSQL编程---游标的使用
显示游标的步骤 /* 显示游标处理步骤 1.声明游标 语法结构:cursor 游标名称 is SQL 语句; 2.打开游标 语法结构:open游标名称; 3.提取数据 语法结构:fetch 4.关闭游 ...
- oracle数据库之游标的使用
一.游标概念 为了处理 SQL 语句,ORACLE 必须分配一片叫上下文( context area )的区域来处理所必需的信息,其中包括要处理的行的数目,一个指向语句被分析以后的表示形式的指针以及查 ...
- Oracle数据库游标的类型
游标是SQL的一个内存工作区,由系统或用户以变量的形式定义.游标的作用就是用于临时存储从数据库中提取的数据块.Oracle数据库的Cursor类型包含三种: 静态游标:分为显式(explicit)游标 ...
- Oracle数据库基础知识
oracle数据库plsql developer 目录(?)[-] 一 SQL基础知识 创建删除数据库 创建删除修改表 添加修改删除列 oracle cascade用法 添加删除约束主键外 ...
- 【Java EE 学习 29 下】【JDBC编程中操作Oracle数据库】【调用存储过程的方法】
疑问:怎样判断存储过程执行之后返回值是否为空. 一.连接oracle数据库 1.需要的jar包:在安装的oracle中就有,所以不需要到官网下载,我的oracle11g下:D:\app\kdyzm\p ...
- python操作oracle数据库-查询
python操作oracle数据库-查询 参照文档 http://www.oracle.com/technetwork/cn/articles/dsl/mastering-oracle-python- ...
随机推荐
- 【ubuntu】给新装好的UBUNTU系统配置静态IP
最近在自己装有win7系统的thinkpad电脑上,给安装了Ubuntu16.04双系统. 想在ubuntu下配置一个hadoop伪分布式,最首要的就是要给系统配置一个静态IP . 一开始我按照网上的 ...
- Git使用教程,感觉比较全,所以【转载】
一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以 ...
- MySQL判断一个字段不包含中文
中文=2个字节,英文或数字=1个字节,因此我们用mysql中两个函数比较字节和字符的长度是否相等来判断是否包含中文 select * from user where CHAR_LENGTH(name) ...
- Fragment中的方法findFragmentById(int id)的返回值探讨
在学习<Android编程权威指南>P124页的时候,遇到了这样的代码: 引起了我的疑问if的判断条件是(fragment==null),那执行完上一句 Fragment Fragment ...
- owin解决跨域js请求
最近在用owin打了一个建议的http的api服务,但遇到了js跨域访问的问题,后来在网上找到了答案,已帮助遇到此问题的人 1.首先nuget先按着owin依赖的包,然后至关重要的一步是引用Micro ...
- HIVE的sql语句操作
Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在hadoop 分布式文件系统中的数据,可以将结构 化的数据文件映射为一张数据库表,并提供完整的SQL查 ...
- OLEDB不使用SQL语句直接打开数据表
一般来说获取数据库表的方法是采用类似 select * from table_name 这样的sql语句.SQL语句必然伴随着数据库的解释执行,一般来说效率比较低下,而且使用SQL语句时需要数据库支持 ...
- 转载《学习HTML5 canvas遇到的问题》
学习HTML5 canvas遇到的问题 1. 非零环绕原则(nonzZero rule) 非零环绕原则是canvas在进行填充的时候是否要进行填充的判断依据. 在判断填充的区域拉一条线出来,拉到图形的 ...
- 解决C#调试ArcMap断点不能停的问题
问题出在ArcMap bin\ArcMap.exe.config 默认是不支持NET4.0 <startup> <!--<supportedRuntime version=&q ...
- Azure 9 月新发布
亲爱的小伙伴们, 我们很高兴向您宣布以下新功能与相关调整,欢迎关注与使用. 1. SQL 数据库弹性池 2. 存储指标更新 3. SQL 数据库 P15 4. Azure 高级存储 5. Wosig ...