游标:
Plsql中执行select、insert、update、delete语句时,oracle会在内存中为其分配上下文区(context area),即一个缓冲区。游标是指该区的一个指针,或是命名一个工作区,或是一种结构化的数据类型。为应用程序提供了一种对具有多行数据查询结果的每一行数据分别进行单独处理的方法。
声明游标
cursor 游标名 is select查询语句; //把游标名与查询语句关联在一起
为查询打开游标
open 游标名; //如果select语句后面有for update的话,在打开游标时给当前cursor加上锁
将结果提取出来,存入PLSQL变量中
fetch 游标名 into 变量名;
while 游标名%found //结束条件
关闭游标
close 游标名;
关于游标的几个属性:
%found 返回boolean,当fetch语句还能够从游标中提取数据就返回true
%notfound 与上相反之
%isopen 判断游标是否处于打开状态
%rowcount 返回当前游标的指针的位移量(偏向第一条记录的位移量)
%found %notfound
上一次fetch提取到了数据 true false
上一次fetch没提取到了数据 false true
没有执行fetch false false
利用游标去查询emp_xb表中的所有的数据
*************************
第一种实方式:while循环
declare
cursor emp_cur is select * from emp_xb;
xu emp_xb%rowtype;
begin
open emp_cur;
fetch emp_cur into xu;
while emp_cur%found
loop
dbms_output.put_line(' id------------>' || xu.id );
dbms_output.put_line(' name---------->' || xu.name );
dbms_output.put_line(' lastname ----->' || xu.lastname );
fetch emp_cur into xu;
end loop;
close emp_cur;
end;
第二种实方式:loop循环
declare
cursor emp_cur is select * from emp_xb;
xu emp_xb%rowtype;
begin
open emp_cur;
loop
if emp_cur%notfound then exit;
end if;
dbms_output.put_line(' id------------>' || xu.id );
dbms_output.put_line(' name---------->' || xu.name );
dbms_output.put_line(' lastname ----->' || xu.lastname );
fetch emp_cur into xu;
end loop;
close emp_cur;
end;
第三种实方式:利用FOR语句使用COUSOR指针
declare
cursor cur_xb is select * from emp_xb;
begin
for emp in cur_xb loop
dbms_output.put_line('id===>' || emp.id);
dbms_output.put_line('firstname===>' || emp.name);
dbms_output.put_line('lastname===>' || emp.lastname);
end loop;
end;
注意:不声明游标的话,可直接把查询语句写在for循环的in后面,系统会帮你把open Cursor和fetch和close cursor全部都做了
游标带参数:
参数声明在游标声明的名字之后写在括号内,多个用逗号隔开,这时打开游标就需要传参
declare
cursor cur_xb(myname varchar2) is select * from emp_xb where name=myname;
begin
for emp in cur_xb('xu') loop
dbms_output.put_line('id===>' || emp.id);
end loop;
for emp in cur_xb('xiao') loop
dbms_output.put_line('firstname===>' || emp.firstname);
end loop;
end;
分享到:
相关推荐
游标提供了一种对从表中检索出的数据进行操作的灵活手段,就本质而言,游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。
在声明部分,可以定义变量、游标、子程序等。执行部分则包含了一系列的SQL语句和流程控制语句,如IF、LOOP、WHENEVER等。PLSQL中的SQL语句可以直接执行DML(数据操纵语言)操作,如INSERT、UPDATE、DELETE,也可以...
2. **创建数据表**: - 创建名为`TESTTABLE`的数据表,包含两个字段:`RECORDNUMBER`(整数类型)和`CURRENTDATE`(日期类型)。 - 使用`CREATE TABLE`语句来实现。 #### 二、PL/SQL的基本语法要素 **2.1 常量与...
本笔记集合将带你从基础入门到深入掌握PLSQL的核心概念和技术,包括“Hello World”式的简单示例,触发器的使用,以及包和游标的高级应用。 首先,让我们从"Hello World"开始。在PLSQL中,你可以创建一个简单的存储...
1. **PL/SQL语言简介**:PL/SQL由声明部分、执行部分和异常处理部分组成,支持流程控制语句、子程序、游标等。 2. **变量说明**:声明变量,指定变量类型和初始值。 3. **PL/SQL控制程序流**:包括IF-THEN-ELSE, ...
2. **隐式游标**:在使用`SELECT ... INTO`语句时自动创建和管理。 #### 三、游标的声明与使用 ##### 3.1 声明游标 声明游标的基本语法如下: ```plsql DECLARE CURSOR c_name IS SELECT column_list FROM ...
v_name VARCHAR2(100); BEGIN v_name := 'John Doe'; INSERT INTO employees (name) VALUES (v_name); COMMIT; EXCEPTION WHEN OTHERS THEN ROLLBACK; DBMS_OUTPUT.PUT_LINE('Error occurred: ' || SQLERRM);...
里面有orcale plsql经典试题,视图,存储过程,游标,包,异常处理。
6. **复杂语句的支持**:PLSQL Developer支持复杂的PL/SQL语句,包括游标、异常处理、过程、函数等。设置合适的快捷键后,即使面对复杂的编程任务,也可以高效完成。 7. **自定义插件**:除了内置的功能,PLSQL ...
Oracle PL/SQL 游标的学习 本资源主要讲解了 Oracle PL/SQL 游标的概念、分类、属性和使用方法,为读者提供了详细的学习资料。 一、游标的概念 游标是映射在结果集中一行数据上的位置实体,有了游标,用户就可以...
福建省电力公司oracle培训教材--PLSQL之游标与异常处理
oracle数据库里plsql游标、集合及对象的简单使用,适合初学者查看
通过PLSQL游标编程,我们可以实现更灵活的数据处理,比如循环处理结果集、条件判断等。在实际开发中,游标尤其适用于那些需要逐行处理大量数据的情况,例如批量更新或删除。 在"PLSQL培训内容"这个压缩包中,可能...
- 游标变量是PLSQL中的一种特殊类型,可以用来存储游标对象。 - 允许在PLSQL代码中动态处理查询结果。 8. **索引组织表(IOT)和物化视图**: - IOT用于提高数据检索效率,将表数据直接存储在索引结构中。 - ...
### Oracle数据库的游标学习总结 #### 一、引言 在Oracle数据库中,游标是一种重要的机制,用于处理查询结果集。通过游标,我们可以逐行地读取查询结果,这对于复杂的业务逻辑处理非常有用。本文将详细介绍Oracle...
游标是PLSQL处理单条记录的一种机制,通常用于循环遍历查询结果。通过声明游标,打开,提取数据,然后关闭游标来操作数据。 五、异常处理 PLSQL提供了丰富的异常处理机制,可以捕获并处理运行时错误。通过...
2. 打开游标。OPEN语句执行查询,并绑定任何被引用的变量。由查询识别的行构成了活动集(active set),现在可用于提取数据。 3. 从游标中提取数据。在演示中所展示的流程图中,每次提取操作后,游标会指向活动集中...
Oracle PL/SQL 游标的学习 游标是 Oracle PL/SQL 中的一个重要概念,它允许用户访问和操作结果集中的数据。游标可以理解为是一个映射在结果集中的一行数据上的位置实体,有了游标,用户就可以访问结果集中的任意一...
2. **声明游标**:在PL/SQL中,我们需要首先声明一个游标,通常采用以下语法: ```sql CURSOR cursor_name IS SELECT_statement; ``` 3. **打开游标**:声明游标后,我们需要打开它才能读取数据: ```sql OPEN ...