Oracle笔记:循环及游标

循环及退出循环:

--while
--初值
while 条件
loop
循环体;
循环变量的变化;
end loop;
--break
if 条件 then
exit;
end if;
--continue
<<label>>
....
if 条件 then
goto label;
end if; 
--例
declare
i integer;
j integer;
begin  
j:=1;
<<b>>  
while j<=9
loop  
i:=1;       
<<a>>
while i<=j  
loop
if i=3 then
i:=i+1;
j:=j+1;
goto b; 
end if;
dbms_output.put(i||'*'||j||'='||i*j||'  ');
i:=i+1; 
end loop;
dbms_output.put_line('');  
j:=j+1;
end loop ;
end;
游标的使用:

--游标
Result rs = stmt.excuteQuery();
while(rs.next())
{
rs.getString(1);
}
select * from emp;
--游标:指向缓冲区数据行的一个指针(句柄)。
--指针就是存放地址的一个变量。
--用法:
1、声明(declare部分): 
cursor 游标名 is 
select语句块(标明了游标所指向的数据区域);
2、打开(begin end执行体中)
open 游标名;
(只有在打开游标时,select语句才真正执行,
并把首行地址放入游标)
3、提取游标所指向的数据行(循环)
fetch 游标名 into 指定变量(自行处理)
4、关闭游标
close 游标名;
注意:
1、如果想再次使用被关闭的游标,可以重新开发游标。
2、游标是单向的。如果想重新访问开头的数据,只能
关闭后重新打开使用。
3、重要属性: %found  %notfound(没有找到数据)
4、fetch同时完成两件事:
1)移向下一行
2)提取数据   
--例子  
declare
v_emp emp%rowtype;
cursor cur_emps is
select * from emp;
begin
open cur_emps;  
loop
fetch  cur_emps into v_emp;
exit when cur_emps%notfound;
dbms_output.put(v_emp.empno||' ');
dbms_output.put(v_emp.ename||' ');
dbms_output.put_line(v_emp.deptno);     
end loop;
close cur_emps;
end;
--游标类型的变量
declare
cursor cur_emps is
select empno,ename,sal,deptno from emp;   
v_emp cur_emps%rowtype;
begin
open cur_emps;  
loop
fetch  cur_emps into v_emp;
exit when cur_emps%notfound;
dbms_output.put(v_emp.empno||' ');
dbms_output.put(v_emp.ename||' ');
dbms_output.put_line(v_emp.deptno);     
end loop;
close cur_emps;
end;
--参数
declare
cursor cur_emps(dept_no integer) is
select empno,ename,sal,deptno from emp 
where deptno=dept_no;   
v_emp cur_emps%rowtype;
begin
open cur_emps(20);  
loop
fetch  cur_emps into v_emp;
exit when cur_emps%notfound;
dbms_output.put(v_emp.empno||' ');
dbms_output.put(v_emp.ename||' ');
dbms_output.put_line(v_emp.deptno);     
end loop;
close cur_emps;
open cur_emps(30);  
loop
fetch  cur_emps into v_emp;
exit when cur_emps%notfound;
dbms_output.put(v_emp.empno||' ');
dbms_output.put(v_emp.ename||' ');
dbms_output.put_line(v_emp.deptno);     
end loop;
close cur_emps;
end;


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/545489.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis 事务深入解析

作为关系型数据库中一项非常重要的基础功能——事务,在 Redis 中是如何处理并使用的? 前言 事务指的是提供一种将多个命令打包,一次性按顺序地执行的机制,并且保证服务器只有在执行完事务中的所有命令后,才会继续处理此客户端的其他命令。 事务也是其他关系型数据库所必…

Java Thread类的最终void join()方法与示例

线程类最终void join() (Thread Class final void join()) This method is available in package java.lang.Thread.join(). 软件包java.lang.Thread.join()中提供了此方法。 join() method is applicable when a thread wants to wait until completing some other thread the…

解决myeclipse中新导入的工程旁出现红色感叹号的问题

2019独角兽企业重金招聘Python工程师标准>>> 或许很多像我这样的java初学者在使用myeclipse时出现新导入的工程旁边有红色的感叹号。 1.问题一般就是java build path 设置不正确的问题。解决步骤如下&#xff1a; 右击工程找到Build Path——>Configure Build Pa…

层次分析法

层次分析法一、层次分析法原理二、解题步骤&#xff08;1&#xff09;层次结构模型&#xff08;2&#xff09;成对比较矩阵①成对比较矩阵&#xff08;有现成代码进行一致性检验和求权重&#xff09;②成对比较阵标度表及举例③一致性检验三、旅游性问题举例&#xff08;1&…

ORA-00997: 非法使用 LONG 数据类型

今天在创建表的时候直接用的create table XXX as select * from AAA;结果出了一个&#xff1a;ORA-00997: 非法使用 LONG 数据类型 的错误。后来查了一下&#xff0c;做下笔记&#xff1a;1、select查询语句中用到where 语句和排序时不能直接 使用数据类型为long的字段&#xf…

Redis 持久化——混合持久化

RDB 和 AOF 持久化各有利弊,RDB 可能会导致一定时间内的数据丢失,而 AOF 由于文件较大则会影响 Redis 的启动速度,为了能同时使用 RDB 和 AOF 各种的优点,Redis 4.0 之后新增了混合持久化的方式。 在开启混合持久化的情况下,AOF 重写时会把 Redis 的持久化数据,以 RDB 的…

Java ObjectInputStream readDouble()方法与示例

ObjectInputStream类readChar()方法 (ObjectInputStream Class readChar() method) readChar() method is available in java.io package. readChar()方法在java.io包中可用。 readChar() method is used to read 2 byte (i.e. 16 bit) of character from this ObjectInputStre…

sql2005(64位企业版)+weblogic9.2+win2008集群

服务器是win2008,64位&#xff0c;32gb内存&#xff0c;安装了sql2005&#xff08;64)的企业版数据库&#xff0c;中间件为weblogic9.2&#xff0c;部署了一个主服务&#xff0c;一个代理服务&#xff0c;4个节点。服务起来后&#xff0c;代理服务报错如下&#xff1a;<2011…

Oracle存储过程及函数的练习题

--存储过程、函数练习题--&#xff08;1&#xff09;创建一个存储过程&#xff0c;以员工号为参数&#xff0c;输出该员工的工资 create or replace procedure p_sxt1(v_empno in emp.empno%type, v_sal out emp.sal%type) is beginselect sal into v_sal from emp where empno…

多属性决策模型

多属性决策模型一、多属性决策模型&#xff08;1&#xff09;特点&#xff08;2&#xff09;属性值的归一化①效益型②成本型③固定型④偏离型⑤区间型⑥偏离区间型二、例题及步骤①建立数学模型②属性值归一化③对不同的属性构建成对比较矩阵并计算属性权重④计算每个公司的WA…

Redis 管道技术——Pipeline

管道技术(Pipeline)是客户端提供的一种批处理技术,用于一次处理多个 Redis 命令,从而提高整个交互的性能。 通常情况下 Redis 是单行执行的,客户端先向服务器发送请求,服务端接收并处理请求后再把结果返回给客户端,这种处理模式在非频繁请求时不会有任何问题。 但如果…

Java GregorianCalendar getMaximum()方法与示例

GregorianCalendar类的getMaximum()方法 (GregorianCalendar Class getMaximum() method) getMaximum() method is available in java.util package. getMaximum()方法在java.util包中可用。 getMaximum() method is used to get the maximum value of the given Calendar fiel…

repadmin查看域控之间的复制状态

查看域控之间的复制状态&#xff1a;repadmin /showrepl手动进行同步复制&#xff1a;repadmin /syncall更多的命令参考网址&#xff1a;http://technet.microsoft.com/zh-tw/library/cc778305.aspx转载于:https://blog.51cto.com/281816327/1599269

java process exe.exec 执行exe程序

以前好奇怎么让java调用普通的exe程序&#xff0c;让exe程序协同java一起处理数据&#xff0c;一直也没时间看。只有这么两行零散的代码&#xff0c;惭愧&#xff0c;没有实践过。先堆这里。Process proexe.exec("D:\\myeclipse_work_space\\fileTest\\123.exe");} c…

灰色预测

灰色预测一、灰色预测理论简介&#xff08;1&#xff09;灰色系统&#xff08;2&#xff09;灰色系统的特点&#xff08;3&#xff09;灰色生成&#xff08;4&#xff09;GM&#xff08;1,1&#xff09;模型&#xff08;5&#xff09;GM&#xff08;1,1&#xff09;模型精度检验…

Redis 过期策略与源码分析

在 Redis 中我们可以给一些元素设置过期时间,那当它过期之后 Redis 是如何处理这些过期键呢? 过期键执行流程 Redis 之所以能知道那些键值过期,是因为在 Redis 中维护了一个字典,存储了所有设置了过期时间的键值,我们称之为过期字典。 过期键判断流程如下图所示: 过期…

Java类类getComponentType()方法与示例

类类getComponentType()方法 (Class class getComponentType() method) getComponentType() method is available in java.lang package. getComponentType()方法在java.lang包中可用。 getComponentType() method is used to returns the Class denoting the component type o…

SVN分支与合并

SVN分支与合并1 分支与合并的概念&#xff1a;分支&#xff1a;版本控制系统的一个特性是能够把各种修改分离出来放在开发品的一个分割线上。这条线被称为分支。分支经常被用来试验新的特性&#xff0c;而不会对开发有编译错误的干扰。当新的特性足够稳定之后&#xff0c;开发…

Oracle常用数据字典表

Oracle常用数据字典表 查看当前用户的缺省表空间SQL>select username,default_tablespace from user_users; 查看当前用户的角色SQL>select * from user_role_privs;查看当前用户的系统权限和表级权限SQL>select * from user_sys_privs;SQL>select * from user_tab…

Redis 键值过期操作

过期设置 Redis 中设置过期时间主要通过以下四种方式: expire key seconds:设置 key 在 n 秒后过期;pexpire key milliseconds:设置 key 在 n 毫秒后过期;expireat key timestamp:设置 key 在某个时间戳(精确到秒)之后过期;pexpireat key millisecondsTimestamp:设置…