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语句的作用,有了它用户就可以得到符合要求的每一条数据,并可以对数据进行操作,实现诸多复杂的数据转换,以达到满足业务需求的目的。