oracle游标
oralce游标
简介
Oracle创建了一个内存区域,称为上下文区域,用于处理SQL语句,该语句包含处理语句所需的所有信息; 例如,处理的行数等
游标指向这个上下文区域。PL / SQL通过游标控制上下文区域。游标保存SQL语句返回的行(一个或多个)。光标所指向的行称为活动行。
游标分类:
- 隐式游标
- 显式游标
隐式游标
每当执行SQL语句时,当语句没有显式游标时,Oracle会自动创建隐式游标。程序员无法控制隐式游标及其中的信息。
游标属性
- %FOUND
- %NOTFOUND
- %ISOPEN
- %ROWCOUNT
%found:
如果INSERT,UPDATE或DELETE语句影响一行或多行或SELECT INTO语句返回一行或多行,则返回TRUE。否则,它返回FALSE。
%notfound:
与%FOUND完全相反。如果INSERT,UPDATE或DELETE语句不影响任何行,或者SELECT INTO语句未返回任何行,则返回TRUE。否则,它返回FALSE。
%isopen:
对于隐式游标,始终返回FALSE,因为Oracle在执行其关联的SQL语句后会自动关闭SQL游标。
%rowcount:
返回受INSERT,UPDATE或DELETE语句影响的行数,或SELECT INTO语句返回的行数。
此外,任何SQL游标属性都将作为sql%attribute_name访问 。
eg:
declare
total_rows number;
begin
update emps
set sal = sal + 500;
if sql%notfound then
dbms_output.put_line('no emps selected');
elsif sql%found then
total_rows := sql%rowcount;
dbms_output.put_line(total_rows || 'emps selected');
end if;
end;
显式游标
显式游标是程序员定义的游标,用于获得对上下文区域的更多控制。应在PL / SQL块的声明部分中定义显式游标。它是在SELECT语句上创建的,它返回多行。
创建语法:
CURSOR cursor_name IS select_statement;
使用步骤:
- 声明游标
- 打开游标
- 获取游标
- 关闭游标
声明游标
cursor c_emps is
select empno,ename from emps;
打开游标
open c_emps;
获取游标
fetch c_emps into c_empno,c_ename;
关闭光标
close c_emps;
完整eg:
declare
c_empno emps.empno%type;
c_ename emps.ename%type;
cursor c_emps is
select empno,ename from emps;
begin
open c_emps;
loop
fetch c_emps into c_empno,c_ename;
exit when c_emps%notfound;
dbms_output.put_line(c_empno||c_ename);
end loop;
end;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现