`
骑自行车去旅行
  • 浏览: 11762 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

pl/sql 使用游标属性,案例

阅读更多
使用游标

1)显示游标:

CURSOR name_cursor IS select statement;

2)打开游标:

OPEN name_cursor;

3)提取游标

FETCH name_cursor INTO variable1,variable2.............

4)关闭游标

CLOSE name_cursor;

显示游标的属性:

%ISOPEN:显示游标是否打开

%FOUND:是否从结果集中取到数据

%NOTFOUND:是否未从结果集中取到数据

%ROWCOUNT:已经取到的数据,不是说集合中间有多少数据,请这里注意;

DECLARE
CURSOR a_cursor IS SELECT id,name from test1;
v_id test1.id%TYPE;
v_name test1.name%TYPE;
BEGIN
OPEN a_cursor;
FETCH a_cursor INTO v_id,v_name;
dbms_output.put_line(v_id);
dbms_output.put_line(v_name);
CLOSE a_cursor;
END;

使用游标更新或者删除数据:

如果想通过游标更新或者删除数据的话,那么在定义游标的时候必须指定 FOR UPDATE

如下:

CURSOR my_cursor IS SELECT * FROM test1 FOR UPDATE;

UPDATE table_name SET column=xx WHERE CURRENT OF name_cursor;

DELETE table_name WHERE CURRENT OF name_cursor;

必须指定WHERE CURRENT OF name_current;

使用例外:

EXCEPTION

WHEN  e_name1 or e_name2 THEN

statement1;

WHEN 2_name3 THEN

statement2;

ELSE

statement3;

WHEN OTHERS THEN

statement4;

其中自定义异常是这样的:


DECLARE
e_name EXCEPTION;
BEGIN
RAISE e_name;
EXCEPTION
WHEN e_name THEN
dbms_output.put_line('异常抛出');
END;

使用复合数据:

TYPE my_record_type IS RECORD

DECLARE
TYPE my_record_type IS RECORD(
id test1.id%TYPE,
name test1.name%TYPE
);
r1 my_record_type;
BEGIN
SELECT id,name INTO r1 FROM test1 WHERE id=1;      
dbms_output.put_line(r1.id || r1.name);
END;


DECLARE
TYPE my_record_type IS RECORD(
id test1.id%TYPE,
name test1.name%TYPE
);
r1 test1%ROWTYPE;
BEGIN
SELECT * INTO r1 FROM test1 WHERE id=1; 

dbms_output.put_line(r1.id || r1.name);
END;
/

使用PL/SQl表:

DECLARE
TYPE my_table_type IS TABLE OF NUMBER(2,0)
INDEX BY BINARY_INTEGER;
name_table my_table_type;
BEGIN
select id BULK COLLECT INTO name_table from test1;
dbms_output.put_line(name_table(1));
End;

使用PL/SQL记录表:

DECLARE
TYPE my_table_type IS TABLE OF test1%ROWTYPE
INDEX BY BINARY_INTEGER;
name_table my_table_type;
BEGIN
select * BULK COLLECT INTO name_table from test1;
dbms_output.put_line(name_table(1).name);
End;

DECLARE
TYPE my_table_type IS TABLE OF test1%ROWTYPE
INDEX BY BINARY_INTEGER;
name_table my_table_type;
BEGIN
select * BULK COLLECT INTO name_table from test1;   --count可以得到这个表的长度
FOR i in 1..name_table.count LOOP
dbms_output.put_line(name_table(i).name);
END LOOP;
End;
分享到:
评论

相关推荐

    ORACLE PL/SQL从入门到精通

    ORACLE PL/SQL是从入门到精通的专业知识,涵盖了数据库开发与管理的多个方面,包括触发器、过程、函数、软件包、异常处理、游标、循环、分支、变量使用、数据库安装等关键知识点。 触发器是数据库中用来保证数据...

    Oracle PL/SQL程序设计(第5版)(上下册)

    - **集合与记录**:学习如何使用PL/SQL中的集合和记录类型,这些结构可以帮助更高效地处理数据集。 - **游标**:介绍游标的使用方法,包括隐式游标和显式游标,以及如何利用游标遍历查询结果。 #### 四、PL/SQL中的...

    Oracle PL/SQL 实例精解(第4版涵盖Oracle 11g)+源码脚本

    总的来说,"Oracle PL/SQL 实例精解(第4版)"是一本全面的教程,不仅介绍了PL/SQL的基础,还涵盖了高级主题和实践案例,对于希望提升Oracle数据库编程技能的开发者来说,是一本不可多得的参考书籍。配合源码脚本,...

    精通pl/sql

    《精通PL/SQL》这本书是针对Oracle数据库系统中PL/SQL编程语言的深度解析与实践指南,主要面向希望提升在Oracle环境下使用PL/SQL技能的专业人士。PL/SQL,全称为Procedural Language/Structured Query Language,是...

    PLSQL.zip_oracl_oracle pl/sql ppt_pl sql ppt tutorial_pl/sql_pls

    2. **掌握数据操作**:熟悉如何使用PL/SQL对表进行增删改查操作。 3. **深入异常处理**:学习如何处理运行时错误,编写健壮的代码。 4. **实践案例**:教程可能包含实际的示例代码,帮助你将理论知识应用于实践中...

    PL/SQL程序设计

    最后,书中可能还会涵盖PL/SQL在实际项目中的应用案例,比如如何使用PL/SQL构建复杂的业务逻辑,如何与其他编程语言(如Java、C#)集成,以及如何使用PL/SQL处理数据库的并发问题。 总之,《PL/SQL程序设计》这本书...

    精通Oracle 10g PL/SQL编程

    最后,书中会涵盖PL/SQL在实际项目中的应用案例,提供实际操作的指导,帮助读者将理论知识转化为实际技能。此外,书中可能还包含了一些实用的工具和技巧,如调试PL/SQL代码、错误处理和日志记录等,以提升开发效率和...

    PL/SQL开发,性能优化等文档

    - 性能分析:使用动态性能视图(如V$SESSION,V$SQL,V$SQLAREA等)监控SQL和PL/SQL执行情况。 - 优化器统计信息:定期收集和更新,确保优化器做出正确的执行计划选择。 - AWR和ASH报告:Oracle自动工作区管理和...

    Oracle PL/SQL语言基础

    PL/SQL使用的字符集包括所有大写和小写字母、0-9的阿拉伯数字以及各种操作符。这些字符构成了PL/SQL程序的基础。 #### 四、PL/SQL标识符 - **最大长度**:30个字符 - **不区分大小写**:尽管PL/SQL不区分大小写,...

    Oracle PL SQL专家指南_高级PLSQL解决方案的设计与开发

    - PL/SQL包和类型:创建和使用 - PL/SQL中的对象关系编程 10. **AppendixA - 实战案例与解决方案** - 解决实际问题的PL/SQL代码示例 - 复杂业务逻辑的实现 - 应对挑战性的性能问题 这些章节覆盖了从基础到...

    Oracle8i PL/SQL 高级程序设计

    3. **游标**:游标是PL/SQL中处理单行结果集的关键工具,用于动态地处理SQL查询结果。书中会详细解释游标的使用方法,包括隐式游标和显式游标,以及如何在循环中使用游标。 4. **记录和集合**:PL/SQL支持用户定义...

    PL/SQL应用开发实训指导

    总结来说,"PL/SQL应用开发实训指导"旨在帮助开发者熟练运用PL/SQL进行Oracle数据库的程序设计,通过实际操作和案例分析,提升开发技能。在学习过程中,除了掌握基本语法和编程结构,还要理解数据库原理,以便更好地...

    PL/SQL手册———oracle10g

    该示例展示了如何使用PL/SQL来处理复杂的业务逻辑。 ```plsql DECLARE -- 定义变量 v_bonus NUMBER; BEGIN -- 计算奖金 SELECT salary * 0.15 INTO v_bonus FROM employees WHERE employee_id = 100; -- 插入...

    PL/SQL语言优化以及编程培训教材

    《PL/SQL语言优化以及编程培训教材》是一份详尽且深入的学习资源,旨在帮助用户提升在Oracle数据库环境中使用PL/SQL的技能和效率。PL/SQL,全称Procedural Language/Structured Query Language,是Oracle数据库系统...

    PL/SQL详解 从入门到精通 英文版

    包是一种组织PL/SQL对象(如子程序、游标、变量等)的方式。通过将相关的对象组合在一起,可以提高代码的可读性和可维护性。 ##### 5.3 类型定义 PL/SQL允许用户定义自己的数据类型,包括记录类型、集合类型等。...

    Oracle游标使用案例大全

    - 游标函数:返回一个游标类型的函数,可以作为其他PL/SQL块的输入,使得游标可以在多个层次的调用结构中使用。 10. **游标与事务管理** - 游标操作可以包含在事务中,确保数据的一致性和完整性。 - 提交或回滚...

Global site tag (gtag.js) - Google Analytics