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- ...
随机推荐
- JS常用的设计模式(3)-——观察者模式
观察者模式( 又叫发布者-订阅者模式 )应该是最常用的模式之一. 在很多语言里都得到大量应用. 包括我们平时接触的dom事件. 也是js和dom之间实现的一种观察者模式. div.onclick = ...
- 6、Angular Route 路由
1.没有嵌套路由 类似 ui-route 上述的html用红字标记的是必须导入的.这是因为:路由并不在ng2中,需要我们额外引入,另外我们需要设置base href,这是个什么东西呢?相当于我们后续所 ...
- Session&Cookie 简介及使用
Cookie cookie 是存储于访问者的计算机中的变量.每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie.你可以使用 JavaScript 或其它语言来创建和取回 cookie ...
- Introduction of Servlet Filter(了解Servlet之Filter)
API文档中介绍了public Interface Filter(公共接口过滤器) Servlet API文档中是这样介绍的: ‘A filter is an object that performs ...
- ACM-线段树扫描线总结
扫描线的基础概念可以看这几篇文章 http://blog.csdn.net/xingyeyongheng/article/details/8927732 http://www.cnblogs.com/ ...
- Aligning Plots in a Column作图列对齐
Plot[Sin[x], {x, 0, Pi}] Plot[10000 Sin[x], {x, 0, Pi}] 直接作图左边无法对齐,影响图的美观.可以使用左边界空格实现列对齐,代码如下: optio ...
- JSP初学者3
reponse代表服务器对客户端的响应.大部分时候,程序无须使用response来响应客户端请求,因为有更简单的响应对象——out,它代表页面输出流. 但out无法响应生成非字符内容(out是JspW ...
- 深度语义匹配模型-DSSM 及其变种
转自:http://ju.outofmemory.cn/entry/316660 感谢分享~ DSSM这篇paper发表在cikm2013,短小但是精炼,值得记录一下 ps:后来跟了几篇dssm的pa ...
- 1977年提出的OSI七层模型
OSI七层模型: 7应用层 数据用户接口,提供人操作软件的接口 6表示层 数据的表现形式,特定的功能实现,比如数据加密.数据传输的编码等,一般由软件完成 ...
- win10安装mxnet cuda9.0-gpu版
类似于上一篇文章 Anaconda3.6 python3.6.5 cuda9.0+ cudnn7.0 安装MXNet 1.设置清华源 conda config --prepend cha ...