SQL Cursor.Oracle数据库处理数据操作语言(DML)语句,例如插入,删除或更新,以及在系统内存中创建私有工作区域的后台进程。通过透明地初始化和分配内存块作为存储语句信息和结果的临时工作场所来处理SELECT语句时,数据库使用相同的进程。指示工作区域的内存位置的指针是光标。这些工作区域和游标对程序员禁止限制,但是PL / SQL允许以相同的方式允许明确地创建游标来处理SELECT语句。

Oracle和PL / SQL的新手?在Udemy上课以了解更多信息

当从PL / SQL处理或执行SQL语句时,Oracle在后台建立临时私人工作区域或上下文区域,在工作内存中。此工作区域包含处理语句所需的所有相关信息,例如受影响的行数以及返回的数据集。在处理数据操作语言(DML)命令(如插入,更新,删除或合并),Oracle数据库建立并控制内存中的工作区域的大小和生命周期。

SQL跟踪特定的内存块,使用指针(称为游标)分配给特定的活动工作区域。当处理DML语句时,游标有效地存在于后台,对程序员是透明的,超出了它们的控制。但是,在处理SELECT语句时,PL/SQL提供了一种方法,程序员可以通过这种方法寻址这些游标并控制工作区域,在这种情况下,游标被称为显式游标。

在Udemy了解关于DML和Oracle数据库的更多信息。

显式和隐式游标

游标有两种不同的类型:隐式游标和显式游标。

隐式游标

只要代码中没有显式游标,无论何时用SQL(如SELECT)处理一条语句,PL/SQL都会创建一个隐式游标来建立一个临时工作区。隐式游标得名于程序员没有在语句中显式声明游标这一事实。隐式游标在Oracle的控制下,它自动地执行打开、获取和关闭进程。

隐式游标对程序员没有可见的参考点来利用,因此它们超出了程序员的控制。但是,这并不意味着它们完全透明。程序员仍然可以通过光标属性检查最近处理的语句的状态。PL / SQL指的是最新的隐式游标作为SQL光标,它具有含义%的属性%,%isopen,%notfound和%rowcount,它可以通过sql%attribute_name访问。

Oracle始终使用隐式游标进行DML处理。处理插入时,光标存储数据。在处理删除或更新时,光标存储受影响的行的信息。随后,程序员不能在自己的显式游标中使用这些命令。

oracle为select语句打开隐式游标的查询的示例,然后在关闭光标之前获取行,然后选择。它是从SELECT语句中获取单行的最快和最简单的方法。但是,程序员可以明确声明光标,然后执行打开,获取和关闭进程。当程序员声明并定义游标时,结果是一个显式游标。

显式游标

显式游标是一个SELECT语句,由程序员在代码的声明部分中定义并分配了一个名称。使用显式游标,程序员可以完全控制并负责如何从数据库访问信息并存储在临时工作区中。程序员决定什么时候打开游标,什么时候从游标中获取记录——游标中定义的SELECT语句中分配的表/s——要获取多少记录,以及什么时候关闭游标。因为显式游标直接在程序员的控制之下,而且正是这种控制粒度使它们失去了兴趣,所以它们是本文讨论的游标。

创建显式游标

为了创建光标,程序员模拟隐式光标中使用的过程,例如打开,取出和关闭。但是,所需的第一件事是通过将其分配一个名称并定义其关联的SELECT语句来引用光标。

声明一个指针

程序员在PL/SQL代码块的声明段中标识游标。通过声明游标,系统可以初始化临时工作区的内存。

语法:游标cursor_nameselect_statement;

上面的语法是声明游标的最简单形式,因为它不提供参数。

使用参数和返回子句声明光标的语法如下所示

声明使用参数的光标

语法:游标cursor_nameparameter_list)是select_statement.

使用Return子句声明游标

语法:游标cursor_name返回字段% ROWTYPEselect_statement.

打开游标

语法:开放cursor_name;

打开游标指示系统初始化已分配的内存块并将其分配给工作区。在语句的生命周期中,SELECT语句获取的行将在分配的内存中存储或操作。内存分配将保持保留,直到游标关闭。

获取

语法:取cursor_name进入变量_list;

参数:

变量列表 - 这是将存储游标结果的逗号分隔列表

从SELECT语句中的行中获取数据需要一次访问每行。

关闭游标

语法:关闭cursor_name;

关闭游标将释放所有预留分配的内存给系统。如果游标定义在语句结束后没有适当地关闭游标,那么内存将保持保留和空闲。如果太多游标不必要地打开,底层系统将达到允许的并发打开限制,或者耗尽空闲内存资源,最终崩溃。

为了更好地理解游标和Oracle编程,请参加Udemy的课程。

SQL中的顶级课程

综合SQL课程2021
Malvik vagadia.
4.8 (30)
热和新的
SQL编程基础知识
全球学院
4.4 (120)
SQL和PostgreSQL:完整的开发人员指南
斯蒂芬格莱德里
4.7 (1485)
评价最高
完整的SQL Bootcamp 2021:从零到英雄
何塞Portilla
4.7 (99,458)
畅销书
终极MySQL训练营:从SQL初学者到专家
Colt Steele,Ian Schoonover
4.6 (54525)
畅销书
SQL - 用于数据分析和商业智能的MySQL
365职业
4.6 (27949)
畅销书
高级SQL: SQL专家认证准备课程
Oracle Master Training•全球90,000多名学生,古典明星学院
4.5 (2,232)
完整的SQL和数据库训练营:零到精通[2021]
Andrei Neagoie, Mo Binni
4.6 (1496)
SQL for初学者:使用MySQL和数据库设计学习SQL
Tim Buchalka的学习编程学院,Jon Avis - SQL讲师
4.5 (11547)
SQL & PostgreSQL初学者:成为一个SQL专家
Jon Avis - SQL教练
4.6 (3255)
畅销书

更多SQL课程

SQL学生也学习

让你的团队。领导行业。

通过Udemy为Business获取组织的在线课程和数字学习工具库的订阅。

请求一个演示