oracle存储过程的游标是什么
在oracle中,游标是SQL的一个内存工作区,由系统或用户以变量的形式定义,用于临时存储从数据库中提取的数据块;数据从数据库中传送到游标变量中后,应用程序再从游标变量中分解出需要的数据,并进行处理。
本教程操作环境:Windows10系统、Oracle 11g版、Dell G3电脑。
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;
推荐教程:《》
以上就是oracle存储过程的游标是什么的详细内容,更多请关注php中文网其它相关文章!
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
- 上一篇:
- 下一篇:
2. 本站不保证所提供所有下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理,有奖励!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有RB奖励和额外RMB收入!
磊宇堂正在使用的服务器 维护管理由磊宇云服务器提供支持
磊宇堂 » oracle存储过程的游标是什么