每一条被oracle执行的sql语句都有一个独立的游标与之关联;
隐式游标implicit cursors:-->用于所有的DML和PL/SQL的SELECT语句
DECLARE
v_ename emp.ename%TYPE;
BEGIN
select ename into v_ename where empno=9527;
--游标属性
IF SQL%NOTFOUND THEN --SQL%NOTFOUND 表示被影响的行数是否为0
DBMS_OUTPUT.PUT_LINE('not found!');
END IF;
IF SQL%FOUND THEN --SQL%FOUND 表示被影响的行数是否大于等于1,与SQL%NOTFOUNT相对
DBMS_OUTPUT.PUT_LINE(SQL%ROWCOUNT||' rows influenced!');--SQL%ROWCOUNT表示被影响的行数,是个整数值。
END IF;
IF SQL%ISOPEN THEN --SQL%ISOPEN oracle每执行一条sql语句就会自动关闭SQL游标,所以这里一直是false。
DBMS_OUTPUT.PUT_LINE('open!');
ELSE
DBMS_OUTPUT.PUT_LINE('close!');
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('exception: no date!');
END;
显式游标explicit cursors:-->被程序显示声明和命名;
-->能够一行一行的处理多行查询的结果;
-->能够记录和跟踪当前处理的行;
-->在写的PL/SQL中允许手工控制处理游标;
DECLARE
v_emprow emp%ROWTYPE;
CURSOR emp_cursor IS
select * from emp;--没有into子句
CURSOR emp_name_cursor IS
select ename from emp;
BEGIN
OPEN emp_cursor;-->打开游标
IF emp_cursor%ISOPEN THEN-->cursor_name%ISOPEN 判断游标是否打开;
DBMS_OUTPUT.PUT_LINE('cursor is open!');
END IF;
FETCH emp_cursor INTO v_emprow;-->将当前提取到的行的值存储到PL/SQL变量中;
IF emp_cursor%FOUND THEN-->cursor_name%FOUND 和 cursor_name%NOTFOUND 判断最近一次的FETCH操作是否返回了一行数据;
DBMS_OUTPUT.PUT_LINE('at first-->:'||'empno:'||v_emprow.empno||' ename:'||v_emprow.ename||' sal:'||v_emprow.sal);
END IF;
--使用基本循环来提取
LOOP
EXIT WHEN emp_cursor%NOTFOUND;
FETCH emp_cursor INTO v_emprow;
DBMS_OUTPUT.PUT_LINE('at loop-->:'||'empno:'||v_emprow.empno||' ename:'||v_emprow.ename||' sal:'||v_emprow.sal);
END LOOP;
DBMS_OUTPUT.PUT_LINE(emp_cursor%ROWCOUNT||' rows have fetch!');-->cursor_name%ROWCOUNT 值为当前取回的总行数
--使用FOR循环来便捷的处理显式游标
FOR c_ename IN emp_name_cursor LOOP--使用for循环来处理游标会在FOR循环开始和结束时自动打开和关闭游标
DBMS_OUTPUT.PUT_LINE('at for-->:'||' ename: '||c_ename.ename);
END LOOP;
CLOSE emp_cursor;-->关闭游标
END;
注:
1.显示游标所定义的SQL语句必须包含select语句
2.当返回的行数不确定,使用显示游标;
3.当返回的行数确定只有一行时,使用隐式游标将更好;
4.在for循环中,可以不用定义游标,直接在IN后写(select子句);
5.定义带参数的游标之后,在open游标时,需要给游标传实参;
分享到:
相关推荐
Oracle 游标是数据库编程中的重要概念,尤其在PL/SQL中,它们允许程序逐行处理查询结果。游标分为隐式游标和显式游标两种类型。 **隐式游标** 隐式游标是Oracle自动管理的一种游标,主要用于DML(数据操纵语言)...
oracle笔记游标的使用,游标的详细代码案例,游标知识点笔记!
在本例子中,我们关注的是如何在QCustomPlot中实现类似于示波器的游标功能,即X轴和Y轴的追踪线。 首先,我们定义了一个名为`ScopeTraceLine`的类,该类继承自`QObject`。这个类的主要作用是创建和管理垂直线...
在SQL的学习过程中,游标、触发器和存储过程是三个非常重要的概念,它们极大地扩展了SQL的功能,使得数据库管理更加灵活高效。以下是对这些概念的详细解析: 首先,我们来看"SQL学习笔记"中的"课堂讲义"部分。这...
压缩包主要包括15个文档,主要是本人学习oracle过程中的笔记,希望...08-PLSQL和游标结合学习笔记.txt 09-游标学习笔记.txt 10-重要的函数的学习笔记.txt 11-存储过程学习笔记.txt 12-触发器学习笔记.txt 13-pl编码.txt
SQL游标是数据库管理系统中的一种机制,它允许程序员或数据库管理员按需逐行处理查询结果集,而不是一次性加载所有数据。在SQL中,游标特别适用于处理大量数据时需要逐行进行复杂操作的情况,比如更新、插入或删除...
Pl/SQL简介 控制结构 复合数据类型 游标 异常 创建存储过程 函数的概念 包的概念 触发器概念
这份"oracle笔记(存储过程函数触发器游标流程控制等)"涵盖了Oracle数据库管理中的关键知识点,包括但不限于以下几个方面: 1. **存储过程与函数**:存储过程是预编译的SQL语句集合,用于执行特定任务。它们可以提高...
本笔记集合将带你从基础入门到深入掌握PLSQL的核心概念和技术,包括“Hello World”式的简单示例,触发器的使用,以及包和游标的高级应用。 首先,让我们从"Hello World"开始。在PLSQL中,你可以创建一个简单的存储...
本篇工作笔记主要介绍了达梦数据库(DAMENG DB)7版本中存储过程中的游标使用,包括for循环、IF条件判断以及其他相关操作。 首先,我们来看游标的使用。游标是一种数据库对象,它允许我们逐行处理查询结果。在存储...
#### 一、游标概念 在MySQL中,游标是一种重要的机制,它允许用户逐步处理查询结果集中的每一行数据。游标提供了一种方式来迭代处理查询结果,这对于需要逐行访问数据的情况特别有用。 **1.1 游标的基本含义** - **...
- **游标概念**:游标是数据库系统中指向查询结果集的一个位置,分为隐式游标(SQL游标)和显式游标。SQL游标通常用于处理单行影响的DML语句,而显式游标则用于处理多行的查询结果。 - **游标属性**: - `SQL%IS...
学生将被鼓励思考和记录笔记,积极参与讨论,理解事务和游标的实际应用场景。 操作环节,教师将演示如何创建事务,提交和回滚操作,以及如何定义和遍历游标。学生将在真实系统环境中进行实战训练,完成任务单5-3,...
笔记会讲述如何编写存储过程、函数、触发器,以及异常处理和游标的应用。 4. **数据库设计**:良好的数据库设计是系统性能的关键。笔记可能会涉及范式理论,如何进行规范化设计,以及反规范化在特定情况下的应用。 ...
本篇笔记主要涵盖了PL/SQL的基础语法和常用操作,包括检索数据、操纵数据以及SQL游标的应用。 在PL/SQL块中,可以直接嵌入的数据操作语句包括SELECT、DML(INSERT、UPDATE、DELETE)以及事务控制语句(COMMIT、...
在PL/SQL编程中,游标是处理查询结果集的重要工具。它们允许程序逐行处理结果,而不是一次性加载所有数据,这对于大型数据集尤其有用,因为它可以节省内存并提高性能。下面将详细解释游标的基本概念、分类以及如何在...
这篇笔记主要涵盖了Oracle SQL的基础知识、高级特性和实际应用技巧。 一、基础SQL语法 Oracle SQL遵循标准的SQL语法,包括SELECT、INSERT、UPDATE、DELETE四大语句。用于查询数据的基本结构是SELECT字段列表FROM...
├─13 游标 │ cursor.sql │ ├─14 存储过程 │ procedure.sql │ ├─15 函数 │ function.sql │ ├─16 触发器 │ trigger.sql │ ├─17 设计范式 │ rule.sql │ ├─18数据库管理 │ dba.sql │ dba....