oracle存储过程中游标定义
1.游标的使⽤。看到的⼀段解释很好的概念,如下:
游标是SQL的⼀个内存⼯作区,由系统或⽤户以变量的形式定义。游标的作⽤就是⽤于临时存储从数据库中提取的数据块。在某些情况下,需要把数据从存放在磁盘的表中调到计算机内存中进⾏处理,最后将处理结果显⽰出来或最终写回数据库。这样数据处理的速度才会提⾼,否则频繁的磁盘数据交换会降低效率。
游标有两种类型:显式游标和隐式游标。在前述程序中⽤到的查询语句,⼀次只能从数据库中提取⼀⾏数据,对于这种形式的查询和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;      ame%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;
oracle游标的使用close emp_sor;
end;
end;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。