第一讲游标的灵活运用一_第1页
第一讲游标的灵活运用一_第2页
第一讲游标的灵活运用一_第3页
第一讲游标的灵活运用一_第4页
第一讲游标的灵活运用一_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、讲师:文心讲师:文心PL/SQL高级编程高级编程 游标的灵活运用游标的灵活运用了解游标的类型掌握隐式游标的应用Oracle 服务器服务器执行 PL/SQL 程序内存单元保存到游标中一次处理一行检索行提取行逐行处理查询结果,以编程的方式访问数据游标的类型:隐式游标REF 游标显式游标在 PL/SQL 程序中执行DML SQL 语句时自动创建隐式游标。 显式游标用于处理返回多行的查询。REF 游标用于处理运行时才能确定的动态 SQL 查询的结果游标类型游标(cursor )是一个指向上下文区的句柄或指针 可以用来控制上下文区和处理语句时上下文区会发生的事情。处理方式:显式隐式在PL/SQL中使用D

2、ML语句时自动创建隐式游标隐式游标自动声明、打开和关闭,其名为 SQL通过检查隐式游标的属性可以获得最近执行的DML 语句的信息隐式游标的属性有:%FOUND SQL 语句影响了一行或多行时为 TRUE%NOTFOUND SQL 语句没有影响任何行时为TRUE%ROWCOUNT SQL 语句影响的行数%ISOPEN - 游标是否打开,始终为FALSEPL/SQL隐含打开和关闭游标DECLAREDECLARE v_RoomData rooms%ROWTYPE; v_RoomData rooms%ROWTYPE;BEGINBEGIN SELECT SELECT * * INTO v_RoomDat

3、a FROM rooms WHERE room_id = -1; INTO v_RoomData FROM rooms WHERE room_id = -1; IF SQL%NOTFOUND THEN / IF SQL%NOTFOUND THEN /* *注意,这里不执行,以上自动引发注意,这里不执行,以上自动引发select intoselect into预定义预定义异常异常* */ / INSERT INTO temp_table (char_col) VALUES (Not found!); INSERT INTO temp_table (char_col) VALUES (Not fo

4、und!); END IF; END IF;EXCEPTIONEXCEPTION WHEN NO_DATA_FOUND THEN/ WHEN NO_DATA_FOUND THEN/* *注意,这是真正执行的注意,这是真正执行的* */ / INSERT INTO temp_table (char_col) INSERT INTO temp_table (char_col) VALUES (Not found, exception handler); VALUES (Not found, exception handler);END;END;SQL SET SERVEROUTPUT ONSQL

5、BEGINUPDATE toys SET toyprice=270WHERE toyid= P005;IF SQL%FOUND THENDBMS_OUTPUT.PUT_LINE(表已更新);END IF; END;/只有在 DML 语句影响一行或多行时,才返回 TrueSQL SET SERVEROUTPUT ONSQL DECLARE v_TOYID TOYS.ID%type := &TOYID; v_TOYNAME TOYS.NAME%Type := &TOYNAME; BEGIN UPDATE TOYS SET NAME = v_TOYNAME WHERE toyid=v

6、_TOYID; IF SQL%NOTFOUND THEN DBMS_OUTPUT.PUT_LINE(编号未找到。); ELSEDBMS_OUTPUT.PUT_LINE(表已更新);END IF; END;/如果 DML 语句不影响任何行,则返回 True SQL SET SERVEROUTPUT ON SQL BEGINUPDATE vendor_masterSET venname= Rob MathewWHERE vencode=V004;DBMS_OUTPUT.PUT_LINE (SQL%ROWCOUNT); END; /返回 DML 语句影响的行数SQL SET SERVEROUTPUT

7、 ONSQL DECLARE empid VARCHAR2(10);desig VARCHAR2(10); BEGINempid:= &Employeeid;SELECT designation INTO desig FROM employee WHERE empno=empid; EXCEPTIONWHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE(职员未找到); END; /如果没有与SELECT INTO语句中的条件匹配的行,将引发NO_DATA_FOUND异常SQL SET SERVEROUTPUT ONSQL DECLARE empid VARCHAR2(10); BEGINSELECT empno INTO empid FROM employee; EXCEPTIONWHEN TOO_MANY_ROWS THEN DBMS_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论