首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Oracle频道
中国IT教育
Google
首页 入门基础 安装配置 体系架构 PLSQL 备份恢复 性能调优 开发技术 资讯动态 考试认证 下载 专题 讨论
您现在的位置: 中国IT实验室 >> Oracle >> PLSQL >> 正文

PL/SQL - 嵌套游标 cursor

 
  下面我要查询 test2 中的数据,查询条件是 test2.id 在 test1.a 中对应的记录数。比如我要查询表 test2.id 在 test1.a 中不存在的记录;查询表 test2.id 在test1.a 中存在1条的记录,存在2条的记录,存在3条的记录……,我可以使用嵌套游标实现:
 
SQL> create function f_count(cur_names in sys_refcursor) return number
  2  is
  3    v_name test2.name%type;
  4    n_count number(5) := 0;
  5  begin
  6    loop
  7      fetch cur_names into v_name;
  8      exit when cur_names%notfound;
  9      n_count := n_count + 1;
 10    end loop;
 11    return n_count;
 12  end f_count;
 13  /
 
函数已创建。
 
SQL> select id, name
  2    from test2
  3   where f_count( cursor( select a from test1 where a = test2.id ) ) = 1;
 
        ID NAME
---------- ---------------------------------------------------
         4 yuechaotian4
         5 yuechaotian5
         6 yuechaotian6
 
SQL> select id, name
  2    from test2
  3   where f_count( cursor( select a from test1 where a = test2.id ) ) = 0;
 
        ID NAME
---------- ---------------------------------------------------
         7 yuechaotian7
         8 yuechaotian8
         9 yuechaotian9
        10 yuechaotian10
 
SQL> select id, name
  2    from test2
  3   where f_count( cursor( select a from test1 where a = test2.id ) ) = 2;
 
        ID NAME
---------- ---------------------------------------------------
         2 yuechaotian2
         3 yuechaotian3
 
SQL> select id, name
  2    from test2
  3   where f_count( cursor( select a from test1 where a = test2.id ) ) = 3;
 
        ID NAME
---------- ---------------------------------------------------
         1 yuechaotian1

上一页  [1] [2] [3] 

【责编:michael】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·JAVA开源技术介绍专题
 ·Java嵌入式开发之J2ME技术专题
 ·超前体验 Oracle 11g的5个新特性…
 ·揭密使用VB.NET的五个实用技巧
 ·Oracle和SQL Server常用函数对比专题…
 ·展现C#世界 C#程序设计专题…
 ·Java入门 Tomcat的配置技巧精华专题…
 ·Oracle RMAN物理备份技术详解…
 今日更新
· 关于Oracle学习以及DBA工作机会
· Oracle初学者入门指南-什么是Metalink?
· Oracle10g新进程 MMON 和 MMNL
· ORA-00600: kmgs_pre_process_request_6
· 创建Oracle数据库 win 10g
· Oracle RAC环境对并行查询的支持
· Oracle 10g下asm安装:候选盘问题
· 如何使用exp以传输表空间的方式将其导出
· 个人经验总结:Oracle数据库SCN号详解
· 讲解往表中顺序插入N条记录的简易方法
 社区讨论
 博客论点
 频道精选
· 新版CCNA考试大纲 07年8月1日生效
· 新手学习宝典:Linux常用命令全集
· 知已知彼,深入了解系统安全知识
· 从入门到精通 java初学者实践系列教程
· 共同学习——Oracle入门基础专题
· ADO.net与PowerBuilder的综合比较
· 评论:中国互联网“钱”途何在?
· 中科院:龙芯要成"中国奔腾" 能卖1亿颗
 Oracle频道相关导航
技术导航:
 入门基础
 安装配置
 体系架构
 考试认证
 资讯动态
 PL/SQL
 备份与恢复
 性能调优
 Oracle开发
产品导航
 存储
 新品导购 | 评测 | 存储交换 | 磁盘存储
 数据备份 | 网络存储 | 光存储
 服务器
 行情 | 新闻 | 产品导购 | 评测