`
骑自行车去旅行
  • 浏览: 11321 次
  • 性别: 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;
分享到:
评论

相关推荐

    PL/SQL程序设计

    除此之外,可以在ORACLE数据库的某些客户端工具中,使用PL/SQL语言也是该语言的一个特点。本章的主要内容是讨论引入PL/SQL语言的必要性和该语言的主要特点,以及了解PL/SQL语言的重要性和数据库版本问题。还要介绍...

    ORACLE 数据库开发_PLSQL基础.doc

    大量源码案例,手把手教你PLSQL数据库开发。...---- 第五章 PL/SQL游标 ---- ---- 第六章 HANDLE EXCEPTION ---- ---- 第七章 SUB PROGRAM ---- ---- 第八章 PACKAGE ---- ---- 第九章 TRIGGER ----

    OraclePLSQL编程经典例子

    pl/sql不仅允许嵌入式sql语言,还可以定义变量和常量,允许使用条件语句和循环语句,允许使用例外处理各种错误。这样使得他的功能变的更强大。缺点是移植性不好。 编写一个存储过程,向表中添加数据。 1. create ...

    收获不止SQL优化

    13.1.3 PL/SQL的游标合并 361 13.1.4 动态SQL 364 13.1.5 使用10046 trace跟踪PL/SQL 368 13.2 PL/SQL优化其他相关扩展 369 13.2.1 编译无法成功 369 13.2.2 通用脚本分享 370 13.3 本章习题、总结与延伸 380...

    收获,不止SQL优化--抓住SQL的本质

    13.1.3 PL/SQL的游标合并 361 13.1.4 动态SQL 364 13.1.5 使用10046trace 跟踪PL/SQL 368 13.2 PL/SQL优化其他相关扩展 369 13.2.1 编译无法成功 369 13.2.2 通用脚本分享 370 13.3 本章习题、总结与延伸 380...

    Oracle11g从入门到精通

    6.5.3 使用PL/SQL语言 6.5.4 数据查询 第7章 Oracle数据库管理操作 7.1 学会使用视图 7.1.1 增加安全性 7.1.2 隐藏数据的复杂性 7.1.3 实现命名简洁性和易读性 7.1.4 实现更改灵活性 7.2 实现记录的唯一性 ...

    Oracle11g从入门到精通2

    6.5.3 使用PL/SQL语言 6.5.4 数据查询 第7章 Oracle数据库管理操作 7.1 学会使用视图 7.1.1 增加安全性 7.1.2 隐藏数据的复杂性 7.1.3 实现命名简洁性和易读性 7.1.4 实现更改灵活性 7.2 实现记录...

    oracle中游标的使用

    很详细很基础的讲了oracle中游标的使用,每一种有游标具体的用法,包含有案例的pl/sql的代码。

    oracle常用命令-一完整的电子商务网案例

    Oracle常用命令6(PL/SQL) Oracle常用命令7(游标) Oracle常用命令8(过程) Oracle常用命令9(函数) Oracle常用命令10(程序包) Oracle常用命令11(触发器) Oracle常用命令12(导入:imp、导出:exp) ...

    Oracle优化日记:一个金牌DBA的故事 白鳝.扫描版

    调整游标相关参数6月1日 ORA-4030和内存泄漏今日点评优化小技巧 如何分析ORA-40306月2日 优化方案今日点评优化小技巧 一个提供参考的 优化方案优化小技巧 游标的共享6月3日 拆分大型SQL优化小技巧 拆分复杂SQL6月4日...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

     数据查询语言 (Data Query Language, DQL) 是SQL语言中,负责进行数据查询而不会对数据本身进行修改的语句,这是最基本的SQL语句。例如:SELECT(查询)  数据控制语言Data Controlling Language(DCL),用来...

    php网络开发完全手册

    16.3.8 游标 273 16.3.9 存储过程的删除 275 16.4 触发器的设计 275 16.4.1 触发器的创建与触发 275 16.4.2 触发器的删除 276 16.5 PHP与存储过程、触发器 277 16.5.1 PHP调用存储过程 277 16.5.2 PHP调用触发器 277...

    Oracle 教程电子书 3本压缩 精心推荐

    第十八章 PL SQL .......................................................................................................................... 67 第十九章 游标、函数 .........................................

Global site tag (gtag.js) - Google Analytics