【原创】ORA-01008: 并非所有…

问题描述:

删除job语句如下:EXEC dbms_job.remove(:jobno);

执行时报ORA-01008错误:并非所有变量都已绑定。

创建该job的语句如下:

-------------------

declare  
jobno number;     
begin
sys.dbms_job.submit(jobno,'change_date;',sysdate,'sysdate+1/1440');
commit;--必须有commit,如果没有是查不到该job的!!!
end;
/

--------------------

解决办法:

这个可以通过查出该job的作业号,然后直接指定job号删除即可:

EXEC dbms_job.remove(23);

 

分析:

使用另外一种创建job的方法,便可以直接调用EXEC dbms_job.remove(:jobno);将该作业删除。

创建job语句如下:

variable jobno number;
begin
sys.dbms_job.submit(job => :jobno,
what => 'change_date;',
next_date => to_date('18-11-2013', 'dd-mm-yyyy'),
interval => 'sysdate+1/1440');--每天1440分钟,即一分钟运行change_date过程一次
commit; --必须有commit,如果没有是查不到该job的!!!
end;
/

这两种创建job的区别仅仅是jobno的定义方式不同:

第一种是declare出的变量

第二种是variable出的变量

在网上一搜发现两者作用域不同:

variable相当于一个sql*plus环境的全局变量,declare里定义的是pl/sql中的局部变量。

这样就好理解了,第一种创建方式中的jobno是局部变量,只在PL/SQL块里有效,所以后来调用

EXEC dbms_job.remove(:jobno);删除时报变量未绑定。

 define,declare和variable的区别详见博客http://blog.sina.com.cn/s/blog_62defbef0101opem.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值