oracle存储过程中游标定义

1.游标的使用。看到的一段解释很好的概念,如下:
    游标是SQL的一个内存工作区,由系统或用户以变量的形式定义。游标的作用就是用于临时存储从数据库中提取的数据块。在某些情况下,需要把数据从存放在磁盘的表中调到计算机内存中进行处理,最后将处理结果显示出来或最终写回数据库。这样数据处理的速度才会提高,否则频繁的磁盘数据交换会降低效率。 
游标有两种类型:显式游标和隐式游标。在前述程序中用到的SELECT...INTO...查询语句,一次只能从数据库中提取一行数据,对于这种形式的查询和DML操作,系统都会使用一个隐式游标。但是如果要提取多行数据,就要由程序员定义一个显式游标,并通过与游标有关的语句进行处理。显式游标对应一个返回结果为多行多列的SELECT语句。 
游标一旦打开,数据就从数据库中传送到游标变量中,然后应用程序再从游标变量中分解出需要的数据,并进行处理。在我们进行insert、update、delete和select   value into  variable 的操作中,使用的是隐式游标。

隐式游标的属性 返回值类型意义 : 

SQL%ROWCOUNT    整型  代表DML语句成功执行的数据行数   
SQL%FOUND   布尔型 值为TRUE代表插入、删除、更新或单行查询操作成功   
SQL%NOTFOUND    布尔型 与SQL%FOUND属性返回值相反   
SQL%ISOPEN  布尔型 DML执行过程中为真,结束后为假  
2.隐士游标:

create or replace procedure prc_example (epo in number) as
BEGIN  
        UPDATE emp SET sal=sal+100 WHERE empno=epo;   
         IF SQL%FOUND THEN    
        DBMS_OUTPUT.PUT_LINE('成功修改雇员工资!');   
        COMMIT;    
        ELSE  
        DBMS_OUTPUT.PUT_LINE('修改雇员工资失败!');   
         END IF;    
        END; 

declare
e_number number;
begin
e_number:=7788;
prc_example(e_number);
 end;
3.显示游标:

使用游标查询所有编号为10 的员工名

create or replace procedure prc_example is
begin
    declare
    cursor emp_sor  is select ename,sal from emp where deptno=10;  
    cname emp.ename%type;     
    csal emp.sal%type;
 begin
   open emp_sor;       
   loop        
   fetch emp_sor into cname,csal;  --取游标的值给变量。             
   dbms_output.put_line('ename:'||cname);        
   exit when emp_sor%notfound;        
  end loop;         
  close emp_sor;     
 end;
end;
 

你可能感兴趣的:(开发后台,后台)