8.2.3 游标中的LOOP语句

通常显式游标提取的数据不会只有一条,而是多条记录。这样就需要一个遍历结果集的方式,而LOOP语句就能实现该功能。下面示例将演示在游标中如何使用LOOP语句。

【示例3】在游标中使用LOOP语句

具体代码如下:


01 DECLARE

02 CURSOR pdct_loop_cur

03 IS SELECT PRODUCTID,PRODUCTNAME,PRODUCTPRICE FROM PRODUCTINFO

04 WHERE PRODUCTPRICE>2500;

05

06 cur_productid productinfo.Productid%TYPE;

07 cur_productname productinfo.Productname%TYPE;

08 cur_productprice productinfo.Productprice%TYPE;

09

10 BEGIN

11 OPEN pdct_loop_cur;

12 LOOP

13 FETCH pdct_loop_cur INTO cur_productid,cur_productname,cur_productprice;

14 EXIT WHEN pdct_loop_cur%NOTFOUND;

15 DBMS_OUTPUT.PUT_LINE('产品ID:'||cur_productid||'产品名称:'||

16 cur_productname||'产品价格:'||

17 cur_productprice);

18 END LOOP;

19 CLOSE pdct_loop_cur;

20 END;


【代码解析】

❑代码第1~4行表示声明游标并关联查询,查询出价格大于2500的产品。

❑第6~8行声明变量,各变量类型同表PRODUCTINFO的对应字段类型一致。

❑第12~18行就是使用的LOOP语句,利用该语句可以遍历结果集。

❑第13行利用FETCH…INTO…语句把取出的值放进变量中。

❑第14行利用游标属性实现没有记录退出循环。

❑第15~17行输出信息。

❑第19行关闭游标。

【执行效果】

在PL/SQL Developer的SQL窗口中执行以上代码。执行结果见SQL窗口中的Output标签页面,打印输出结果如下:


产品ID:0240040001 产品名称:夏普LCD-46G100A 产品价格:7000

产品ID:0240030002 产品名称:三星WF-R1065S/XSC 产品价格:3600

产品ID:0240020001 产品名称:思科RV082路由器 产品价格:2800


和示例1做对比,该脚本执行后把所有符合条件的记录全部输出,这就是LOOP语句的作用,有了它用户就可以得到符合要求的每一条数据,并可以对数据进行操作,实现诸多复杂的数据转换,以达到满足业务需求的目的。