本人不喜欢说概念啥的,就直接说明使用方法吧

案例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数据库中游标的游标的使用的更多相关文章

  1. Oracle存储过程中游标的简单使用

    存储过程中查询语句如何返回多行结果? 我们知道,如果存储过程中查询语句有多行结果输出,会报错:ORA-01422: exact fetch returns more than requested nu ...

  2. oracle数据库中的游标

    oracle中的游标,游标的概念与作用,游标的分类,游标的使用. 一,游标的概念与作用 摘自百度百科:游标(Cursor)是处理数据的一种方法,为了查看或者处理结果集中的数据,游标提供了在结果集中一次 ...

  3. 在python操作数据库中游标的使用方法

    cursor就是一个Cursor对象,这个cursor是一个实现了迭代器(def__iter__())和生成器(yield)的MySQLdb对象,这个时候cursor中还没有数据,只有等到fetcho ...

  4. 2018.5.30 Oracle数据库PLSQL编程---游标的使用

    显示游标的步骤 /* 显示游标处理步骤 1.声明游标 语法结构:cursor 游标名称 is SQL 语句; 2.打开游标 语法结构:open游标名称; 3.提取数据 语法结构:fetch 4.关闭游 ...

  5. oracle数据库之游标的使用

    一.游标概念 为了处理 SQL 语句,ORACLE 必须分配一片叫上下文( context area )的区域来处理所必需的信息,其中包括要处理的行的数目,一个指向语句被分析以后的表示形式的指针以及查 ...

  6. Oracle数据库游标的类型

    游标是SQL的一个内存工作区,由系统或用户以变量的形式定义.游标的作用就是用于临时存储从数据库中提取的数据块.Oracle数据库的Cursor类型包含三种: 静态游标:分为显式(explicit)游标 ...

  7. Oracle数据库基础知识

    oracle数据库plsql developer   目录(?)[-] 一     SQL基础知识 创建删除数据库 创建删除修改表 添加修改删除列 oracle cascade用法 添加删除约束主键外 ...

  8. 【Java EE 学习 29 下】【JDBC编程中操作Oracle数据库】【调用存储过程的方法】

    疑问:怎样判断存储过程执行之后返回值是否为空. 一.连接oracle数据库 1.需要的jar包:在安装的oracle中就有,所以不需要到官网下载,我的oracle11g下:D:\app\kdyzm\p ...

  9. python操作oracle数据库-查询

    python操作oracle数据库-查询 参照文档 http://www.oracle.com/technetwork/cn/articles/dsl/mastering-oracle-python- ...

随机推荐

  1. geth

    >geth --networkid 123 --dev --datadir "d:/blockchain/project/ethereum" --rpc --rpcaddr ...

  2. 2017年10月9日 冒泡&去重复习

    今天看了一下,就是数组跟js还是不太熟悉 冒泡排序    var arr = [4, 2, 1, 3, 6, 5];        for(var i = 1; i < arr.length; ...

  3. Java进程内缓存

    今天和同事聊到了缓存,在Java中实现进程缓存.这里主要思想是,用一个map做缓存.缓存有个生存时间,过期就删除缓存.这里可以考虑两种删除策略,一种是起一个线程,定期删除过期的key.第二个是,剔除模 ...

  4. Socket编程指南及示例程序(转)

    1         前言 在一些常用的编程技术中,Socket网络编程可以说是最简单的一种.而且Socket编程需要的基础知识很少,适合初学者学习网络编程.目前支持网络传输的技术.语言和工具繁多,但是 ...

  5. 堆(Heap)的实现

    这次实现了堆,这个堆不是指系统堆栈的堆,是一种数据结构,见下图 堆的本质就是一个数组(上图中,红色的是值,黑色的是下标)简单的来说就是把一个数组看成是二叉树,就像上图 大堆和小堆分别是指根节点比孩子节 ...

  6. 从零开始的全栈工程师——PHP篇 ( 单词汇总 ) ( php解决文字乱码 )

    解决乱码: header("Content-Type: text/html;charset=utf-8"); 单词 局部的: local 全局的: global 静态的: stat ...

  7. hook_myhook.api.php文件什么用

    看源文件的时候发现有个user.api.php文件,里面定义了一个新的钩子,$hook_user_categories,但是,drupal核心里面没有,我推测是自定义 的钩子函数,然后在*.modul ...

  8. vue1.0 与 Vue2.0的一些区别 及用法

    1.Vue2.0的模板标记外必须使用元素包起来: eg:Vue1.0的写法 <!DOCTYPE html> <html> <head> <meta chars ...

  9. Android—PopupWindow的简单使用

    PopupWindow 是一个可以显示在当前 Activity 之上的浮动容器,这个Demo要实现的功能是,点击布局中的两个按钮,进而控制PopupWindow的显示与消失,代码中有详细的注释首先看一 ...

  10. java实现12306的45分钟内支付,45分钟后取消订单功能?

    java实现12306的45分钟内支付,45分钟后取消订单功能? - 回答作者: 匿名用户 https://zhihu.com/question/27254071/answer/35948645