游标cursor,游标循环和记录变量的定义

1.游标
游标使用分为四步骤。

a.声明游标
cursor 游标名(参数1 数据类型[,参数2 数据类型])
b.打开游标
open 游标名[(实际参数1[,实际参数2.........])];
c.提取数据
fetch 游标名 into 变量名1[,变量名2...];

fetch 游标名 into 记录变量

其中定义记录变量方法如下:
变量名 表名|游标名%ROWTYPE;
d.关闭游标
close 游标名;
例1:
declare
vname VARCHAR2(10);
vjob VARCHAR2(10);
--声明游标
CURSOR emp_cursor IS
       SELECT ENAME,JOB
       FROM EMP
       WHERE empno=222;

BEGIN
OPEN emp_cursor;--打开游标
FETCH emp_cursor INTO vname,vjob;--从游标中提取数据
dbms_output.put_line(vname||','||vjob);
CLOSE emp_cursor;--关闭游标
           
end;
例2:用记录变量
DECLARE
--声明游标
  CURSOR emp_cursor IS
         SELECT ename,job,sal FROM emp WHERE empno=44;
         --定义记录变量
  emp_record emp_cursor%ROWTYPE;
 
BEGIN
--打开游标
  OPEN emp_cursor;
  --提取数据存入记录变量
  FETCH emp_cursor INTO emp_record;
  dbms_output.put_line(emp_record.ename||','||emp_record
  .job||','||emp_record.sal);
  --关闭游标
  CLOSE emp_cursor;
END;
注意:获得记录变量的内容
记录变量名.字段名 

 

 

自定义PL/SQL记录
方法一:
TYPE type_name IS RECORD(field_declaration[,field_declaration].....);
identifier type_name;
如上所示,如上所示,type_name用于指定记录类型的名称,field_declaration用于自定义记录成员

,identifier用于指定记录变量的名称,当定义记录成员时,记录成员之间需要用逗号隔开。

下个例子自定义了三个记录成员,以及记录变量emp_record
DECLARE
 TYPE emp_record_name(
 v_NAME emp.ename%TYPE,
 v_salary emp.sal%TYPE,
 v_dno emp.deptno%TYPE
 );
 emp_record emp_record_name;
 ..........

方法二:
--使用%ROWTYPE属性定义记录变量
%ROWTYPE属性用于基于表或视图定义记录变量。用此方法,记录成员的名称和类型与表或视图列的名

称和类型完全相同。

例子
dept_record detp%ROWTYPE;

3.游标循环
方法一:
在游标for循环中引用已定义游标
DECLARE
  CURSOR emp_cursor IS
         SELECT emono,ename
                FROM emp;
BEGIN
  FOR emp_record IN emp_cursor LOOP
      dbms_output.put_line(emp_record.emono||','||emp_record.ename)
 
方法二:在游标循环中直接引用子查询

DECLARE
BEGIN
  FOR re IN(SELECT empno,ename FROM emp)LOOP
      dbms_output.put_line(re.empno||','||re.ename);
   END LOOP;
END;

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值