在工作中经常会出现误操作导致存储过程被替换或者被删除的情况,给工作中难免会带来不必要的麻烦,针对Oracle的存储过程,可以利用Oracle提供的强大闪回功能。
首先用sys登陆到plsql或者sqlplus中,
SQL> set pagesize 0
SQL> col text format a4000
SQL> spool d:\flashback.txt
Started spooling to d:\flashback.txt
SQL> select text from dba_source as of timestamp to_timestamp('2015-10-11 10:50:32', 'YYYY-MM-DD HH24:MI:SS') where owner='TEST' and name='PD_TEST' order by line;
procedure PD_TEST
(
pid in number
)
is --定义传入变量
v_name varchar2(10); --定义姓名变量
v_salary number; --定义工资变量
sqlstr varchar2(200); --定义封装sql语句变量
begin
sqlstr:='select name ,salary from tmp where id=:1'; --封装sql语句
execute immediate sqlstr into v_name,v_salary using pid ; --执行封装sql语句,并使用绑定变量
dbms_output.put_line(v_name||'的收入为:'||to_char(v_salary)); --打印姓名收入
exception
when others then
dbms_output.put_line('找不到相应数据'); --打印例外情况
end;
16 rows selected
SQL> spool off;
Stopped spooling to d:\flashback.txt
然后可以去d盘中找到对应的文件,打开文件修改即可,或者直接复制plsql中的输出即可