Oracle plsql基础篇 游标

游标

游标是由结果集(可以是零条、一条或由相关的select语句查出的多条记录)和结果集中指向特定记录的游标位置组成的,游标充当了指针的作用

Oracle数据库中常用的是静态游标,静态游标分两类

1、显示游标:此类型的游标有明确的游标声明和定义。他需要自己写代码完成,一切由用户控制

2、隐式游标:它又PL/SQL自动管理。也成为SQL游标,用户无法控制


① 显示游标

游标的声明和定义

CURSOR  cuesor_name

 [(parameter_name  datatype...)] 

IS  select_statement;


cursor_name  游标名称 

 [(parameter_name  datatype...)]    可选。 参数名  参数类型,可以为多个

select_statement    select语句


eg:    无参的游标定义

DECLARE

CURSOR   mycursor

IS   select * from READERINFO;


游标使用的四部曲

1、声明游标  

2.、打开游标   open cursor_name

3、读取数据   fetch  cursor_name  into record_name

4、关闭游标 close cursor_name

用一个例子来说明一切,游标一般和loop循环一起使用,不然它只能返回一条数据

eg:

declare
  cursor test_cursor is
    select t.*
      from PROM_SUB_PRODUCT t
     where rownum < 10
     order by t.created_date desc;


  cur_test_cursor PROM_SUB_PRODUCT%rowtype;


begin
  open test_cursor;
  loop
    fetch test_cursor
      into cur_test_cursor;
    exit when test_cursor %notfound;
    dbms_output.put_line(cur_test_cursor.product_id || '--' ||
                         cur_test_cursor.must_buy);
  end loop;
  close test_cursor;
end;

注:%rowtype前面已经说到过,是表示用表的字段类型匹配变量类型,但是只能和select * 用,如果select 某几个特定字段 就不能这样使用,应该使用%type

eg:

declare
  cursor test_cursor is
    select t.prom_product_id,t.price_type
      from PROM_SUB_PRODUCT t
     where rownum < 10
     order by t.created_date desc;


  prom_product_id PROM_SUB_PRODUCT.Prom_Product_Id%type;
  price_type PROM_SUB_PRODUCT.Price_Type%type;


begin
  open test_cursor;
  loop
    fetch test_cursor
      into prom_product_id,price_type;
    exit when test_cursor %notfound;
    dbms_output.put_line(prom_product_id || '--' ||
                         price_type);
  end loop;
  close test_cursor;
end;

注:此段是定义游标是select某两个特定字段,而不是* ,所以下面不能用%rowtype,应该用%type,这个例子已经写得很清楚了


② 隐式游标

四大特点

1、隐式游标默认名称为"SQL"

2、查询或DML语句操作PLSQL将自动生成隐式游标

3、由PLSQL管理,不由用户控制

4、隐式游标属性值始终指向最新之行的sql语句

隐式游标的属性。

1. %ISOPEN    该属性有oracle控制。永远返回false

2.%ROWCOUNT    反映DML操作对数据影响数量

3.%FOUND    反映DML操作是否影响数据

4.%NOTFOUNT    与%FOUNT相反

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值