plsql 游标
【什么是游标】
用于临时存储一个查询返回的多行数据,通过遍历游标,
可以逐行访问处理该结果集的数据
游标的使用方式:声明--》打开--》读取--》关闭
【语法】
游标声明:
CURSOR 游标名[(参数列表)] IS 查询语句;
游标的打开:
open 游标名;
游标的取值:
FETCH 游标名 INTO 变量列表;
游标关闭:
【游标的属性】
%ROWCOUNT 获的FETCH语句返回的数据行数(整数)
%FOUND 最近的fetch语句返回一行数据则为真,否则为假
%NOTFOUND 与%FOUND属性返回值相反,在游标中找不到元素的时候返回true,通常用来判断退出循环,默认为false,默认认为游标中有数据
%ISOPEN 游标已经打开时值为真,否则为假
【无参游标】
declare
--声明游标
CURSOR outdate IS SELECT v_name,v_moneny FROM person_table;
---声明变量接收游标中的元素
p_name person_table.v_name%TYPE;
p_moneny person_table.v_moneny%TYPE;
begin
--打开游标
OPEN outdate;
--遍历游标
LOOP
--获取游标中的数据,注意标红处的顺序问题
FETCH outdate INTO p_name,p_moneny;
--退出循环条件,当游标中没有数据是退出循环
EXIT WHEN outdate%NOTFOUND;
--有数据则打印数据
dbms_output.put_line(p_name||'--'||p_moneny);
END LOOP;
--关闭游标
CLOSE outdate;
end;
【效果展示】
【有参游标示范】
declare --声明游标类型参数和person_table表id类型一样的变量 p_id CURSOR outdate(p_id person_table.id%TYPE) IS SELECT v_name,v_moneny FROM person_table WHERE id=p_id; ---声明变量接收游标中的元素 p_name person_table.v_name%TYPE; p_moneny person_table.v_moneny%TYPE; begin --打开游标,调用带参数的游标 OPEN outdate(1); --遍历游标 LOOP --获取游标中的数据 FETCH outdate INTO p_name,p_moneny; --退出循环条件,当游标中没有数据是退出循环 EXIT WHEN outdate%NOTFOUND; dbms_output.put_line(p_name||'--'||p_moneny); END LOOP; --关闭游标 CLOSE outdate; end;
【效果】
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)