ORACLE游标与循环

一、游标(cursor——游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。每个游标区都有一个名字,用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理。


1、隐式游标:oracle服务器自动创建的游标,在PL/SQL程序中所有发出的DMLSELECT语句中,oracle会自动声明隐式游标。

 

2、显式游标:自定义的游标,为了处理由select语句返回的一组记录,需要在PL/SQL程序中声明和处理显式游标。

 

2.1、使用显式游标处理数据需要4个步骤:

1)声明游标:CURSOR cursor_name[parameter][return] is select_statement

2)打开游标:open cursor_name[value]

3)检索数据:fetch cursor_name into {vatiable_list | record_variable}

4)关闭游标:close cursor_name

 

3、循环

3.1、FOR..LOOP循环结构

Declare  

CURSOR merchandise_cursor IS

SELECT  *  FROM 表 WHERE 条件

BEGIN

FOR r IN merchandise_cursor LOOP

Dbms_output.put(r.column||’’);

Dbms_output.put_line(r.column);

END LOOP;

END;


3.2、LOOP循环结构——无条件循环

LOOP

--STATEMENTS--

EXIT WHEN CONDITION

END LOOP;

注意:如果没有指定的EXIT语句,循环将一直运行;为了让循环能正常运行,必须为EXIT WHEN 子句提供一个在某时某刻可以判断为TRUE的条件。

例如

DECLARE

i number:=1;

BEGIN

LOOP

dbms_output.put_line(i || ' 的平方数为' || i*i);

i:=i+1;

EXIT WHEN i>10;

END LOOP;

END;


3.3、WHILE-LOOP循环结构

WHILE condition

LOOP

Statements;

END LOOP;


注意:

(1)使用游标FOR循环时,不能使用OPEN语句、FETCH语句和CLOSE语句,否则会产生错误。

(2)当使用隐式游标的属性时,需要在属性前加上SQL,因为Oracle在创建隐式游标时默认的游标名为SQL。

(3)使用游标时,在指定数据类型时,不能使用长度约束,如NUMBER(4)、VARCHAR(10)等都是错误的。

(4)FOR循环中的控制变量只能在循环内使用,不能够在循环的外部使用循环控制变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值