Oracle DBMS 中的光标
在 Oracle 中执行 SQL 语句时,会创建一个临时上下文区域。此区域包含与语句及其执行相关的所有相关信息。光标是指向此上下文区域的指针,并允许 PL/SQL 程序控制此区域。
光标有两种类型。
- 隐式光标
- 显式光标
让我们从隐式光标开始:
隐式光标
每当执行 SQL 语句时,都会自动创建隐式光标。如果特定语句没有显式光标,就会发生这种情况。程序员无法控制隐式光标。
隐式光标有很多不同的属性。其中一些是:
%FOUND
如果使用 INSERT、UPDATE、DELETE 等命令成功提取了一条或多条记录,则返回 TRUE。否则返回 FALSE。
%NOTFOUND
这是 %FOUND 的直接反义。如果使用 INSERT、UPDATE、DELETE 等命令成功提取了一条或多条记录,则返回 FALSE。否则返回 TRUE。
%ROWCOUNT
这将返回受 INSERT、UPDATE、DELETE 等不同命令影响的行数。
%ISOPEN
如果光标打开则返回 TRUE,否则返回 FALSE。但是,对于隐式光标,其值始终为 FALSE,因为光标会在执行其指令后立即关闭。
显式光标
虽然隐式光标是自动创建的,但显式光标是由程序员专门创建的。其定义在 PL/SQL 块的声明部分提供。
创建显式光标包含以下步骤:
声明光标
光标声明如下。这里,光标是 c_student:
CURSOR c_student IS Select Stu_ID,Stu_Name from Student;
打开光标
光标打开方式如下:
OPEN c_student;
提取光标
提取光标时一次访问一行。提取光标如下:
FETCH c_student INTO c_stuID, c_stuName;
关闭光标
关闭光标时会释放已分配的内存。操作如下:
CLOSE c_student;
广告