在定义又表示必须要带有for update子句,用于在游标结果集数据上加行共享锁,以防止其他用户在相应行上执行dml操作;当select语句引用到多张表时,使用of子句可以确定哪些表要加锁,如果没有of子句,则会在select语句所引用的全部表上加锁;nowait子句用于指定不等待锁。在提取了游标数据之后,为了更新或删除当前游标行数据,必须在update或delete语句中引用where current of 子句。
--1、使用游标更新数据
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子句在特定表上加行共享锁
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子句可以避免等待锁
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考试的重要资源,...
- 通过ODBC数据源管理器删除与Oracle相关的数据源。 9. **清理注册表中的额外条目**: - `HKEY-LOCAL-MACHINE/SOFTWARE/ORACLE` - `HKEY-LOCAL-MACHINE/SYSTEM/CURRENTCONTROLSET001/SERVICEеORACLE` - `HKEY-...
3. **SQL语言基础**:Oracle 10g支持标准SQL,包括数据查询、插入、更新和删除,以及更复杂的SQL语句,如联接、子查询和集合操作。理解SQL语法和性能调优技巧是数据库管理员的基础技能。 4. **PL/SQL编程**:Oracle...
10. **数据仓库和OLAP**:Oracle11g支持构建数据仓库,利用星型和雪花型模式,以及物质化视图、分区、物化 join 来提高分析查询性能。Oracle OLAP提供多维数据处理和分析功能。 这些只是Oracle11g众多特性和功能的...
Oracle 10g SQL与PL/SQL是数据库管理和开发领域中的核心技术,对于任何希望深入理解Oracle数据库系统的专业人士来说,这些都是必须掌握的知识。本资源“精通Oracle 10g SQL和PL SQL.zip”提供了全面的学习指南,帮助...
Oracle 10G SQL Reference是Oracle数据库系统的重要文档之一,主要涵盖了在Oracle 10G环境中执行SQL查询、数据操作和数据库管理的核心概念和技术。这个参考手册为数据库管理员(DBA)、开发人员以及数据分析师提供了...
- **Oracle11g**: Oracle11g在Oracle10g的基础上增加了更多的功能和改进,包括更好的分区支持、自动诊断框架、实时应用测试、更快的数据泵等。 ### 2. Oracle体系结构 - **体系结构概述**: Oracle数据库的体系结构...
Oracle数据库系统是数据库领域最优秀的数据库之一,《Oracle11g从入门到精通》以Oracle最新版本Oracle 11g为蓝本,系统地讲述了Oracle数据库的概念、管理和应用开发等内容。 全书结构合理、内容翔实、示例丰富...
Oracle 10g是其第十个主要版本,发布于2003年,引入了许多创新特性,提升了性能、可靠性和易用性。 1. **Oracle数据库基础** - 数据库概念:了解关系型数据库的基本原理,如表、索引、视图、存储过程等。 - SQL...
Oracle 10g是一款强大的关系型数据库管理系统,其SQL(结构化查询语言)和PL/SQL(过程化SQL)是数据库管理员和开发人员进行数据管理、处理和应用开发的重要工具。下面将详细介绍这些主题中的关键知识点。 首先,...
Oracle 11g使用SQL(结构化查询语言)进行数据查询、插入、更新和删除。学习SQL基础,包括SELECT语句、DML(数据操纵语言)操作、以及DDL(数据定义语言)用于创建和修改表结构,是掌握Oracle 11g的关键步骤。 四、...
能够使用Oracle 11g的基本条件 在Windows 2003上安装Oracle 11g 移除Oracle 11g 第3章-熟悉数据库 什么是数据库 范式,设计关系型数据库的准则 绘制E-R图设计数据库 第4章-SQL基础 SQL-数据库沟通的语言...
Oracle 11g是Oracle公司推出的数据库管理系统的一个版本,它为用户提供了一套全面的数据管理和分析工具。对于初学者来说,掌握Oracle 11g的基本概念、安装与配置、SQL语言、表空间管理、备份恢复以及安全管理等核心...
最后,Oracle 11g还支持高级特性,如存储过程、触发器、游标、PL/SQL编程,以及数据仓库和OLAP(在线分析处理)功能。这些高级特性使得Oracle 11g不仅能满足常规的CRUD操作,还能支持复杂的数据处理和业务逻辑。 ...
在Java开发中,为了实现数据库操作,如查询、插入、更新或删除数据,开发者通常会依赖数据库驱动。Oracle 11g 提供了两种不同版本的驱动,即OJDBC5和OJDBC6,它们主要的区别在于对Java Development Kit (JDK) 版本的...