Oracle中如何掌握与使用游标

1游标的属性

 

  oracle 游标有4个属性:%ISOPEN,%FOUND,%NOTFOUND,%ROWCOUNT。

 

  %ISOPEN判断游标是否被打开,如果打开%ISOPEN等于true,否则等于false;

 

  %FOUND %NOTFOUND判断游标所在的行是否有效,如果有效,则%FOUNDD等于true,否则等于false;

 

  %ROWCOUNT返回当前位置为止游标读取的记录行数。

 

  隐式游标和显式游标

 

隐式游标

 

显式游标

 

PL/SQL维护,当执行查询时自动打开和关闭

 

在程序中显式定义、打开、关闭,游标有一个名字。

 

游标属性前缀是SQL

 

游标属性的前缀是游标名

 

属性%ISOPEN总是为FALSE

 

%ISOPEN根据游标的状态确定值

 

SELECT语句带有INTO子串,只有一行数据被处理

 

可以处理多行数据,在程序中设置循环,取出每一行数据。

 

 

  记录变量

 

  定义一个记录变量使用TYPE命令和%ROWTYPE,
  
  
DECLARE R_emp EMP % ROWTYPE; CURSOR c_emp IS SELECT * FROM emp;

 

  或:
  
  
DECLARE CURSOR c_emp IS SELECT ename,salary FROM emp;R_emp c_emp % ROWTYPE;

 

  带参数的游标

 

  与存储过程和函数相似,可以将参数传递给游标并在查询中使用。这对于处理在某种条件下打开游标的情况非常有用。它的语法如下:

 

  CURSOR cursor_name[(parameter[,parameter],...)] IS select_statement;

 

  定义参数的语法如下:

 

  Parameter_name [IN] data_type[{:=|DEFAULT} value]

 

  与存储过程不同的是,游标只能接受传递的值,而不能返回值。参数只定义数据类型,没有大小。  
  
  另外可以给参数设定一个缺省值,当没有参数值传递给游标时,就使用缺省值。游标中定义的参数只是一个占位符,在别处引用该参数不一定可靠。
  
  在打开游标时给参数赋值,语法如下:

 

  OPEN cursor_name[value[,value]....];

 

  游标FOR循环

 

  FOR循环的游标按照正常的声明方式声明,它的优点在于不需要显式的打开、关闭、取数据,测试数据的存在、定义存放数据的变量等等。游标FOR 循环的语法如下:

 

 

 

 

 

 

 

 

     
     
DELCARE CURSOR c1 IS SELECT empno,salary FROM emp WHERE comm IS NULL FOR UPDATE OF comm;v_comm NUMBER ( 10 , 2 ); BEGIN FOR r1 IN c1 LOOP IF r1.salary < 500 THEN v_comm: = r1.salary * 0.25 ;ELSEIF r1.salary < 1000 THEN v_comm: = r1.salary * 0.20 ;ELSEIF r1.salary < 3000 THEN v_comm: = r1.salary * 0.15 ; ELSE v_comm: = r1.salary * 0.12 ; END IF ; UPDATE emp; SET comm = v_comm WHERE CURRENT OF c1l; END
 
 
[1] [2] 下一页  
  
  
FOR record_name IN (corsor_name [ (parameter[,parameter ] ...)] | (query_difinition)LOOPstatements END LOOP;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值