如何实现Oracle数据库中的动态游标

如何实现Oracle数据库中的动态游标,第1张

create or replace procedure P_TEST_SQL is

TYPE ref_cursor_type IS REF CURSOR  --定义一个动态游标

tablename varchar2(200) default 'ess_client'

v_sql varchar2(1000)

mobile varchar2(15)

usrs ref_cursor_type

begin

--使用连接符拼接成一条完整SQL

v_sql := 'select usrmsisdn from '||tablename||' where rownum < 11'

--打开游标

open usrs for v_sql 

loop

fetch usrs into mobile

exit when usrs%notfound

insert into tmp(usrmsisdn) values(mobile)

end loop

close usrs

commit

end P_TEST_SQL

动态游标

动态游标与静态游标相对。当滚动游标时,动态游标反映结果集中所做的所有更改。结果集中的行数据值、顺序和成员在每次提取时都会改变。所有用户做的全部

UPDATE、INSERT

DELETE

语句均通过游标可见。如果使用

API

函数(如

SQLSetPos

)或

Transact-SQL

WHERE

CURRENT

OF

子句通过游标进行更新,它们将立即可见。在游标外部所做的更新直到提交时才可见,除非将游标的事务隔离级别设为未提交读。

以游标打开时刻的当时状态显示结果集的游标。静态游标在游标打开时不反映对基础数据进行的更新、删除或插入。有时称它们为快照游标。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存