创建job时报错,并非所有的变量都已绑定

悬崖跳舞被人砍 2015-02-02 01:58:50
我的job语句如下:

BEGIN
SYS.dbms_job.submit(job => :job,
what => 'sp_update_ycz;',
next_date => SYSDATE,
INTERVAL => 'trunc(sysdate) + 20/24');
COMMIT;
END;

执行的时候就会报错
但是以前创建物化视图的job就可以正常执行,语句如下:
begin
sys.dbms_job.submit(job => :job,
what => 'dbms_refresh.refresh(''"U_MOBILE_DB"."MV_BASE_FENXI"'');',
next_date => to_date('02-02-2015 23:00:00', 'dd-mm-yyyy hh24:mi:ss'),
interval => 'trunc(SYSDATE + 1) - 1/24');
commit;
end;

原因为何呢?
...全文
741 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
小灰狼W 2015-02-03
  • 打赏
  • 举报
回复
:表示绑定变量,在sqlplus里用variable来定义,也是需要声明变量的
rick-he 2015-02-03
  • 打赏
  • 举报
回复
引用 2 楼 wildwave 的回复:
declare job number; begin sys.dbms_job.submit(job => job, what => 'dbms_refresh.refresh(''"U_MOBILE_DB"."MV_BASE_FENXI"'');', next_date => to_date('02-02-2015 23:00:00', 'dd-mm-yyyy hh24:mi:ss'), interval => 'trunc(SYSDATE + 1) - 1/24'); commit; dbms_output.put_line(to_char(job)); end;
job => :job 加了冒号代表给job赋值了一个字符型吧, job实际上是一个数值型的吧,而且还是系统给定的,
小灰狼W 2015-02-02
  • 打赏
  • 举报
回复
job => job 这里赋值了,不定义变量就会报错了
不写代码的钦 2015-02-02
  • 打赏
  • 举报
回复
引用 3 楼 kingofluo 的回复:
[quote=引用 1 楼 Wentasy 的回复:] sp_update_ycz 存储过程需要参数吗?
有一个变量,该存储过程的语句如下:

CREATE OR REPLACE PROCEDURE sp_update_ycz
AS
  last_date DATE;
BEGIN
  SELECT MAX(max_date) INTO last_date FROM record_ycz;
  DELETE FROM p_ycz_all WHERE createtime = last_date;
  INSERT INTO p_ycz_all
  SELECT * FROM ycz@dblinkto_u_dsjycz_db WHERE createtime >= last_date;
  COMMIT;
  INSERT INTO record_ycz
  SELECT SYSDATE,MAX(createtime),COUNT(*),COUNT(DISTINCT mobile),COUNT(user_NAME),COUNT(cardno)
    FROM p_ycz_all;
  COMMIT;
END
[/quote] 可以啊,固定这样子。 declare job number; begin sys.dbms_job.submit (job, 'sp_update_ycz;', to_date('2015-02-02 00:00:00',' yyyy-mm-dd hh24:mi:ss'), 'trunc(sysdate+1)' ); commit; end;
  • 打赏
  • 举报
回复
引用 2 楼 wildwave 的回复:
declare job number; begin sys.dbms_job.submit(job => job, what => 'dbms_refresh.refresh(''"U_MOBILE_DB"."MV_BASE_FENXI"'');', next_date => to_date('02-02-2015 23:00:00', 'dd-mm-yyyy hh24:mi:ss'), interval => 'trunc(SYSDATE + 1) - 1/24'); commit; dbms_output.put_line(to_char(job)); end;
declare一个number job但是没有赋值啊,这样的语法都可以吗?
  • 打赏
  • 举报
回复
引用 1 楼 Wentasy 的回复:
sp_update_ycz 存储过程需要参数吗?
有一个变量,该存储过程的语句如下:

CREATE OR REPLACE PROCEDURE sp_update_ycz
AS
  last_date DATE;
BEGIN
  SELECT MAX(max_date) INTO last_date FROM record_ycz;
  DELETE FROM p_ycz_all WHERE createtime = last_date;
  INSERT INTO p_ycz_all
  SELECT * FROM ycz@dblinkto_u_dsjycz_db WHERE createtime >= last_date;
  COMMIT;
  INSERT INTO record_ycz
  SELECT SYSDATE,MAX(createtime),COUNT(*),COUNT(DISTINCT mobile),COUNT(user_NAME),COUNT(cardno)
    FROM p_ycz_all;
  COMMIT;
END
小灰狼W 2015-02-02
  • 打赏
  • 举报
回复
declare job number; begin sys.dbms_job.submit(job => job, what => 'dbms_refresh.refresh(''"U_MOBILE_DB"."MV_BASE_FENXI"'');', next_date => to_date('02-02-2015 23:00:00', 'dd-mm-yyyy hh24:mi:ss'), interval => 'trunc(SYSDATE + 1) - 1/24'); commit; dbms_output.put_line(to_char(job)); end;
Wentasy 2015-02-02
  • 打赏
  • 举报
回复
sp_update_ycz 存储过程需要参数吗?

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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