Oracle笔记:循环及游标

原创 2013年12月05日 17:06:49

循环及退出循环:

--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;


版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

oracle循环游标

declare  i int; begin  i:=1;  loop   dbms_output.put_line(i);   exit when i=10;   i:=i+1;  e...

使用Oracle显式游标及for循环

转载地址:   http://blog.csdn.net/wanghuan220323/article/details/7792669     使用隐式游标和显式游标: 1...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

Oracle的游标使用方法 三种循环

可见for循环是比较简单实用的方法。 首先,它会自动open和close游标。解决了你忘记打开或关闭游标的烦恼。 其它,自动定义了一个记录类型及声明该类型的变量,并自动fetch数据到这个变量中。 我...

oracle数据库存储过程的一个实例(运用到游标和循环)

自己写的一个存储过程实例(格式可以参照): create or replace procedure comm.procedure_luguagua(patientId in varchar2,//入参...

oracle调用子存储过程+游标循环实例

一,有子节点的子节点的排序

《基于ORACLE SQL优化》读书笔记-游标

show parameter open_cursors; --单个session可并存sessioncursor数   select count(*) from v$open_cursor whe...

Oracle笔记 九、PL/SQL 游标的使用

--演示隐式游标,系统自动声明,自动打开,自动使用并且自动关闭 begin update emp set sal = 1000; dbms_output.put_line('...

oracle学习笔记——游标Cursor

一 概念 游标是SQL的一个内存工作区,由系统或用户以变量的形式定义。游标的作用就是用于临时存储从数据库中提取的数据块。在某些情况下,需要把数据从存放在磁盘的表中调到计算机内存中进行处理,最后将处理...

Oracle笔记 九、PL/SQL 游标的使用

--演示隐式游标,系统自动声明,自动打开,自动使用并且自动关闭 begin update emp set sal = 1000; dbms_output.put_line('...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)