oracle数据库的job错误

飞羽喂马 2016-07-15 02:24:13
这两天在学习job,自己就想写个定时新增数据的job,首先新增用于新增数据的测试表:

-- Create table
create table TEST_INDEX
(
ID NUMBER
)
tablespace USERS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);

新增表之后,新增存储过程:

create or replace procedure pr_test_index as
begin
insert into test_index values(to_number(to_char(sysdate,'yyyymmddhh24miss')));
end;

最后也就是今天练习的目标,job,我用的是PL/SQL写的

declare job_test_index number;
begin
sys.dbms_job.submit(job_test_index,'PR_TEST_INDEX',sysdate,'sysdate+1/86400',true);
commit;
end;
/

然后显示成功,在这个过程我还用sqlplus写了个,SQLplus需要将submit(job_test_index写成submit(:job_test_index。
最后运行的时候出问题了 我分别用sqlplus和pl/SQL运行了下都不行,然后参照库中别人的job看了下原因是在PL/SQL中的“表格”what中存储过程的名字后面没有‘;’号,填上之后就可以了,原因到现在我也没有明白。最后看了下库里表的数据其实并不是1s一个,而是5s出来一条数据,在网上查询的结果是因为语句执行本身需要时间,nanana!
最后将这次还没有解决的问题贴出来,望各位路过的师兄师姐扔砖:
1.dbms什么情况下用sys?
2.为什么写的job没错,但在what中的存储过程名字后面就是少了个;号?
3.大家一般都是怎么新建job的,我觉得这样用语句写比填格子来得好
4.我看在网上sqlplus中的job声明用的是variable,我试过不行,这是为什么?
...全文
247 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
学徒cx 2019-10-08
  • 打赏
  • 举报
回复
ghx287524027 2016-07-15
  • 打赏
  • 举报
回复
冒个泡,学习学习
卖水果的net 2016-07-15
  • 打赏
  • 举报
回复
2.为什么写的job没错,但在what中的存储过程名字后面就是少了个;号? 是的 1/86400 这个间隔太小了,可以改成 10/86400 试试

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧