oracle中存储过程游标的遍历方式

在介绍这前先随便说点。

存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。

%type 为了使一个变量的数据类型与另一个已经定义了的变量(尤其是表的某一列)的数据类型相一致,当被参照的那个变量的数据类型改变了之后,这个新定义的变量的数据类型会自动跟随其改变,容易保持一致,也不用修改PL/SQL程序了.

%rowtype如果一个表有较多的列,使用%ROWTYPE来定义一个表示表中一行记录的变量,比分别使用%TYPE来定义表示表中各个列的变量要简洁得多,并且不容易遗漏、出错。这样会增加程序的可维护性。为了使一个变量的数据类型与一个表中记录的各个列的数据类型相对应、一致,Oracle提供%ROWTYPE定义方式。当表的某些列的数据类型改变了之后,这个新定义的变量的数据类型会自动跟随其改变,容易保持一致,也不用修改PL/SQL程序了。当不能确切地知道被参照的那个表的结构及其数据类型时,就只能采用这种方法定义变量的数据类型。

一行记录可以保存从一个表或游标中查询到的整个数据行的各列数据。一行记录的各个列与表中一行的各个列有相同的名称和数据类型。

 

create or replace procedure Test

    --有参数就在()内写,没有就不写()
     (
      id in number;   --ID
      )
     is 
      cursor c_test is select id,name from t_user t where  t.id =id ;           --声明显式游标  
      c_t c_test%rowtype;                                                                    --定义游标变量,该变量的类型为基于游标c_test的记录  
    begin 
      --for 循环  
      for c_t in c_test loop  
        dbms_output.put_line(c_t.id|| '-1-' || c_t.name);  
      end loop; 
 
      --while 循环  
      open c_test;--必须要明确的打开游标  
        fetch c_test into c_t;  
        while c_test%found loop  
          dbms_output.put_line(c_t.id|| '-3-' || c_t.name);
          fetch c_test into c_t;  
        end loop;  
      close c_test;   --必须要明确的关闭游标

      --fetch 循环  
      open c_test;--必须要明确的打开游标  
      loop  
        fetch c_test
          into c_t;  
        exit when c_test%notfound;  
        dbms_output.put_line(c_t.id|| '-2-' || c_t.name); 
      end loop;  
      close c_test;  --必须要明确的关闭游标
     

    end Test;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值