`

PL/SQL 总结(3)

阅读更多

使用游标

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;

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/turkeyzhou/archive/2008/05/14/2443676.aspx

分享到:
评论

相关推荐

    PL/SQL学习总结

    PL/SQL学习总结是本人学习ORACLE报表开发及FROM开发的总结,包括存储程序及,包等

    sql、pl/sql总结 例题

    初学者的经典范例,各种试题和例题,有答案,重新总结的

    PL/SQL学习资料

    这是我在学习PL/SQL中总结的一些东西,希望对他家有帮助.

    pl/sql学习笔记

    一个很好的学习 pl/sql的入门文章 作者总结的非常好 非常适合入门学者

    Oracle Sql Pl/Sql 性能优化 精华

    富士康MIS 资深人员总结的Oracle PL/Sql 性能优化心得 给新进员工学习之文档 <br>绝对精华 写出专业的Sql

    SQL、pl/sql基础语句大全

    自己总结的,适合于初学者,下载后打印即可使用。

    pl/sql 编程基础

    专门抽取数据库中比较难懂的过程语言pl/sql总结了一下

    pl/sql知识点总结入门初级

    pl/sql知识点总结,以及一些在开发中经常烦的小毛病

    PL/SQL 详解

    ORACLE 学习文档,总结,囊括常用过程,函数,游标,异常处理。。。,非常实用

    pl/sql及常见实用oracle语句学习

    这是本人在实践中收集总结的,有存储过程、序列、游标、触发器、索引及其它一些常用的语句(如日期、over partion by具体使用包括一些例子),还有两本高清这方面的书,一起放在里面,方便大家学习。

    oraclePL/SQL精华笔记

    此文档由个人总结快速学习pl/sql的案例及说明,也是快速查询pl、sql开发的精华文档,在此提供给大家学习与查阅

    数据库资料,PL/SQL

    数据库资料,PL/SQL,数据库全解,平时问题总结,经典查找总结

    pl/sql语法说明和总结

    对于pl/sql的语法的详细说明和总结 其中给出一些的例子来说明兑语法的使用

    PL/SQL编程经验小结开发者网络Oracle

    平时在PL/SQL中的编程中遇到一些问题,这里以问答的形式来进行把它们总结下来,以供大家分享。 1、当需要向表中装载大量的数据流或者需要处理大量的数据流的时候,能否使用管道提高处理效率? 管道函数对于改善并行...

    pl/sql 开发最佳实践

    这是一篇关于oracle开发入门详细文档,是我自己开发总结出来的。还包括各种开发的最佳实践,喜欢对各位想学oracle pl/sql开发的人有所帮助。

    PLSQL程序设计(基础篇).doc

    之所以不怕麻烦把有关PL/SQL的知识写下来,一方面,是为了加深理解,便于以后随时翻阅,另一方面,是因为自己看书总是不能从头看到尾,仔仔细细,喜欢跳跃式阅读,导致学习过程中,容易有遗漏。所以,将学习到的知识...

    PL/SQL + Oracle客户端 配置记录

    oracle pl/sql也是在别人帮助下完成配置。  这次电脑重装后,自己搞定总结了下怎么配置。  1.下载Oracle 客户端。  安装的版本是win64_11gR2_client.zip,587 MB。 链接地址在官网比较难找。在官网下载还需要...

    PLSQL程序性能分析及优化

    实施过程中,经常会使用 PL/SQL Developer 工具进行数据转换和处理业务数据。通过性能 优化来提高程序执行效率是必须掌握的一份技能。性能问题中绝大部分都是由于程序编写的 不合理、不规范造成的。本文档阐述了程序...

    Oracle9iPL/SQL编程的经验小结

    平时在PL/SQL中的编程中遇到一些问题,这里以问答的形式来进行把它们总结下来,以供大家分享。 1、当需要向表中装载大量的数据流或者需要处理大量的数据流的时候,能否使用管道提高处理效率? 管道函数对于改善...

    Oracle经典教程(珍藏)

    走进Oracle 1. Oracle简介 2. Oracle安装 3. Oracle客户端工具 4. Oracle服务 5. Oracle启动和关闭 6. Oracle用户和权限 ...3. PL/SQL数据类型 4. PL/SQL条件控制和循环控制 5. PL/SQL中动态执行SQL语句 ....

Global site tag (gtag.js) - Google Analytics