数据库

本类阅读TOP10

·SQL语句导入导出大全
·SQL Server日期计算
·SQL语句导入导出大全
·SQL to Excel 的应用
·Oracle中password file的作用及说明
·MS SQLServer OLEDB分布式事务无法启动的一般解决方案
·sqlserver2000数据库置疑的解决方法
·一个比较实用的大数据量分页存储过程
·如何在正运行 SQL Server 7.0 的服务器之间传输登录和密码
·SQL中两台服务器间使用连接服务器

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
ORACLE PL/SQL 基础2 (游标的学习)

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

游标学习

一> 游标是什么:
  游标字面理解就是游动的光标。
  用数据库语言来描述:游标是映射在结果集中一行数据上的位置实体,有了游标
  用户就可以访问结果集中的任意一行数据了,将游标放置到某行后,即可对该行数据进行操作,例如提取当前
  行的数据等等。
二> 游标的分类:
   显式游标和隐式游标

   显示游标的使用需要4步:
      1.声明游标
              
                CURSOR mycur(vartype number) is
                 select emp_no,emp_zc from cus_emp_basic
                where com_no = vartype;

      2.打开游标
               open mycur(000627)         注:000627:参数
          
      3.读取数据
                 fetch mycur into varno,varprice;
              
      4.关闭游标
                 close mycur;
三> 游标的属性
       oracle 游标有4个属性: %ISOPEN , %FOUND , %NOTFOUND, %ROWCOUNT
      
       %ISOPEN 判断游标是否被打开,如果打开%ISOPEN 等于true,否则等于false
       %FOUND  %NOTFOUND 判断游标所在的行是否有效,如果有效,则%FOUNDD等于true,否则等于false
       %ROWCOUNT 返回当前位置为止游标读取的记录行数。

四> 示例:
 
  
set serveroutput on;
declare
      varno varchar2(20);
      varprice varchar2(20);
     
     CURSOR mycur(vartype number) is
       select emp_no,emp_zc from cus_emp_basic
       where com_no = vartype;
     begin
    
       if mycur%isopen = false then
       
         open mycur(000627);
       end if;
         fetch mycur into varno,varprice;
         while mycur%found
         loop
        dbms_output.put_line(varno||','||varprice);
        if mycur%rowcount=2 then
        exit;
        end if;
        fetch mycur into varno,varprice;
     
        end loop;
        close mycur;
        
         end;

 

 

  pl/sql 记录 的结构和c语言中的结构体类似,是由一组数据项构成的逻辑单元。
  pl/sql 记录并不保存再数据库中,它与变量一样,保存再内存空间中,在使用记录时候,要首先定义记录结构
  ,然后声明记录变量。可以把pl/sql记录看作是一个用户自定义的数据类型。

  set serveroutput on;
       declare
    
      type person is record
         (
            empno  cus_emp_basic.emp_no%type,
            empzc  cus_emp_basic.emp_zc%type);
     
      person1 person;
     
      cursor mycur(vartype number)is
      select emp_no,emp_zc from cus_emp_basic
           where com_no=vartype;
          
      begin
           if mycur%isopen = false then
           open mycur(000627);
           end if;
          
           loop
             fetch mycur into person1;
             exit when mycur%notfound;
             dbms_output.put_line('雇员编号:'||person1.empno||',地址:'||person1.empzc);
          end loop;
          close mycur;
          end;

 


   典型游标for 循环
   
    游标for循环示显示游标的一种快捷使用方式,它使用for循环依次读取结果集中的行
    数据,当form循环开始时,游标自动打开(不需要open),每循环一次系统自动读取
    游标当前行的数据(不需要fetch),当退出for循环时,游标被自动关闭(不需要使用close)

   使用游标for循环的时候不能使用open语句,fetch语句和close语句,否则会产生错误。

 


         set serveroutput on;
        declare
    
    
        cursor mycur(vartype number)is
           select emp_no,emp_zc from cus_emp_basic
           where com_no=vartype;
          
        begin
          
         for  person in mycur(000627) loop
        
            dbms_output.put_line('雇员编号:'||person.emp_no||',地址:'||person.emp_zc);
            end loop;
         
          end;




相关文章

相关软件