因为需要批量创建同义词,所以使用了 all_objects 表,而游标就是遍历这张表的数据。
定义了 cursor cur_obj is …… , 把 is 后面的 select 语句单独拿出来执行是 101 行结果,这些结果基本一致,没有什么不同。
然后使用 for in 遍历,每次 输出 cur_obj%rowcount , 最后输出的结果居然是 98 ,少的这3条数据我已经找到了。
我想问的是,为什么会少 3 条数据? 我的过程很简单,就是 声明 cursor , 遍历, 输出 rowcount, 除此之外什么事情都没做。 是不是 cursor 使用的时候有什么限制 , 或者需要注意的地方 ?
定义了 cursor cur_obj is …… , 把 is 后面的 select 语句单独拿出来执行是 101 行结果,这些结果基本一致,没有什么不同。
然后使用 for in 遍历,每次 输出 cur_obj%rowcount , 最后输出的结果居然是 98 ,少的这3条数据我已经找到了。
我想问的是,为什么会少 3 条数据? 我的过程很简单,就是 声明 cursor , 遍历, 输出 rowcount, 除此之外什么事情都没做。 是不是 cursor 使用的时候有什么限制 , 或者需要注意的地方 ?
解决方案 »
- 关于脏数据
- 请问 脚本dbms_server_alert.set_threshold 什么情况下执行
- 菜人问题:PL/SQL中的存储过程的写法中小小问题???
- 请假一个rownum的问题
- oracle数据库无法启动了。 ---急---
- Oracle安装求教?
- 关于select 语句的问题。在线等待,立即加分!
- 表约束和索引的区别问题
- 无法删除oraclei9I下的inventory目录,请问是什么原因
- 在centos6.5 的php上编译oracle扩展老是不成功!
- 要用java做一t个试题库,数据库oracle,中间件tomcat……感觉好复杂啊。。。登陆界面都有点不太会弄
- form builder radio button 问题请教
create or replace procedure pro_setsynonyms is v_privs all_objects%rowtype;
v_tab v_privs.object_name%type;
v_owner all_objects.OWNER%type;
v_sql varchar2(1000);begin v_tab := '';
for v_privs in (select *
from all_objects t
where t.owner like 'SBP%'
and exists
(select *
from user_tab_privs s
where s.OWNER = t.OWNER
and s.OWNER <> s.GRANTEE
and s.OWNER in ('SBPBS'))
and t.OBJECT_TYPE in ('TABLE', 'VIEW', 'SEQUENCE')) loop
v_tab := v_privs.object_name;
v_owner := v_privs.owner; v_sql := 'CREATE OR REPLACE SYNONYM ' || v_tab || ' FOR ' || v_owner || '.' ||
v_tab || ';'; dbms_output.put_line(v_sql); end loop;end pro_setsynonyms;