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;

【效果】

 

posted @ 2022-02-25 13:33  程序杨%  阅读(226)  评论(0编辑  收藏  举报