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中的Function和Object
说到构造器(condtructor).原型链(prototype),说道Function与Object,总要祭出下面这张图 1.Function是最顶层的构造器,Object是最顶层的对象 2.先有的 ...
- poi学习
需要节点 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</a ...
- scss-@extend
@extend指令用于共享规则和选择器之间的关系.它可以扩展所有其他类的样式在一个类中,也可应用于自己特定的样式. 查看如下scss@extend示例: .style{ font-size: 30px ...
- css3 转换 过渡 及动画
转换transform: 通过 CSS3 转换,我们能够对元素进行移动.缩放.转动.拉长或拉伸.您可以使用 2D 或 3D 转换来转换您的元素 2D转换属性: transform 向元素应用 2D 或 ...
- 原生js实现雪花飘落效果
雪花飘落的效果实现步骤:1.使用setInterval定时器每800毫秒创建一个雪花:2.把每一个雪花作为参数传进动态下落的方法中即可. <style> *{padding: 0;marg ...
- 001Angular2环境准备
01.安装Node.js 和 npm 安装完成后,在命令行依次使用node -v 和 npm -v可以看到版本号. 02.安装cnpm npm需要连接谷歌服务器,国内不能正常使用,需安装cnpm.命令 ...
- Java设计模式—责任链模式
责任链模式的定义: 使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止. 责任链模式的重点是在"链& ...
- Java 重写hashCode() 时为什么要用 31 来计算
在OSChina 中看到了一篇文章<Java 中正确使用 hashCode 和 equals 方法>,看到 hashCode 的方法体内的31比较有意思. 在Stackoverflow上找 ...
- jquery控制滚动条
$(function () { $("table tr td a").css('white-space', 'nowrap'); $("div[id$=ctlScroll ...
- SqlServer数据库全角和半角互转的方法
---摘要: SqlServer数据库全角和半角互转的方法 CREATE FUNCTION f_Convert( @str NVARCHAR(4000), --要转换的字符串 @flag bit -- ...