游标里的数据如何清除

accpbl0330 2018-08-01 11:19:39
在过程中 ,需要在循环里 定义游标 , 然后在循环里 判断游标里是否有记录,有记录执行一条语句A,无记录执行另外一条语句B。
但是当游标里有记录后 在循环里 始终执行有记录的 语句A, 请教如何清空游标里的数据。


create or replace procedure proc_CHECK_CCB_RENT is
str_location varchar2(100);
str_buildarea number;
str_Mortgage number;
str_Attachment number;
begin
for release in (select cqzbh,cqrxm,cqrzjhm,fwbh from SH_CONTRACT@LINK_CCB_RENT t) loop
Declare
cursor u_cur is
select location,build_area,Isnot_Mortgage,Isnot_Attachment from V_ALL_REGINFO where r_name = release.cqrxm
and zjhm=release.cqrzjhm;
begin
open u_cur;
if u_cur%notfound then /* 使用 u_cur%Rowcount 始终为0 */
update SH_CONTRACT@LINK_CCB_RENT a set a.HYZT='失败' where a.FWBH=release.fwbh;
else
fetch u_cur into str_location,str_buildarea,str_Mortgage,str_Attachment;
update SH_CONTRACT@LINK_CCB_RENT a set a.HYZT='成功',a.FWMJ=str_buildarea,a.FWZL=str_location,a.SFCZCF=to_char(str_Attachment), a.SFDY=to_char(str_Mortgage)
where a.FWBH=release.fwbh;
end if;

close u_cur;
end;
end loop;
commit;
end proc_CHECK_CCB_RENT;


...全文
509 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
yaiger 2018-08-02
  • 打赏
  • 举报
回复
u_cur%notfound 之后要exit;
否则会死循环,一直update
本文是由笔者2012年学习oracle数据库时编写的学习札记,其中的题目 多数为老师留下的思考题目。 我相信本文会对初学者使用oracle有一个初步的使用印象。右图为我所参 考的书籍。 目录 第一讲 Oacle关系数据库 9 一. Oracle的安装 9 二. 用浏览器进入em 企业管理器 11 三.启动DBCA的方法 11 四.服务设置 11 五. Oracle的卸载 11 六. Oracle数据库的应用系统结构 11 七. 补充资料——oracle安装时出现的问题 12 第二讲 Oacle数据库体系结构 14 一. 物理存储结构——(数据库载体) 14 1.数据文件(.DBF) 14 2.日志文件 (.Log) 14 1) 日志文件 15 2) 数据库工作模式 15 3.控制文件(.ctl) 15 4.参数文件 (.ora) 16 二. 逻辑存储结构 17 1.数据块 (Data Blocks) 17 2.盘区(Extent) 18 3.段 (Segment) 18 4.表空间(Table Spaces) P34 18 三. 内存结构 19 1.数据缓冲区: 内存的40% 19 2.日志缓冲区: 19 3.数据字典缓冲区: 19 4.共享池 内存的10% 19 5.大池 5-10M 20 6.JAVA池 不小于20M 20 7.Streams池 20 8.软件代码区: 20 9.程序全局区(PGA) 20 四. 实例的进程结构(实例=SGA + 后台进程) 20 1.DBWR (数据库写入进程) 21 2.LGWR(日志写入进程) 22 3.ARCH(归档进程)-可选进程 22 4.CKPT(检查点进程)-可选进程 22 5.SMON (系统监控进程) 22 6.PMON (进程监控进程) 22 7.RECO (恢复进程) 22 8. Dnnn (调度进程)-可选进程(略) 22 五. 数据字典 22 第三讲 用户、模式和表 24 一. 用户和模式 24 1.模式 24 2.模式对象 24 3.用户 24 (1)创建用户 24 (2)授权 24 (3)删除用户及该模式下对象 26 二. 表 26 1. 数据类型 26 (1)字符型 26 (2)数值型 26 (3)日期时间型 26 (4)LOB (大型对象) 26 (5)RowID (伪列类型) 27 2. 创建表 27 (1)Create Table 表名 27 (2)在原来已有表上建一个新表(结构和数据) 27 (3)使用OEM建表 27 3.默认值和NULL值 27 三. 修改表 28 四. 删除表 28 五. 数据完整性 28 1.Primary Key 约束 28 2.NOT NULL约束 29 3.Unique 约束 29 4.Foreign Key 约束 29 5.Check约束 (最复杂)列级 | 表级 29 第四讲 SQL基本查询 31 一. SQL语句概述 31 1. SQL简介 31 2. SQL分类 31 3. PL/SQL (Procedure Language) 31 二. SQL*Plus 31 1.启动 SQL*Plus 单行编辑 31 2.启动iSQL*Plus 多行编辑 31 3.退出 32  直接关闭 32  输入:Exit 或 quit 32 三. 本书所使用的示例模式 32 1.Vendition:销售管理系统(11个表)(略) 32 2. School:学生成绩管理系统(6个表) 32 四. SQL SELECT语句 34 1.Select语句的格式 34 2.Select … From … ——选择列(投影) 35 3.Where子句——选择行(选择)数据过滤 35 4.Order By子句 35 5.统计函数——列名应指定别名 35 6. Group By分组 36 7.Having子句 36 8.练习:表的查询 36 五. 在SQL *Plus中使用函数 37 1.字符串函数 37 2.数字函数 37 3.日期时间函数 38 4.转换函数 38 第五讲 修改SQL数据与SQL*Plus命令 40 一.添加数据 40 1.Insert Into 表名 [ 字段列表 ] Values (值) 40 2.向表中插入空值 40 3.从其它表中拷贝数据 40 二. 更新数据 41 三. 删除数据 42 1.Delete 语句 42 2.Truncate 语句 42 四. SQL*Plus命令 42 1.设置环境变量命令 42 (1)Pause 43 (2)pagesize 和 newpage 43 (3)linesize 43 (4)numformat 选项 43 (5)timing 选项 44 2.格式化查询结果命令 44 (1)column : 44 (2)Ttitle 和 Btitle 命令 44 3.文件操作命令 45 (1)保存命令到文件 45 (2)检索命令文件到缓冲区 45 (3)运行命令文件 45 (4)保存查询结果到文件 46 4.交互命令:动态查询 46 (1)定义命令 46 (2)替换符 (用来临时存储有关的数据) 46 5.帮助命令 46 (1)help index 将显示SQL*Plus的所有命令 47 (2)help 命令名称 显示该命令的功能和选项 47 6.其他的SQL*Plus命令 47 (1)退出 SQL> Exit | Quit; 47 (2)清除命令 47 (3)查看表结构信息 47 (4)执行操作系统命令 47 第六讲 高级查询 50 一.简单连接 50 1.简单连接 50 2.表别名 P136 50 3.各个表之间的连接 50 二. 使用Join连接 50 1.内连接 50 (1)等值连接(有相同的,逐个匹配) 50 (2)不等连接 51 (3)自然连接 51 2.外连接 (左、右、完全) 51 3.交叉连接 52 三.集合操作 52 1.Union(并)——结果集相加 “Or” 52 2.Intersect(交) “And” 52 3. Minus(差) 52 四.子查询 53 1.使用的是表中的列 53 (1) IN 53 (2)Exist 53 (3)Some、Any和All 53 五.表的查询练习 54 第七讲 PL/SQL编程基础 56 7.1 PL/SQL 程序结构 56 1.PL/SQL块结构 56 2.PL/SQL块的分类(按照特性划分) 56 7.2变量与常量 56 (一)PL/SQL标识符 (给变量命名) 56 (二)标量变量 56 1.PL/SQL标识符 56 2.变量声明(名称、类型、值) 57 3.常量声明 57 (三)为变量和常量赋值 57 1.赋值的位置 57 2.赋值方式 57 (四)作用域:可以访问该变量的程序部分 58 7.3 PL/SQL 块中的SQL 语句 58 7.4 使用%TYPE和%ROWTYPE类型的变量 58 1.%Type 59 2.%RowType 59 7.5 复合变量 60 1.记录类型(“行”) 60 2.记录表类型(“表” ) 60 (1)使用的原因: 60 (2)定义记录表类型(联合数组) 60 7.6 条件判断语句 61 (一)If语句 61 (二)Case语句 62 7.7循环语句 63 1.“直到”循环 63 2.当型循环(While) 63 3.计数型循环(For) 63 7.8游标 64 (一)隐式游标 64 1.含义: 64 2.游标的属性:(获取游标的状态) 64 3.另一种隐式游标 64 (二)显示游标 64 1.声明 64 2.打开和关闭 65 3.检索数据 65 (三)游标For循环 65 (四)游标变量 (动态游标) 66 1.定义 66 2.声明游标变量 66 3.打开游标变量 66 (五) 使用游标更新数据库 66 7.9 异常处理 66 (一)预定义异常 66 (二)非预定义异常 67 1.声明异常名 67 2.将异常名与标准的Oracle错误号联系起来 67 3.在Exception中对异常做处理 67 (三) 用户自定义异常 68 3.处理异常 68 Exception 68 (四)异常传播 68 1.自定义异常的传播 68 2.声明中的异常 68 (五)使用SQLCODE和SQLERRM 68 第八讲 过程、函数和程序包 72 8.1存储过程(procedure) 72 1.创建 72 2.调用存储过程 72 3.修改(替换同名的存储过程) 73 4.参数 73 (1)In 参数:向过程传入一个值 73 (2)Out参数: 73 (3)In Out参数: 74 (4)默认值 74 5.局部变量和子过程 74 8.2函数(function) 75 1.创建 75 2.调用函数 75 8.3程序包(package) 76 1.规范 76 2.主体 76 3.私有成员 77 4.实例化 77 5.重载 77 6.管理程序包和执行权限 77 8.4依赖性 78 练习 78 第九讲 索 引 80 一.了解索引 80 1.B树索引(Balanced) 80 2.位图索引 80 3.反向索引 81 4.基于函数的索引 81 二. 创建索引 81 1.B树索引 81 2.位图索引 81 3.反向索引 81 4.基于函数的索引 81 三. 索引与约束 82 第十讲 视图、序列和同义词 83 一. 视图 83 1.先关概念 83 2.创建 83 3.修改视图 84 4.检索视图定义 84 5.视图的编译 84 6.视图的删除 84 二. 可更新的视图 84 三. 管理序列 84 1.创建 85 2.伪列 85 3.修改序列 85 4.查询序列 85 5.删除序列 85 四. 管理同义词 85 1.同义词 86 3.分类 86 4.创建 86 5.删除 86 第11讲 触发器 88 一. 触发器的组成 88 1.组成 88 2.事件 89 二.触发器的类型 89 1.DML触发器 89 (1)格式 90 (2)语句级触发器 90 (3)多条件触发的条件谓词 91 (4)行级触发器 92 2.替代触发器(instead of) 92 3.系统事件触发器 93 三.Alter Trigger语句 94 四.与触发器有关的数据字典 95 第12讲 安 全 98 一. 用户账号 98 1.用户配置文件(概要文件) 98 2.监视用户 98 二. 权限管理 99 (一)系统权限 99 (二) 对象权限 ---9种 100 三. 角色管理 101 1.系统预定义角色 101 2.自定义角色 101 3.启用和禁用角色 102 4.修改用户设置的角色 102 5.删除角色 102 四. 练习 102 五. 练习 103 六. 练习 104 七. 练习 105 第13讲 备份与恢复 106 一.数据库备份概述 106 1.备份和恢复 106 2.备份的类型 106 二. 数据库备份模式 106 三. 备份数据库 107 (一)物理备份 107 1.脱机备份 (无成本复制 copy paste) 107 2.联机备份 24*7模式 108 (二)逻辑备份 108 1.Export 导出 108 2.Import 导入 109 四. 数据库手动恢复 109 1. 完全恢复 109

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧