zoukankan      html  css  js  c++  java
  • 当SELECT返回多行数据时——游标的运用

      开篇

      当在PL/SQL块中执行查询语句(SELECT)和数据操纵语句(DML)时,Oracle会为其在内存中分配上下文区(Context Area),即缓冲区,游标是指向上下文区的指针。对于数据操纵语句和单行SELECT INTO语句,Oracle会为他们分配隐含游标。

      显示游标

      PL/SQL包含隐含游标和显示游标两种游标类型,其中隐含游标用于处理SELECT INTO和DML语句,显示游标则专门用于处理SELECT语句返回的多行数据。

    View Code
    create or replace procedure TEST_CURSOR is
    
        --1、定义显示游标
        CURSOR c_rows IS
            SELECT col1, col2 FROM t;
            
        v_col1 t.col1%type;
        v_col2 t.col2%type;
    begin
        --2、打开游标
        OPEN c_rows;
        LOOP
            --3、提取数据
            FETCH c_rows INTO v_col1, v_col2;
            EXIT WHEN c_rows%NOTFOUND;
            dbms_output.put_line(v_col1 || ',' || v_col2);
        END LOOP;
        --4、关闭游标
        CLOSE c_rows;
    end TEST_CURSOR;

       从上例可以总结出,使用显示游标包括定义游标、打开游标、提取数据和关闭游标四个阶段。

      (1)定义游标

      在使用显示游标之前,必须首先在定义部分定义游标。定义游标用于指定游标所对应的SELECT语句,语法如下:     

        CURSOR cursor_name IS select_statement;

      cursor_name用于指定游标名称;select_statement用于指定游标所对应的SELECT语句。

      (2)打开游标

      当打开游标时,Oracle会执行游标所对应的SELECT语句,并将SELECT语句的结果暂时存放到结果集中。语法如下:    

        OPEN cursor_name;

      该游标名必须是在定义部分已经定义的游标。

      (3)提取数据

      在打开游标之后,SELECT语句的结果被临时存放到游标结果集中。为了处理结果集中的数据,需要使用FETCH语句提取游标数据。语法如下:

        FETCH cursor_name INTO v1, v2, ...;

      v1, v2用于接收游标数据的变量。

      (4)关闭游标

      在提取并处理了结果集的所有数据之后,就可以关闭游标并释放其结果集了,语法如下:  

        CLOSE cursor_name;

      

  • 相关阅读:
    virtualbox 5.0.6 在debian jessie amd64启动报错
    golang中的检验hash
    删除多余的自编译的内核、mysql连接不了的问题
    scoket常用函数简单介绍
    我的bootstrap学习
    TCP/IP四层模型和OSI七层模型
    五种调试方法
    实现对一个8bit数据的指定位的置0或者置1操作,并保持其他位不变。
    如何测试一个杯子
    黑白盒测试及区别、测试用例的设计(测试小笔记)
  • 原文地址:https://www.cnblogs.com/shuaihua/p/2861420.html
Copyright © 2011-2022 走看看