`
- 浏览:
241618 次
- 性别:
- 来自:
广州
-
游标(CURSOR):可以增强SQL语句的功能,它可以对SQL语句的处理进行的控制,方便地帮助我们从数据库中连续撮数据,然后分别对每一条数据进行处理.
游标是一种PL/SQL控制结构,Oracle服务器使用工作区(又称为专用SQL工作区)来执行SQL语句,储存处理信息.
游标分为两种形式:隐式游标与显式游标.
显示游标:
对于返回多条记录的查询语句,可显式游标逐个处理这些数据.
cursor 游标
实例:
1 declare
2 cursor c is
3 select * from emp;
4 v_emp c%rowtype;
5 begin
6 open c;
7 fetch c into v_emp;
8 dbms_output.put_line(v_emp.ename);
9 close c;
10* end;
SQL> /
SMITH
PL/SQL 过程已成功完成。
全部记录循环打印出来:
实例:
1 declare
2 cursor c is
3 select * from emp;
4 v_emp c%rowtype;
5 begin
6 open c;
7 loop
8 fetch c into v_emp;
9 exit when (c%notfound);
10 dbms_output.put_line(v_emp.ename);
11 end loop;
12 close c;
13* end;
SQL> /
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JAMES
FORD
MILLER
PL/SQL 过程已成功完成。
while循环:
实例:
1 declare
2 cursor c is
3 select * from emp;
4 v_emp c%rowtype;
5 begin
6 open c;
7 fetch c into v_emp;
8 while(c%found) loop
9 dbms_output.put_line(v_emp.ename);
10 fetch c into v_emp;
11 end loop;
12 close c;
13* end;
注意: fetch c into v_emp;在while语句下面的顺序.先打印再fetch
for循环:用的最多的.而且最不容易出错.
游标cursor 不用打开,for循环开始执行时,自动打开并且Open,游标也不用关闭,for循环结束时,自动关闭游标,而且变量v_emp不用声明!
实例:
1 declare
2 cursor c is
3 select * from emp;
4 begin
5 for v_emp in c loop
6 dbms_output.put_line(v_emp.ename);
7 end loop;
8* end;
SQL> /
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JAMES
FORD
MILLER
PL/SQL 过程已成功完成。
声明游标为可更新的:cursor
实例:
declare
cursor c
is
select * from emp2 for update;
begin
for v_temp in c loop
if(v_temp.sal <2000) then
--emp2是重emp表复制过来的.
update emp2 set sal = sal*2 where current of c;
elsif(v_temp.sal =5000) then
delete from emp2 where current of c;
end if;
end loop;
commit;
end;
创建存储过程:procedure
create or replace procedure p
is
cursor c
is
select * from emp2 for update;
begin
for v_temp in c loop
if(v_temp.sal <2000) then
--emp2是重emp表复制过来的.
update emp2 set sal = sal*2 where current of c;
elsif(v_temp.sal =5000) then
delete from emp2 where current of c;
end if;
end loop;
commit;
end;
删除存储过程:
drop procedure p;
函数:function
自定义函数实例:
1 create or replace function sal_tax
2 (v_sal number)
3 return number
4 is begin
5 if(v_sal < 2000) then
6 return 0.10;
7 elsif(v_sal < 2750) then
8 return 0.15;
9 else
10 return 0.20;
11 end if;
12* end;
SQL> /
函数已创建。
触发器:trigger
创建表:
create table emp2_log
(
uname varchar2(20),
action varchar2(10),
atime date
);
创建触发器:
create or replace trigger trig
after insert or delete or update on emp2 for each row
begin
if inserting then
insert into emp2_log values(user,'insert',sysdate);
elsif updating then
insert into emp2_log values(user,'update',sysdate);
elsif deleting then
insert into emp2_log values(user,'delete',sysdate);
end if;
end;
关联改变被约束的字段值:(创建触发器trigger的副作用)
create or replace trigger trig
after update on dept
for each row
begin
update emp set deptno =:NEW.deptno where deptno =:OLD.deptno;
end;
update dept set deptno =99 where deptno =10;
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
### Oracle游标使用及实例详解 #### 一、Oracle游标概述 在Oracle数据库中,游标(Cursor)是一种用于处理SQL查询结果集的方式。它允许用户逐行地读取和处理查询结果,这对于需要对每一行数据进行特定操作的情况非常...
在"游标.txt"文件中,可能包含了更多关于Oracle游标的使用实例和技巧,包括游标的声明、动态游标、游标变量、游标表达式以及游标在存储过程和函数中的应用。这些内容可以帮助你更深入地理解和掌握Oracle游标,提高你...
标题“Oracle游标实例”直接点明了文章的主题,即通过具体的示例来讲解Oracle中的游标使用方法。描述重复了标题内容,这表明文件的主要目的是提供关于Oracle游标的实例代码,供学习和参考。 ### 标签 标签“Oracle...
### Oracle游标使用大全 #### 一、概述 在Oracle数据库中,游标是一种重要的机制,用于处理查询结果集中的数据。游标允许程序逐行处理数据,这在需要对多行数据进行循环处理时非常有用。本文档旨在提供一个全面的...
### Oracle游标优化 在Oracle数据库管理中,游标是一种重要的机制,用于处理查询结果集。游标可以被看作是存储查询结果的一种临时区域,它允许用户通过循环逐行处理这些结果。游标不仅可以提高应用程序的灵活性,还...
Oracle游标是数据库管理系统中的一种重要机制,它允许应用程序按需逐行处理查询结果集,而不是一次性处理所有数据。游标对于交互式和事务性的应用尤其有用,因为它们可以控制数据流并根据需要进行交互。 首先,让...
本主题将深入探讨Oracle中的几个核心概念:函数、存储过程、游标以及简单的实例,这些都是数据库管理员和开发人员日常工作中不可或缺的部分。 首先,我们来了解**Oracle函数**。函数是预定义的代码块,接受零个或多...
SQL中的游标与Oracle类似,但语法稍有不同。在SQL Server或MySQL中,我们可以使用DECLARE、OPEN、FETCH和CLOSE语句来管理游标。以下是一个SQL Server的例子: ```sql DECLARE @var1 datatype1, @var2 datatype2; ...
oracle游标的用法,比较通俗易懂的讲解游标用法,有实例
Oracle游标是数据库管理系统中处理查询结果的一种方法,它允许我们逐行处理数据,而不仅仅是一次性获取所有结果。在Oracle中,游标分为隐式游标和显式游标。 ### 隐式游标 Oracle数据库在执行DML(插入、删除、更新...
本篇将详细解释Oracle游标的简易用法,并通过实例代码来演示如何使用。 首先,游标定义了一个SQL查询的结果集,但并不立即执行该查询。在Oracle中,游标由`DECLARE`语句定义,可以包括变量、条件等。例如: ```sql...
总结来说,"Oracle存储过程实例使用显示游标"是关于如何在存储过程中利用游标进行数据迭代和操作的教程,适合初学者学习。通过这种方式,我们可以高效地处理大量数据,同时结合Function进行更复杂的逻辑处理。记住,...
Oracle游标是数据库管理系统中的一种重要机制,它允许程序员按需逐行处理查询结果集,而不是一次性加载所有数据。游标对于处理大量数据时的效率和控制流程具有显著优势,尤其是在需要对每条记录进行单独操作或者需要...
### Oracle 游标实例解析及应用 #### 一、Oracle游标概述 在Oracle数据库中,游标(Cursor)是一种数据库对象,它允许程序能够逐行处理查询结果集中的数据。与直接执行SQL语句获取整个结果集不同,游标可以逐行...
以上就是Oracle Job、存储过程、视图和游标在实际应用中的基本概念和结合实例,它们共同构成了数据库管理和自动化操作的重要部分。理解并熟练掌握这些工具,能显著提升数据库的管理和维护效率。
Oracle PL/SQL是一种强大的编程语言,它将关系数据库的强大功能与结构化编程的优点结合在一起,是Oracle数据库系统中不可或缺的一部分。在"Oracle PL/SQL 实例精解(第4版涵盖Oracle 11g)+源码脚本"中,读者可以深入...
Oracle PL/SQL是一种强大的编程语言,它结合了SQL的数据处理能力与Procedural Language的控制结构,被广泛用于Oracle数据库的开发和管理。本资料集是"Oracle PL/SQL实例精解",提供了丰富的源代码示例,帮助读者深入...
Oracle 存储过程调用 CallabledStatement 实用例子(IN OUT 传游标) 一、Oracle 存储过程简介 Oracle 存储过程是一种可以在 Oracle 数据库中存储和执行的程序单元。存储过程可以由多种语言编写,例如 PL/SQL、...
在本实例中,我们将探讨如何使用SQL游标来遍历数据并执行相关操作。 首先,让我们理解什么是游标。游标可以视为一个指针,它在查询结果集上移动,允许你逐行访问数据。在大多数关系型数据库管理系统(如MySQL、SQL ...