在定义又表示必须要带有for update子句,用于在游标结果集数据上加行共享锁,以防止其他用户在相应行上执行dml操作;当select语句引用到多张表时,使用of子句可以确定哪些表要加锁,如果没有of子句,则会在select语句所引用的全部表上加锁;nowait子句用于指定不等待锁。在提取了游标数据之后,为了更新或删除当前游标行数据,必须在update或delete语句中引用where current of 子句。
--1、使用游标更新数据
Java代码
declare
cursor emp_cursor is
--加行共享锁
select t.name,t.english_name from communitytype t for update;
--定义变量
v_name communitytype.name%type;
v_enname communitytype.english_name%type;
begin
--打开游标
open emp_cursor;
loop
fetch emp_cursor into v_name,v_enname;
exit when emp_cursor%notfound;
if v_name = '电子图书' then
update communitytype c
set c.english_name = 'ebook'
where current of emp_cursor;
end if;
end loop;
close emp_cursor;
commit;
end;
--2、使用游标删除数据,同上只需要将更新语句换成删除语句
--3、使用of子句在特定表上加行共享锁
Java代码
declare
cursor emp_cursor is
--加行共享锁
select t.name,t.english_name from communitytype t for update of t.name;
--定义基于游标的记录变量
emp_record emp_cursor%rowtype;
begin
--打开游标
open emp_cursor;
loop
fetch emp_cursor into emp_record;
exit when emp_cursor%notfound;
if emp_record.name = '电子图书' then
update communitytype c
set c.english_name = 'ebook'
where current of emp_cursor;
end if;
end loop;
close emp_cursor;
commit;
end;
--4、默认情况下当前会话要一直等待对方释放锁,使用nowait子句可以避免等待锁
Java代码
declare
cursor emp_cursor is
--加行共享锁
select t.name,t.english_name from communitytype t for update nowait;
--定义基于游标的记录变量
emp_record emp_cursor%rowtype;
begin
--打开游标
open emp_cursor;
loop
fetch emp_cursor into emp_record;
exit when emp_cursor%notfound;
if emp_record.name = '电子图书' then
update communitytype c
set c.english_name = 'ebook'
where current of emp_cursor;
end if;
end loop;
close emp_cursor;
commit;
end;
分享到:
相关推荐
游标是数据库中的一个重要概念,它允许用户在数据库中定位、检索、更新和删除数据行。当函数返回一个游标时,调用者可以使用循环或其他迭代结构来访问所有返回的记录,而不仅仅是单个结果。 ### 描述:“根据所示...
1. OCI接口:OCI提供了丰富的API(应用程序编程接口)集合,使得开发者能够通过C语言编写应用程序,实现对Oracle数据库的各种操作,如查询、插入、更新和删除数据,事务控制,游标处理等。oci.dll作为这些API的实现...
### Oracle 存储过程与游标使用详解 在Oracle数据库管理中,存储过程与游标是两个非常重要的概念。它们可以提高数据处理的效率、增强应用程序的灵活性,并且能够简化复杂的数据库操作。本文将根据提供的内容,深入...
Oracle 10g OCP(Oracle Certified Professional)是Oracle公司为数据库管理员提供的专业认证,它证明了持证者在管理Oracle 10g数据库系统方面具备高级技能和知识。这个题库是准备Oracle 10g OCP考试的重要资源,...
3. **SQL语言基础**:Oracle 10g支持标准SQL,包括数据查询、插入、更新和删除,以及更复杂的SQL语句,如联接、子查询和集合操作。理解SQL语法和性能调优技巧是数据库管理员的基础技能。 4. **PL/SQL编程**:Oracle...
- 通过ODBC数据源管理器删除与Oracle相关的数据源。 9. **清理注册表中的额外条目**: - `HKEY-LOCAL-MACHINE/SOFTWARE/ORACLE` - `HKEY-LOCAL-MACHINE/SYSTEM/CURRENTCONTROLSET001/SERVICEеORACLE` - `HKEY-...
Oracle 10g SQL与PL/SQL是数据库管理和开发领域中的核心技术,对于任何希望深入理解Oracle数据库系统的专业人士来说,这些都是必须掌握的知识。本资源“精通Oracle 10g SQL和PL SQL.zip”提供了全面的学习指南,帮助...
Oracle 10G SQL Reference是Oracle数据库系统的重要文档之一,主要涵盖了在Oracle 10G环境中执行SQL查询、数据操作和数据库管理的核心概念和技术。这个参考手册为数据库管理员(DBA)、开发人员以及数据分析师提供了...
Oracle 10g是一款强大的关系型数据库管理系统,其SQL(结构化查询语言)和PL/SQL(过程化SQL)是数据库管理员和开发人员进行数据管理、处理和应用开发的重要工具。下面将详细介绍这些主题中的关键知识点。 首先,...
- SQL语言:学习SQL(结构化查询语言)用于数据查询、插入、更新和删除。 - PL/SQL:Oracle的专用编程语言,用于编写存储过程、函数、触发器等。 2. **Oracle 10g新特性** - Real Application Clusters (RAC):...
- **Oracle11g**: Oracle11g在Oracle10g的基础上增加了更多的功能和改进,包括更好的分区支持、自动诊断框架、实时应用测试、更快的数据泵等。 ### 2. Oracle体系结构 - **体系结构概述**: Oracle数据库的体系结构...
在Oracle10g中,你可以学习到如何创建、修改和删除数据库对象(如表、视图、索引),如何查询数据,以及如何进行数据的插入、更新和删除操作。此外,还涉及到了复杂的查询技术,如联接(JOINs)、子查询(Subqueries...
Oracle 10g支持SQL语言,包括数据查询、插入、更新和删除等基本操作。学习者需要掌握SELECT语句的使用,如WHERE子句、聚合函数、JOIN操作和子查询。此外,了解索引的创建和使用也是提高查询效率的关键。 三、表和...
Oracle10g.chm中文版帮助文档是Oracle数据库系统用户的重要参考资料,它包含了关于Oracle10g数据库管理系统的所有核心功能、API(应用程序编程接口)以及详细的使用指南。Oracle数据库是全球广泛使用的大型关系型...
Oracle 10g SQL与PL/SQL编程指南是数据库管理员和开发者的重要参考资料,它深入浅出地介绍了如何在...通过深入研读本书,不仅可以掌握Oracle 10g的核心技术,还能为升级到更高版本或学习其他数据库系统打下坚实的基础。
│ oracle 常用傻瓜1000问 - oracle10g - 小呵呵.mht.lnk │ ORACLE 面试问题-技术篇.txt │ oracle10g权限与角色管理初学笔记.txt │ oracle10g的系统视图(sys、system).txt │ oracle10g系统管理之UNDO表空间 - ...
10. **数据仓库和OLAP**:Oracle11g支持构建数据仓库,利用星型和雪花型模式,以及物质化视图、分区、物化 join 来提高分析查询性能。Oracle OLAP提供多维数据处理和分析功能。 这些只是Oracle11g众多特性和功能的...