`
equals
  • 浏览: 11549 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

游标笔记

阅读更多
每一条被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 游标学习笔记

    Oracle 游标是数据库编程中的重要概念,尤其在PL/SQL中,它们允许程序逐行处理查询结果。游标分为隐式游标和显式游标两种类型。 **隐式游标** 隐式游标是Oracle自动管理的一种游标,主要用于DML(数据操纵语言)...

    oracle笔记游标的使用

    oracle笔记游标的使用,游标的详细代码案例,游标知识点笔记!

    QCustomPlot设置游标详细笔记.docx

    在本例子中,我们关注的是如何在QCustomPlot中实现类似于示波器的游标功能,即X轴和Y轴的追踪线。 首先,我们定义了一个名为`ScopeTraceLine`的类,该类继承自`QObject`。这个类的主要作用是创建和管理垂直线...

    SQL 学习笔记 课堂讲义 , 游标,触发器,存储过程

    在SQL的学习过程中,游标、触发器和存储过程是三个非常重要的概念,它们极大地扩展了SQL的功能,使得数据库管理更加灵活高效。以下是对这些概念的详细解析: 首先,我们来看"SQL学习笔记"中的"课堂讲义"部分。这...

    oracle学习笔记(从入门到精通)

    压缩包主要包括15个文档,主要是本人学习oracle过程中的笔记,希望...08-PLSQL和游标结合学习笔记.txt 09-游标学习笔记.txt 10-重要的函数的学习笔记.txt 11-存储过程学习笔记.txt 12-触发器学习笔记.txt 13-pl编码.txt

    sql 游标使用笔记

    SQL游标是数据库管理系统中的一种机制,它允许程序员或数据库管理员按需逐行处理查询结果集,而不是一次性加载所有数据。在SQL中,游标特别适用于处理大量数据时需要逐行进行复杂操作的情况,比如更新、插入或删除...

    pl/sql笔记/sql笔记(游标创建存储过程)

    Pl/SQL简介 控制结构 复合数据类型 游标 异常 创建存储过程 函数的概念 包的概念 触发器概念

    oracle笔记(存储过程函数触发器游标流程控制等)

    这份"oracle笔记(存储过程函数触发器游标流程控制等)"涵盖了Oracle数据库管理中的关键知识点,包括但不限于以下几个方面: 1. **存储过程与函数**:存储过程是预编译的SQL语句集合,用于执行特定任务。它们可以提高...

    PLSQL笔记-从hello word到触发器,包,游标高级应用

    本笔记集合将带你从基础入门到深入掌握PLSQL的核心概念和技术,包括“Hello World”式的简单示例,触发器的使用,以及包和游标的高级应用。 首先,让我们从"Hello World"开始。在PLSQL中,你可以创建一个简单的存储...

    SQL工作笔记-达梦7存储过程中游标的使用(for循环 IF等)

    本篇工作笔记主要介绍了达梦数据库(DAMENG DB)7版本中存储过程中的游标使用,包括for循环、IF条件判断以及其他相关操作。 首先,我们来看游标的使用。游标是一种数据库对象,它允许我们逐行处理查询结果。在存储...

    mysql中游标的使用案例详解(学习笔记)

    #### 一、游标概念 在MySQL中,游标是一种重要的机制,它允许用户逐步处理查询结果集中的每一行数据。游标提供了一种方式来迭代处理查询结果,这对于需要逐行访问数据的情况特别有用。 **1.1 游标的基本含义** - **...

    PLSQL笔记.doc

    - **游标概念**:游标是数据库系统中指向查询结果集的一个位置,分为隐式游标(SQL游标)和显式游标。SQL游标通常用于处理单行影响的DML语句,而显式游标则用于处理多行的查询结果。 - **游标属性**: - `SQL%IS...

    数据库管理与应用-3期(KC004) 任务5-3 事务与游标教学设计.docx

    学生将被鼓励思考和记录笔记,积极参与讨论,理解事务和游标的实际应用场景。 操作环节,教师将演示如何创建事务,提交和回滚操作,以及如何定义和遍历游标。学生将在真实系统环境中进行实战训练,完成任务单5-3,...

    李兴华—oracle课堂笔记(全).rar

    笔记会讲述如何编写存储过程、函数、触发器,以及异常处理和游标的应用。 4. **数据库设计**:良好的数据库设计是系统性能的关键。笔记可能会涉及范式理论,如何进行规范化设计,以及反规范化在特定情况下的应用。 ...

    PL/SQL笔记pl/sql笔记

    本篇笔记主要涵盖了PL/SQL的基础语法和常用操作,包括检索数据、操纵数据以及SQL游标的应用。 在PL/SQL块中,可以直接嵌入的数据操作语句包括SELECT、DML(INSERT、UPDATE、DELETE)以及事务控制语句(COMMIT、...

    PL/SQL学习笔记6

    在PL/SQL编程中,游标是处理查询结果集的重要工具。它们允许程序逐行处理结果,而不是一次性加载所有数据,这对于大型数据集尤其有用,因为它可以节省内存并提高性能。下面将详细解释游标的基本概念、分类以及如何在...

    oracle_sql笔记

    这篇笔记主要涵盖了Oracle SQL的基础知识、高级特性和实际应用技巧。 一、基础SQL语法 Oracle SQL遵循标准的SQL语法,包括SELECT、INSERT、UPDATE、DELETE四大语句。用于查询数据的基本结构是SELECT字段列表FROM...

    Oracle 10g 学习笔记

    ├─13 游标 │ cursor.sql │ ├─14 存储过程 │ procedure.sql │ ├─15 函数 │ function.sql │ ├─16 触发器 │ trigger.sql │ ├─17 设计范式 │ rule.sql │ ├─18数据库管理 │ dba.sql │ dba....

Global site tag (gtag.js) - Google Analytics