Oracle游标示例
-- 声明游标;CURSOR cursor_name IS select_statement --For 循环游标
--(1)定义游标
--(2)定义游标变量
--(3)使用for循环来使用这个游标
declare
--类型定义
cursor c_job
is
select empno,ename,job,sal
from emp
where job='MANAGER';
--定义一个游标变量v_cinfo c_emp%ROWTYPE ,该类型为游标c_emp中的一行数据类型
c_row c_job%rowtype;
begin
for c_row in c_job loop
dbms_output.put_line(c_row.empno||'-'||c_row.ename||'-'||c_row.job||'-'||c_row.sal);
end loop;
end;
实际工作中的例子:
declare
v_temp NUMBER; --定义变量
v_part_id VARCHAR2(20); --定义变量
cursor c_job --定义游标
is
SELECT DEPT_ID,DEPT_CODE,DEPT_TYPE
from PUB_DEPART_INFO
ORDER BY DEPT_ID;
c_row c_job%rowtype; --定义变量c_row,类型为游标c_job中的一行数据
begin
open c_job; --打开游标 loop --开始循环
fetch c_job into c_row; --读取一行数据
exit when c_job%notfound; --数据为空时退出(即:循环完成时)
if c_row.DEPT_CODE is NULL then --字段数据的调用方式c_row.DEPT_CODE,其中DEPT_CODE为数据库中的列名
IF c_row.DEPT_TYPE = 1 then
v_temp := 0;
select Max(DEPT_CODE)+1 into v_part_id from PUB_DEPART_INFO WHERE DEPT_TYPE = ''; update PUB_DEPART_INFO set DEPT_CODE = v_part_id
where DEPT_ID = c_row.DEPT_ID; ELSE
v_temp := v_temp + 1;
IF v_temp < 10 THEN
update PUB_DEPART_INFO set DEPT_CODE = (v_part_id || '' || v_temp)
where DEPT_ID = c_row.DEPT_ID;
ELSE
update PUB_DEPART_INFO set DEPT_CODE = (v_part_id || '' || v_temp)
where DEPT_ID = c_row.DEPT_ID;
END IF;
END IF;
end if;
end loop; --结束循环
close c_job; --关闭游标
end;
Oracle游标示例的更多相关文章
- Oracle 游标示例,带异常处理
Oracle游标示例一则,带异常处理. DECLARE CURSOR c_dl IS SELECT ID, NSRSBH, WSPZXH, ZXYY_DM, HZRQ, SWJG_DM, GXSJ F ...
- oracle 游标示例
declare iCount int:=0; sPath nvarchar2(200); tdzsh nvarchar2(50);begin for x in (select c.imgpath fr ...
- oracle 游标简单示例
1.游标的概念以及作用 游标(Cursor)可以使用户想操作数组一样对查询出来的结果集进行操作,可以形象的看做一个变动的光标,其实际行是一个指针,它在一段Oracle存放数据查询结果集或数据 操作集的 ...
- Oracle游标的使用示例
此文是使用Oracle游标的几种方式,for...in会自动打开游标,fetch...into需要手动打开游标,游标类似于一个只会往前移动的指针,每次指向数据集中的一行数据,通过游标可以打开数据集,也 ...
- oracle 存储过程 示例
oracle 存储过程 示例 CreationTime--2018年9月4日09点49分 Author:Marydon 1.情景展示 对VIRTUAL_QRCODELOG表的静态二维码,动态二维码 ...
- Oracle游标带参数
Oracle游标是可以带参数的,而SqlServer的游标就不可以了 create or replace procedure a as cursor b(c_id int)is select * fr ...
- Oracle 游标使用(转)
这个文档几乎包含了oracle游标使用的方方面面,全部通过了测试 ; ; dbms_output.put_line(sql) loop dbms_output.put_line( ; ; ; r_te ...
- Oracle 游标使用全解(转)
转自:http://www.cnblogs.com/sc-xx/archive/2011/12/03/2275084.html 这个文档几乎包含了oracle游标使用的方方面面,全部通过了测试 -- ...
- Oracle游标动态赋值
1. oracle游标动态赋值的小例子 -- 实现1:动态给游标赋值 -- 实现2:游标用表的rowtype声明,但数据却只配置表一行的某些字段时,遍历游标时需fetch into到精确字段 CREA ...
随机推荐
- Leetcode 1 two sum 难度:0
https://leetcode.com/problems/two-sum/ class Solution { public: vector<int> twoSum(vector<i ...
- win7(64)位下WinDbg64调试VMware10下的win7(32位)
win7(64)位下WinDbg64调试VMware10下的win7(32位) 一 Windbg32位还是64位的选择 参考文档<Windbg 32位版本和64位版本的选择> http:/ ...
- Java中类型的长度
介绍: Java中有8种基本类型,分别是boolean, char, byte, short, int, long, float, double.他们的长度固定,不是对象.对于有必要将基本类型作为对象 ...
- IT公司100题-28-整数的二进制表示中1的个数
问题描述: 输入一个整数n,求n的二进制表示中,一共有多少个1.例如n=8,二进制表示为00001000,二进制表示中有1个1. 分析: 如果一个数n不为0,那么n-1的二进制表示,与n的二进 ...
- AdaBoosting 3
在学习AdaBoosting和online Boosting, 最好有bagging和boosting基础,这样看起来比较会比较顺.有空再补上. AdaBoost 算法的主要思想之一就是在训练集上维护 ...
- qt搭建环境
1 用viewteam实现远程控制电脑.可以在家里继续操作办公电脑了. http://blog.csdn.net/sch0120/article/details/38324599 2qt环境安装.今天 ...
- 推荐!国外程序员整理的 C++ 资源大全
http://blog.jobbole.com/78901/ 关于 C++ 框架.库和资源的一些汇总列表,由 fffaraz 发起和维护. 内容包括:标准库.Web应用框架.人工智能.数据库.图片处理 ...
- OpenCV是什么?
OpenCV其实就是一对C和C++语言的源代码文件,这些源代码文件中实现了许多常用的计算机视觉算法.例如C借口函数cvCanny()实现了Canny边缘提取算法.可以直接将这些源代码添加到我们自己的项 ...
- SqlServer性能优化(一)
一:数据存储的方式: 1.数据文件:.mdf或.ndf 2.日志文件:.ldf 二:事务日志的工作步骤: 1.数据修改由应用程序发出(在缓冲区进行缓存) 2.数据页位于缓存区缓冲中,或者读入缓冲区缓存 ...
- 遇到tomcat端口被占用问题解决方案
1) 启动Eclipse的Tomcat5.0时,报以下错误: 2)根据以上提示显示:Tomcat Server 的8080端口已经被占用.查看它被哪个占用,方法如下: 3)可以看到占用此端口的PID为 ...