`

Oracle 10g数据库游标的使用学习一

阅读更多
--使用游标
1)9i以前的使用方法,一次取一条数据
--1、显示游标
declare
--定义游标
cursor temp_cursor is
select t.name,t.english_name from communitytype t;
--where t.community_type_id = 'ebook';
--定义变量
v_name communitytype.name%type;
v_english_name communitytype.english_name%type;
begin
--打开游标
open temp_cursor;
--循环取数据
loop
--使用fetch into语句取数据,每次只能取一行数据
fetch temp_cursor into v_name,v_english_name;
--当游标找不到数据时,退出
exit when temp_cursor%notfound;
dbms_output.put_line(v_name||':'||v_english_name);
end loop;
--关闭游标
close temp_cursor;
end;


    按需出版:test
    机构典藏:333
    电子图书:ebook
    学术期刊:ZJUPLink
    学位论文:ZJUDissertation
    课程教学:ZJUEducation
    收藏艺术品图鉴:
    Epub资源:
    专题订阅:ZJUSubjectSubscribe
    新书快读:newbook
    自助出版:wlcb
    图书馆新书:Library's New Book
    新出版图书:BookSeller New Book
    手机听书:tingbook
    人文社科:renwensheke
    测试资源库:test
    给对方:
    liangCC:
    0524teste:
    test01:
    团队资料库:Research Group
    0525test:
    test07:
    科教兴国:
    档案资源:archive
    多媒体教案:dmtja
    0524test:0524test
    qlltest:
    qlltest:
    05242:
    asd:asd
    ddd:ddd
    qq:qqq
    测试资源库:test001


用for循环访问游标中的记录时,可以不显示的打开或关闭游标,for循环回自动的执行这些操作
--用for循环访问游标中的记录时,可以不显示的打开或关闭游标,for循环回自动的执行这些操作
declare
--定义游标
cursor temp_cursor is
select t.name,t.english_name from communitytype t;
begin
--循环取数据
for v_comtype in temp_cursor loop
dbms_output.put_line(v_comtype.name||','||v_comtype.english_name);
end loop;
end;


    初中多媒体教案,
    团队资料库,
    档案资源,
    按需出版,
    机构典藏,
    电子图书,ebook
    学术期刊,ZJUPLink
    学位论文,ZJUDissertation
    课程教学,ZJUEducation
    测试,test
    收藏艺术品图鉴,
    Epub资源,
    专题订阅,ZJUSubjectSubscribe
    新书快读,newbook
    投稿指南,
    图书馆新书,Library's New Book
    新出版图书,BookSeller New Book
    手机听书,tingbook
    人文社科,renwensheke
    测试,
    测试资源库,test
    给对方,
    书友会,
    自助出版,wlcb


2)采用集合一次取所有数据
--使用游标
--1、显示游标
declare
--定义游标
cursor temp_cursor is
select t.name from communitytype t;
--定义嵌套表变量
type name_table_type is table of communitytype.name%type;
name_table name_table_type;
begin
--打开游标
open temp_cursor;
--使用bulk collect into语句取出全部数据
fetch temp_cursor bulk collect into name_table;
for i in 1..name_table.count loop
dbms_output.put_line(name_table(i));
end loop;
--关闭游标
close temp_cursor;
end;


    按需出版
    机构典藏
    电子图书
    学术期刊
    学位论文
    课程教学
    收藏艺术品图鉴
    Epub资源
    专题订阅
    新书快读
    自助出版
    图书馆新书
    新出版图书
    手机听书
    人文社科
    测试资源库
    给对方
    liangCC
    0524teste
    test01
    团队资料库
    0525test
    test07
    科教兴国
    档案资源
    多媒体教案
    0524test
    qlltest
    qlltest
    05242
    asd
    ddd
    qq
    测试资源库

3)利用集合变量一次取部分数据
--1、显示游标
declare
--定义游标
cursor temp_cursor is
select t.name from communitytype t;
--定义变长数组变量
type name_array_type is varray(5) of communitytype.name%type;
name_array name_array_type;
begin
--打开游标
open temp_cursor;
--循环取数据
loop
--使用fetch into语句提取部分数据,每次取5个
fetch temp_cursor bulk collect into name_array limit 5;
dbms_output.put_line('资源库名称:');
for i in 1..name_array.count loop
dbms_output.put_line(name_array(i));
end loop;
dbms_output.new_line;
--当游标找不到数据时,退出
exit when temp_cursor%notfound;
end loop;
--关闭游标
close temp_cursor;
end;


    资源库名称:
    按需出版
    机构典藏
    电子图书
    学术期刊
    学位论文

    资源库名称:
    课程教学
    收藏艺术品图鉴
    Epub资源
    专题订阅
    新书快读

    资源库名称:
    自助出版
    图书馆新书
    新出版图书
    手机听书
    人文社科

    资源库名称:
    测试资源库
    给对方
    liangCC
    0524teste
    test01

    资源库名称:
    团队资料库
    0525test
    test07
    科教兴国
    档案资源

    资源库名称:
    多媒体教案
    0524test
    qlltest
    qlltest
    05242

    资源库名称:
    asd
    ddd
    qq
    测试资源库


4)、使用游标属性 isopen rowcount
--4、使用游标属性 isopen rowcount
declare
--定义游标
cursor temp_cursor is
select t.name from communitytype t;
--定义变量
type name_table_type is table of communitytype.name%type;
name_table name_table_type;
begin
--打开游标
if not temp_cursor%isopen 
then open temp_cursor;
end if;
--取数据
--使用fetch into语句提取部分数据,每次取5个
fetch temp_cursor bulk collect into name_table;
dbms_output.put_line('查询总行数:'||temp_cursor%rowcount);
--关闭游标
close temp_cursor;
end;


    查询总行数:34

5)、基于游标定义记录变量
--5、基于游标定义记录变量
declare
cursor emp_cursor is
select ct.community_type_id,ct.name 
from communitytype ct
where community_type_id = 'ebook';
--定义基于游标的记录变量
emp_record emp_cursor%rowtype;
begin
open emp_cursor;
loop
fetch emp_cursor into emp_record;
exit when emp_cursor%notfound;
end loop;
dbms_output.put_line(emp_record.name);  
close emp_cursor;
end;


    电子图书

6)使用有参数的游标
--使用有参数的游标,即指定游标从结果集中去取community_type_id为游标参数的记录
declare
cursor emp_cursor(id communitytype.community_type_id%type) is
select name from communitytype
where community_type_id = id;
v_name communitytype.name%type;
begin
open emp_cursor('ebook');
loop
fetch emp_cursor into v_name;
exit when emp_cursor%notfound;
dbms_output.put_line(v_name); 
end loop;
close emp_cursor;
end;


    电子图书
分享到:
评论

相关推荐

    oracle10g 函数返回游标类型

    在Oracle 10g数据库系统中,开发人员可以利用PL/SQL语言来创建复杂的存储过程、函数以及包,以执行数据库操作。其中,一个重要的功能是能够创建返回游标类型的函数,这种函数允许用户从数据库中检索并返回一组记录,...

    Oracle11g 数据库中文 文档

    Oracle 11g数据库是Oracle公司推出的一款关系型数据库管理系统,是10g版本的升级,提供了更高级别的性能、安全性和可管理性。这款数据库系统广泛应用于企业级数据存储和处理,支持复杂的事务处理、数据仓库以及...

    oracle 10g数据库java开发

    Oracle 10g数据库与Java开发是IT领域中一个重要的结合点,特别是在企业级应用开发中,这种组合被广泛使用。Oracle 10g是一款功能强大的关系型数据库管理系统,而Java作为一种多平台、面向对象的编程语言,因其跨平台...

    oracle10G和oracle11G的OCI.dll

    比如,使用Oracle 10G的oci.dll可能无法连接到Oracle 11G数据库,反之亦然。因此,确保oci.dll与Navicat以及目标数据库版本的匹配至关重要。 6. 安全性增强:Oracle 11G在安全性方面做了大量改进,包括增强了身份...

    Oracle 11g数据库应用简明教程

    Oracle 11g数据库是Oracle公司推出的一款关系型数据库管理系统,它在企业级应用中具有广泛的应用。本简明教程将深入浅出地讲解Oracle 11g的主要特性和使用方法,帮助读者快速掌握数据库管理和开发技能。 首先,让...

    Oracle 10g数据库海量数据分页查询优化.pdf

    游标变量是 Oracle 10g 数据库中的一种特殊变量,可以用来存储查询结果。通过使用游标变量,可以减少查询时间,提高查询效率。此外,游标变量还可以用来实现批绑定,进一步提高查询效率。 batch binding 批绑定...

    Oracle 11g数据库系统设计、开发、管理与应用

    《Oracle 11g数据库系统设计、开发、管理与应用》是一本全面涵盖Oracle数据库技术的专业教程,适合数据库管理员(DBA)、开发人员以及对Oracle技术感兴趣的学者学习。PDF格式的书籍便于电子阅读和存储,使得读者可以...

    Oracle10g数据库管理与应用系统开发光盘

    Oracle10g数据库管理系统是Oracle公司推出的一款强大的关系型数据库管理系统,主要应用于企业级的数据存储、管理和分析。在Oracle10g中,有许多关键的知识点和特性,对于数据库管理员(DBA)和应用开发者来说,深入...

    oracle存储过程使用游标对多表操作例子

    本文将深入探讨如何在Oracle存储过程中使用游标进行多表操作,具体通过一个示例来展示这一过程。 ### 标题与描述分析 标题:“oracle存储过程使用游标对多表操作例子”直接指出了文章的主题是关于在Oracle环境下,...

    Oracle 10g数据库基础教程 [电子教案]

    Oracle 10g数据库是Oracle公司推出的企业级关系型数据库管理系统,它在数据库管理领域具有广泛的应用。本教程将深入探讨Oracle 10g的基础知识,帮助初学者掌握这一强大的数据库系统。 首先,我们从“第1章 oracle...

    navicat链接oracle11g 数据库oci

    1. 解压下载的"Instant Client"压缩包到一个固定目录,例如"C:\Oracle\InstantClient_10_2"。 2. 配置环境变量: - 添加一个新的系统环境变量`ORACLE_HOME`,值设为解压目录。 - 在系统环境变量`PATH`中添加`%...

    oracle数据库驱动,支持oracle11g数据库

    Oracle 11g数据库还支持高级特性,如存储过程、游标、事务管理、并发控制、索引、触发器、视图等。在开发过程中,开发者可以利用JDBC API实现这些功能,提高应用的效率和复杂性。 在实际应用中,为了优化性能和确保...

    oracle10G数据库应用教程

    Oracle 10g数据库是Oracle公司推出的一款关系型数据库管理系统,是当时的重要版本,提供了许多新的特性和功能,为数据库管理员(DBA)和开发者带来了更高效、安全和灵活的数据管理体验。本教程将深入讲解Oracle 10g...

    Oracle10G数据库应用

    Oracle10G数据库应用是IT领域中的一个重要主题,尤其对于初学者来说,它是理解数据库管理和开发的基础。Oracle作为世界上最广泛使用的数据库管理系统之一,其10G版本提供了许多关键特性和功能,使得数据存储、管理及...

    Oracle10g数据库管理与应用系统开发光盘.rar

    总结,Oracle 10g数据库管理系统为数据库管理员和开发者提供了强大的工具和特性,从高性能的数据存储到灵活的应用系统开发,再到可靠的灾难恢复机制,都是其突出亮点。理解并熟练掌握这些知识点,对于在Oracle环境中...

    Oracle 10g数据库基础教程课件(第2版)-课件

    通过本教程的学习,读者将能够掌握Oracle 10g数据库的基础知识,包括安装配置、SQL操作、对象管理、安全性、备份恢复、性能优化以及新特性应用,为进一步深入学习和使用Oracle数据库打下坚实基础。

    oracle11g数据库管理2 中文版教材 (1Z0-043教材)

    "Oracle11g数据库管理2 中文版教材 (1Z0-043教材)"是针对1Z0-043考试的官方教程,这本教材详细阐述了Oracle 11g数据库管理的高级主题,旨在帮助考生理解和掌握数据库的高级概念和技术。1Z0-043是Oracle认证路径中的...

    oracle存储过程游标

    ### Oracle 存储过程与游标使用详解 在Oracle数据库管理中,存储过程与游标是两个非常重要的概念。它们可以提高数据处理的效率、增强应用程序的灵活性,并且能够简化复杂的数据库操作。本文将根据提供的内容,深入...

Global site tag (gtag.js) - Google Analytics