数据库在进行SQL语句执行的时候都必须要利用游标了,无论是显示的或隐示的游标。处理游标需要经历以下步骤。
打开游标 ----- 系统会在与这个会话相关的服务器进程的服务器端私有内存中为这个游标分配一个内存结构,也就是用户全局区(User Global Area, UGA).注意,SQL语句与游标还没有关联。
解析游标 ----- 有一条SQL语句与这个游标关联。解析后内容(包含执行计划)会被加载到共享池中,明确地讲,是加载到库缓存(library cache)中。UGA中的结构会被更新,以保存指向这个共享游标在库缓存中的位置。
定义输出变量 ------ 如果SQL语句返回数据,必须先定义结束数据的变量。
绑定输入变量 ------- 如果SQL语句使用了绑定变量,必须提供它们的值。绑定的过程是不做什么检查。
执行游标 -------- 执行这个SQL语句。数据库引擎并非是在这一步做重要的事情。事实上,对于很多类型的查询语句来讲,真正的处理过程通常会被推迟到获取(fetch)数据阶段。
获取游标 ----- 如果SQL语句返回数据,这一步会接受这些数据。特别是在查询语句中,大部分的处理工作都是在这一步进行的。
关闭游标-----释放UGA中与这个游标有关的资源,从而这些资源可供其它游标使用。在库缓存中的共享游标不会被清除。它会继续保留在库缓存中,以期被重新使用.
用下面PL/SQL代码示例SQL语句的处理步骤:
DECLARE
l_ename emp.ename%TYPE := 'SCOTT';
l_empno emp.empno%TYPE;
l_cursor INTEGER;
l_retval INTEGER;
BEGIN
l_cursor := dbms_sql.open_cursor; --打开游标
dbms_sql.parse(l_cursor, 'SELECT empno FROM emp WHERE ename = :ename', 1); --解析游标
dbms_sql.define_column(l_cursor, 1, l_empno); --定义输出变量
dbms_sql.bind_variable(l_cursor, ':ename', l_ename); --绑定输入变量
l_retval := dbms_sql.execute(l_cursor); --执行游标
IF dbms_sql.fetch_rows(l_cursor) > 0 --获取数据
THEN
dbms_sql.column_value(l_cursor, 1, l_empno);
dbms_output.put_line(l_empno);
END IF;
dbms_sql.close_cursor(l_cursor); --关闭游标
END;
隐示游标例子:
DECLARE
l_ename emp.ename%TYPE := 'SCOTT';
l_empno emp.empno%TYPE;
BEGIN
SELECT empno INTO l_empno
FROM emp
WHERE ename = l_ename;
dbms_output.put_line(l_empno);
END;
解析的全过程
1.包含VPD的约束条件
2.语法、语义以及访问权限检查
3.将父游标保存到库缓存
4.逻辑优化
5.物理优化
6.将子游标保存到库缓存
分享到:
相关推荐
Oracle游标是数据库编程中非常重要的一个概念,它允许开发者逐行处理查询结果集,而不仅仅是一次性处理所有数据。在Oracle中,游标分为隐式游标和显式游标。 **一、游标简介** 游标的核心功能是提供一种方式来遍历...
【Oracle游标学习】 在Oracle数据库中,游标(Cursor)是一种重要的编程工具,它允许开发者按需处理查询结果集的每一行数据。游标在PL/SQL编程中扮演着关键角色,尤其在处理大量数据时,能提供更加灵活和高效的数据...
【Oracle游标学习二】 在Oracle数据库中,游标(Cursor)是一种重要的编程工具,它允许程序员逐行处理查询结果集。游标对于那些需要多次交互处理数据的应用程序至关重要,尤其是在进行复杂的业务逻辑操作时。在本文...
Oracle 游标是数据库编程中的重要概念,尤其在PL/SQL中,它们...以上就是关于Oracle游标的基本知识,包括隐式游标和显式游标的使用、属性以及在处理数据时的注意事项。理解并熟练运用游标是开发高效PL/SQL程序的关键。
通过本篇Oracle游标的使用大全,我们可以了解到Oracle数据库游标的类型、属性以及如何在PL/SQL中实现对数据集的逐行处理。这不仅有助于提升程序员的编程技能,也能使他们更深入地理解PL/SQL与Oracle数据库之间的交互...
本资源“Oracle游标使用案例大全”提供了一系列实用的示例,旨在帮助学习者深入理解和掌握Oracle游标的用法。 1. **游标的基本概念** - 游标(Cursor):它是一个数据库系统中的结构,用于存储执行SQL查询后的结果...
Oracle的游标是数据库开发中的一个重要概念,尤其在PL/SQL编程中,游标用于处理SQL查询结果集,使得我们能够逐行处理数据,而不仅仅局限于一次性获取所有数据。在这个主题中,我们将深入探讨游标的定义、类型、使用...
Oracle游标是数据库管理系统中的一种数据处理机制,它允许用户按需逐行处理查询结果,而不是一次性加载所有数据。在Java编程中,我们通常通过JDBC(Java Database Connectivity)来与Oracle数据库交互,其中游标扮演...
通过这些知识点的学习,读者可以更好地理解和应用Oracle游标,提高开发效率和代码质量。此外,还探讨了游标属性的应用场景以及如何通过循环来遍历游标,这对于处理大量数据尤其有用。总之,熟练掌握Oracle游标的使用...
### Oracle游标使用大全 #### 一、概述 在Oracle数据库中,游标是一种重要的机制,用于处理查询结果集中的数据。游标允许程序逐行处理数据,这在需要对多行数据进行循环处理时非常有用。本文档旨在提供一个全面的...
首先,让我们来理解Oracle游标。游标是数据库系统提供的一种机制,允许用户在结果集上进行迭代,一次处理一行数据。在PL/SQL中,游标用于检索SQL查询返回的结果集,并按需逐行处理。以下是一个简单的游标使用示例: ...
这个是我自学总结出来的,希望对你有帮助,适合初学者
Oracle游标是数据库管理系统中的一种重要机制,它允许我们在处理大量数据时逐行进行操作,而不是一次性加载所有...通过理解这些知识点,你可以更好地利用"游标.sql"文件中的案例,学习和应用Oracle游标来解决实际问题。
在学习和实践中,可以参考提供的“游标”压缩包文件,其中包含更具体的示例和帮助文档,以加深对游标的理解。这些实例将帮助新手快速上手,掌握在实际项目中运用游标的技巧。 总之,无论是Oracle还是SQL,游标都是...
Oracle游标是数据库管理系统中非常重要的一个概念,它在处理大量数据时提供了高效且灵活的控制方式。在Oracle中,游标(Cursor)允许我们逐行处理查询结果集,而不是一次性加载所有数据,这对于处理复杂的数据操作...
描述重复了标题内容,这表明文件的主要目的是提供关于Oracle游标的实例代码,供学习和参考。 ### 标签 标签“Oracle游标”进一步强调了文章的重点,即Oracle数据库中的游标功能。这有助于读者快速识别文章主题,...
通过本文的学习,我们可以了解到Oracle游标和异常处理的基本概念及使用方法。无论是显式游标还是隐式游标,都能有效地帮助我们处理和管理从数据库中获取的数据。同时,合理的异常处理机制能够增强程序的健壮性和可用...
游标是Oracle数据库中一个重要的概念,它是一种在内存中用于存储SQL查询结果的临时工作...随着Oracle数据库的不断更新和发展,对于初学者和数据库管理员来说,学习和使用游标是数据库管理和编程中必不可少的技能之一。
本文旨在为初学者提供关于Oracle游标使用的全面指南。 #### 二、基本概念 **1. 显式游标** - **定义**:显式游标是指在PL/SQL块中明确声明并由用户管理的游标。 - **用途**:适用于需要处理多行数据的情况,特别...
### Oracle游标使用详解 #### 一、引言 在Oracle数据库中,游标是一种非常重要的功能,它允许用户能够逐行地从数据库中检索数据并进行处理。这对于需要进行复杂数据处理的应用程序来说是非常有用的。本文将详细介绍...