1.通过提取数据

declare
v_result sys_refcursor;
v_id int;
v_name varchar2(20);

begin
open v_result for select empno,ename from emp;

loop
fetch v_result into v_id,v_name;
exit when v_result%notfound;
dbms_output.put_line('列id的值:'||to_char(v_id));

dbms_output.put_line('列name的值:'||v_name);
end loop;

close v_result;

exception
  when others then
    dbms_output.put_line(sqlerrm);
end;

2.通过for循环

DECLARE  
      CURSOR emp_cursor IS    
  SELECT empno, ename FROM emp;   
    BEGIN  
    FOR Emp_record IN emp_cursor LOOP      
        DBMS_OUTPUT.PUT_LINE(Emp_record.empno|| Emp_record.ename);   
        END LOOP;   
        END;  
3.另一种形式的for循环

BEGIN

FOR re IN (SELECT ename FROM EMP)  LOOP

DBMS_OUTPUT.PUT_LINE(re.ename)

END LOOP;

END;

4.游标的属性

  1. %ROWCOUNT   整型  获得FETCH语句返回的数据行数
  2. %FOUND  布尔型 最近的FETCH语句返回一行数据则为真,否则为假
  3. %NOTFOUND   布尔型 与%FOUND属性返回值相反
  4. %ISOPEN 布尔型 游标已经打开时值为真,否则为假

declare
   names varchar2(20);
   cursor emp_cursor is
   select ename from emp;
   begin
   open emp_cursor;
   if emp_cursor%isopen then
   loop
   fetch emp_cursor into names;
   exit when emp_cursor%notfound;
    DBMS_OUTPUT.PUT_LINE(emp_cursor%ROWCOUNT||names);
   end loop;
   else
   DBMS_OUTPUT.PUT_LINE('没有相关信息');
   end if;
   close emp_cursor;
   end;

5.带参数的游标

DECLARE

V_empno NUMBER(5);

V_ename VARCHAR2(10);

CURSOR  emp_cursor(p_deptno NUMBER,     p_job VARCHAR2) IS

SELECT  empno, ename FROM emp

WHERE   deptno = p_deptno AND job = p_job;

BEGIN

OPEN emp_cursor(10, 'CLERK');

LOOP

FETCH emp_cursor INTO v_empno,v_ename;

EXIT WHEN emp_cursor%NOTFOUND;

DBMS_OUTPUT.PUT_LINE(v_empno||','||v_ename);

END LOOP;

END;

转载于:https://www.cnblogs.com/yuloe2012/archive/2012/12/11/2812947.html

oracle中通过游标实现查询相关推荐

  1. 在oracle中游标的操作,Oracle中的游标和函数详解

    Oracle中的游标和函数详解 1.游标 游标是一种 PL/SQL 控制结构:可以对 SQL 语句的处理进行显示控制,便于对表的行数据 逐条进行处理. 游标并不是一个数据库对象,只是存留在内存中. 操 ...

  2. 查询oracle中用户的角色,oracle中用户角色的查询和授权

    用户拥有的系统权限 select  privilege  from dba_sys_privs  where grantee='&USERNAME' union select  privile ...

  3. ORACLE中使用SQL语句查询所有员工的职位信息,并用DISTINCT消除重复信息。

    ORACLE中使用SQL语句查询所有员工的职位信息,并用DISTINCT消除重复信息. 在sqlplus中执行下面语句: select job from emp: 显示结果如下: SQL> se ...

  4. oracle中创建游标,oracle 存储过程创建游标

    Oracle与Sql Server差异点详解 1.create函数或存储过程异同点 Oracle 创建函数或存储过程一般是 create or replace -- SQL SERVER 则是在创建之 ...

  5. Oracle中cursor(游标)总结

    1.       游标: 容器,存储SQL语句影响行数. 2.       游标类型: 隐式游标,显示游标,REF游标.其中,隐式游标和显示游标属于静态游标(运行前将游标与SQL语句关联),REF游标 ...

  6. day02: SQL_DML, oracle中sql的各种查询

    1.oraclesql的特性 pLsql显示: 修改显示的格式 SQL> set pagesize 300; SQL> set linesize 300; SQL> select e ...

  7. 在Oracle中如何让SELECT查询绕过UNDO

    是否有想过如何在Oracle中实现脏读(dirty read),在Oracle官方文档或者Asktom的时候显然会提到Oracle是不实现脏读的, 总是有undo来提供数据块的前镜像(before i ...

  8. ArcGIS——数据库空间SQL(一、oracle中使用sql空间查询及st_astext等函数出错问题)

    一.引言 将shp文件导入oracle中就想着直接用sql进行普通查询和空间查询,这样直接通过webserver发布就可以不用arcgis server直接进行接口调用了,感觉这样比较接触底层些,所以 ...

  9. Oracle中Timestamp类型字段查询结果格式化处理

    在使用Oracle数据库时,把Timestamp类型的字段查出来显示到界面上居然是一串数字,不符合我们常见的要求,我就查了一下,发现中间还有很多道道,Oracle查出来的Timestamp类型和jav ...

最新文章

  1. YOLOV3+window10+cuda8.0+cudnn6.0安装过程
  2. 撰写英文SCI文章的技巧
  3. [Eclipse]GEF入门系列(九、增加易用性)
  4. 线程池原理与自定义线程池
  5. leetcode 299. Bulls and Cows | 299. 猜数字游戏(Java)
  6. CRM软件设计评测点与采集测评点
  7. 1282B1. K for the Price of One (Easy Version)
  8. The authors of these two monitoring tools
  9. html中哪些属于块级标记,html行级标记和块级标记都有哪些?
  10. java中数字循环嵌套举例,在Java程序中,复杂算法可以通过循环语句和的相互嵌套来实现。...
  11. java初级开发面试题
  12. 使用S32DS集成MCAL
  13. 机电工程学院互联网+特色专业17级顶岗实习欢送会​圆满落幕
  14. 计算机表格排版,你必须要知道的excel排版技巧
  15. UE4 Spline
  16. 利用大智慧DDE数据生成每只股票的历史数据文件(SQLServer2005)
  17. 这特么也太好看了----------博客园主题美化
  18. 安装和使用Linux花生壳(公网版)
  19. 凯悦旗下中高端酒店品牌逸扉在上海亮相
  20. Java计算机IT编程文档常见单词翻译

热门文章

  1. w2k telnet port change
  2. 搞大了,修改一个参数后重启数据库服务器出错CRS-0184
  3. linux shell 时间运算以及时间差计算方法
  4. Android 极广推送接入
  5. android removeRule的使用
  6. WebKit DOM Event (二)
  7. Android 蓝牙操作--读取远程已配对的蓝牙设备
  8. Android使用NDK OpenGL ES3.0绘制一个三角形
  9. 模拟分发扑克牌(python实现)
  10. Python-按照list中dict的某个key进行排序