当前位置: 代码迷 >> Oracle开发 >> oracle 在pl/sql 工具中如何运行一个存储过程
  详细解决方案

oracle 在pl/sql 工具中如何运行一个存储过程

热度:138   发布时间:2016-04-24 06:28:15.0
oracle 在pl/sql 工具中怎么运行一个存储过程
我写了一个存储过程如下:
create or replace procedure PROC_SENT_MID_FEEVALUELOG is
cursor cur_tmp  is
   -----获取所有过期的记录
   select g.f_fee_id,g.f_addvalue_number,g.f_fee_overtime from  t_mid_sent_feevalue_log g 
   where g.f_fee_state ='0'
   and g.f_fee_overtime < to_char(sysdate,'yyyyMMddhh24miss')
begin
   for cur_row in cur_tmp loop
       begin
           exit when cur_tmp%notfound;
             ----更新赠送日志表记录更新为过期
             update t_mid_sent_feevalue_log t set t.f_fee_state ='2' where t.f_fee_id = cur_row.f_fee_id
             ----把充值券明细表锁定状态5 更新为初始化0
             update t_fee_addvalue_new_log  a set a.state = '0' where a.state ='5' 
             and a.addvalue_number =cur_row.f_addvalue_number
           commit;
       end;
   end loop;
   exception when others then
      begin
        rollback;
      end;
end PROC_SENT_MID_FEEVALUELOG;


现在我要怎么样把这个存储过程编译 部署起来。。请大神帮忙  只会写 不会运行了。。。
------解决思路----------------------
--添加定时任务,每晚12点定时执行
VARIABLE jobno number;↙

begin
DBMS_JOB.SUBMIT(:jobno,
    '你的存储过程;',
    TRUNC(SYSDATE),'trunc(sysdate)+1');
    commit;
end;

------解决思路----------------------
用PL/DEV创建JOB,填写上时间,存储过程 就OK了
------解决思路----------------------
引用:
用PL/DEV创建JOB,填写上时间,存储过程 就OK了

给你个具体的方法吧,在jobs上右击:

然后,填写过程,时间和间隔,其中过程要加上分号,如sp_test();:

------解决思路----------------------
在sql窗口,调用存储过程:
call sp_stu();使用call 关键字调用,存储过程名后要加括号; 
begin
sp_stu;
end;
在命令窗口调用可以使用exec sp_stu;
  相关解决方案