日期:2014-05-17  浏览次数:20815 次

创建定时任务的时候,图形化界面生成的代码怎么不可以在命令窗口实现啊?
创建定时任务的时候,通过图像话界面的方法,如下:



产生了如下的代码:
SQL code

begin
  sys.dbms_job.submit(job => :job,
                      what => 'pro_job;',
                      next_date => to_date('12-08-2012 16:48:59', 'dd-mm-yyyy hh24:mi:ss'),
                      interval => 'sysdate+1/24');
  commit;
end;
/


我单击“应用”的时候,后来验证,创建的定时任务可以使用。
但是当我把上述代码放到命令窗口,并加上job变量的声明的时候,
SQL code

declare 
job number;


一直提示下面的错误:
ORA-01008: 并非所有变量都已绑定。后来上网查找之后,才知道,只要吧job前面的“:”去掉就可以了。
所以我就想不通了,为什么通过图形化界面生成的PL/SQL程序块必须要修改之后才可以使用呢?
谢谢!

------解决方案--------------------
冒号的含义是引用“宿主”的变量,你直接写在declare 下面这就是 plsql匿名块自己的变量了,当然不需要冒号

你直接在sqlplus 里面
SQL code

[TEST@myoracle] SQL>var job number;

------解决方案--------------------
直接输入JOB号就可以了,为什么还用变量,实现方式都一样,传入个JOB号
------解决方案--------------------
SQL code
begin
  select count(*) into :job from scott.emp;
end;

------解决方案--------------------
这种问题不能纠结楼主。