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
子句通过游标进行更新,它们将立即可见。在游标外部所做的更新直到提交时才可见,除非将游标的事务隔离级别设为未提交读。
以游标打开时刻的当时状态显示结果集的游标。静态游标在游标打开时不反映对基础数据进行的更新、删除或插入。有时称它们为快照游标。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)