Oracle游标使用总结

Oracle游标使用总结,第1张

Oracle游标分为显示游标和隐式游标

显示游标(Explicit Cursor):在PL/SQL程序中定义的 用于查询的游标称作显示游标

隐式游标(Implicit Cursor):是指非PL/SQL程序中定义的 而且是在PL/SQL中使用UPDATE/DELETE语句时 Oracle系统自动分配的游标

一 显示游标

使用步骤

( )定义 ( )打开 ( )使用 ( )关闭

使用演示

首先创建测试用表STUDENT 脚本如下

( ) 使用WHILE循环处理游标

create or replace PROCEDURE PROC_STU AS

BEGIN

显示游标使用 使用while循环

declare

定义游标 名称为cur_stu

cursor cur_stu is

select stuno stuname from student order by stuno

定义变量 存放游标取出的数据

v_stuno varchar( )

v_stuname varchar( )

begin

打开游标cur_stu

open cur_stu

将游标的当前行取出存放到变量中

fetch cur_stu into v_stuno v_stuname

while cur_stu%found 游标所指还有数据行 则继续循环

loop

打印结果

dbms_output PUT_LINE(v_stuno|| >||v_stuname)

继续将游标所指的当前行取出放到变量中

fetch cur_stu into v_stuno v_stuname

end loop

close cur_stu关闭游标

end

END PROC_STU

( ) 使用IF ELSE代替WHILE循环处理游标

create or replace PROCEDURE PROC_STU AS

BEGIN

显示游标使用 使用if判断

declare

定义游标 名称为cur_stu

cursor cur_stu is

select stuno stuname from student order by stuno

定义变量 存放游标取出的数据

v_stuno varchar( )

v_stuname varchar( )

begin

打开游标cur_stu

open cur_stu

将游标的当前行取出存放到变量中

fetch cur_stu into v_stuno v_stuname

loop

if cur_stu%found then 如果游标cur_stu所指还有数据行

打印结果

dbms_output PUT_LINE(v_stuno|| >||v_stuname)

继续将游标所指的当前行取出放到变量中

fetch cur_stu into v_stuno v_stuname

else

exit

end if

end loop

close cur_stu关闭游标

end

END PROC_STU

( ) 使用FOR循环处理游标

create or replace PROCEDURE PROC_STU AS

BEGIN

显示游标使用 使用for循环

declare

定义游标 名称为cur_stu

cursor cur_stu is

select stuno stuname from student order by stuno

begin

for stu in cur_stu

loop

dbms_output PUT_LINE(stu stuno|| >||stu stuname)

循环做隐含检查 %notfound

end loop

自动关闭游标

end

END PROC_STU

( ) 常用的使用EXIT WHEN处理游标

create or replace

PROCEDURE PROC_STU _ AS

BEGIN

显示游标使用 使用exit when循环

declare

定义游标 名称为cur_stu

cursor cur_stu is

select stuno stuname from student order by stuno

定义变量 存放游标取出的数据

v_stuno varchar( )

v_stuname varchar( )

begin

打开游标cur_stu

open cur_stu

loop

将游标的当前行取出存放到变量中

fetch cur_stu into v_stuno v_stuname

exit when cur_stu%notfound游标所指还有数据行 则继续循环

打印结果

dbms_output PUT_LINE(v_stuno|| >||v_stuname)

end loop

close cur_stu关闭游标

end

END PROC_STU _

二 隐式游标

使用演示

create or replace PROCEDURE PROC_STU AS

BEGIN

隐式游标使用

update student set stuname= 张燕广 where stuno=

如果更新没有匹配则插入一条新记录

if SQL%NOTFOUND then

insert into student(STUNO STUNAME AGE GENDER)

values( 张燕广 男 )

end if

END PROC_STU

说明

所有的SQL语句在上下文区内部都是可执行的 因为都有一个游标指向上下文区 此游标就是

SQL游标 与现实游标不同的是 SQL游标在PL/SQL中不需要打开和关闭 而是在执行UPDATE

DELETE是自动打开和关闭

上面例子中就是通过SQL%NOTFOUND游标属性判断UPDATE语句的执行结果决定是否需要插入新记录 CREATE TABLE STUDENT (

STUNAME VARCHAR ( BYTE)

STUNO VARCHAR ( BYTE)

AGE NUMBER

GENDER VARCHAR ( CHAR)

lishixinzhi/Article/program/Oracle/201311/17531

Oracle中的游标分为显示游标和隐式游标。

显示游标:

显示游标是用cursor...is命令定义的游标,它可以对查询语句(select)返回的多条记录进行处理;显示游标的 *** 作:打开游标、 *** 作游标、关闭游标;

隐式游标:

隐式游标是在执行插入(insert)、删除(delete)、修改(update)和返回单条记录的查询(select)语句时由PL/SQL自动定义的。PL/SQL隐式地打开SQL游标,并在它内部处理SQL语句,然后关闭它。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9977345.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存