存储过程中为什么不能查询视图!

[复制链接]
查看11 | 回复3 | 2014-2-19 11:55:14 | 显示全部楼层 |阅读模式
create or replace procedure do_sql(p_sql in varchar2 )
as l_start_redo number;
l_redo number;
begin
select v$mystat.value into l_start_redo
from v$mystat,v$statname
where v$mystat.statistic#=v$statname.statistic#
and v$statname.name ='redo size';
execute immediate p_sql;
commit;
select v$mystat.value-l_start_redo into l_redo
from v$mystat,v$statname
where v$mystat.statistic#=v$statname.statistic#
and v$statname.name='redo size';
dbmos_output.put_line
(to_char(l_redo,'9,999,999')||'bytes of redo generated for "'||
substr(replace(p_sql,chr(10),''),1,25) || '"...');
end;

Compilation errors for PROCEDURE SCOTT.DO_SQL
Error: PL/SQL: ORA-00942: 表或视图不存在
Line: 7
Text: from v$mystat,v$statname
Error: PL/SQL: SQL Statement ignored
Line: 6
Text: select v$mystat.value into l_start_redo
Error: PL/SQL: ORA-00942: 表或视图不存在
Line: 16
Text: from v$mystat,v$statname
Error: PL/SQL: SQL Statement ignored
Line: 15
Text: select v$mystat.value-l_start_redo into l_redo
Error: PLS-00201: 必须声明标识符 'DBMOS_OUTPUT.PUT_LINE'
Line: 20
Text: dbmos_output.put_line
Error: PL/SQL: Statement ignored
Line: 20
Text: dbmos_output.put_line
回复

使用道具 举报

千问 | 2014-2-19 11:55:14 | 显示全部楼层
我 grant select any table to scott ;
错误依旧
回复

使用道具 举报

千问 | 2014-2-19 11:55:14 | 显示全部楼层
GRANT SELECT ANY DICTIONARY TO USER;
回复

使用道具 举报

千问 | 2014-2-19 11:55:14 | 显示全部楼层
谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行