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
|