Oracle

发布时间:2025-04-10 14:40:56 来源:君肯网

游标能够根据查询条件从数据表中提取一组记录,将其作为一个临时表置于数据缓冲区中,利用指针逐行对记录数据进行操作。

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

在执行SQL语句时,Oracle会自动创建隐式游标,该游标是内存中处理该语句的数据缓冲区,存储了执行SQL语句的结果。通过隐式游标属性可获知SQL语句的执行状态信息。

%found:布尔型属性,如果sql语句至少影响到一行数据,值为true,否则为false。

%notfound:布尔型属性,与%found相反。

%rowcount:数字型属性,返回受sql影响的行数。

%isopen:布尔型属性,当游标已经打开时返回true,游标关闭时则为false。

用户可以显式定义游标。使用显式游标处理数据要4个步骤:定义游标、打开游标、提取游标数据和关闭游标。

游标由游标名称和游标对应的select结果集组成。定义游标应该放在pl/sql程序块的声明部分。

语法格式:cursor 游标名称(参数) is 查询语句

打开游标时,游标会将符合条件的记录送入数据缓冲区,并将指针指向第一条记录。

语法格式:open 游标名称(参数)

将游标中的当前行数据赋给指定的变量或记录变量。

语法格式:fetch 游标名称 into 变量名

游标一旦使用完毕,就应将其关闭,释放与游标相关联的资源。

语法格式:close 游标名称

declare

cursor c1 is  select sno,cno,grade from sc

v_sno sc.sno%type

v_cno sc.cno%type

v_grade sc.grade%type

begin

open c1

loop

       fetch c1 into v_sno,v_cno,v_grade

       exit when c1%notfound–紧跟fetch之后

  if c1%found then

         dbms_output.put_line(to_char(c1%rowcount)||v_cno)

  end if

end loop

close c1 

end

declare

cursor c1 is select sno,cno,grade from sc

v_sno sc.sno%type

v_cno sc.cno%type

v_grade sc.grade%type

begin

open c1

    fetch c1 into v_sno,v_cno,v_grade

    while c1%found loop

       dbms_output.put_line(v_sno||v_cno||v_grade)

     fetch c1 into v_sno,v_cno,v_grade

end loop

close c1 

end

第三种:for

declare

Oracle

cursor c1 is select sno,cno,grade from sc

begin

  for item in c1 loop

    dbms_output.put_line(rpad(item.sno,’10’,’ ’)||rpad(item.cno,’10’,’ ’)||rpad(item.grade,’10’,’ ’))

  end loop

end

如何使用Oracle的游标?

第一,如果游标以open打开的,则使用close关闭:

declare;

cursormycursoris;

select*fromempforupdate

myrecordemp%rowtype

begin

openmycursor

loop

fetchmycursorintomyrecord

exitwhenmycursor%notfound

if(myrecord.sal=2000)then

updateemp

setsal=2018

wherecurrentofmycursor

endif

endloop

closemycursor

commit

end

第二,使用for循环的,则循环结束游标自动关闭:

declare

cursormycursoris

select*fromemp

begin

foriinmycursor

loop

dbms_output.put_line(i.job)

endloop

end

oracle游标是数据库中一个命名的工作区,当游标被声明后,他就与一个固定的SQL想关联,在编译时刻是已知的,是静态的.它永远指向一个相同的查询工作区。

游标变量可以在运行时刻与不同的SQL语句关联,在运行时可以取不同的SQL语句.它可以引用不同的工作区。

oracle游标和游标变量是不能相互代替的。如何定义游标类型:

TYPEref_type_nameISREFCURSOR[RETURNreturn_type]

声明游标变量:

cursor_nameref_type_name

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

显示游标:

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

隐式游标:

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

以上就是关于Oracle 游标全部的内容,如果了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

更多相关资讯

游标能够根据查询条件从数据表中提取一组记录,将其作为一个临时表置于数据缓冲区中,利用指针逐行对记录数据进行操作。 Oracle中的游标分为显…
查看详情
游标能够根据查询条件从数据表中提取一组记录,将其作为一个临时表置于数据缓冲区中,利用指针逐行对记录数据进行操作。 Oracle中的游标分为显…
查看详情
游标能够根据查询条件从数据表中提取一组记录,将其作为一个临时表置于数据缓冲区中,利用指针逐行对记录数据进行操作。 Oracle中的游标分为显…
查看详情
相关文章
推荐游戏
风之谷
风之谷
游戏资讯 10.5M
下载
斗罗大陆3
斗罗大陆3
游戏资讯 566.9M
下载
冠军网球
冠军网球
游戏资讯 148.1M
下载
最佳炮手
最佳炮手
游戏资讯 68.1M
下载
如梦下弦月
如梦下弦月
游戏资讯 840.1M
下载
富甲封神传
富甲封神传
游戏资讯 263.0M
下载