执行以下pl/sql块:
declare
job_no number; --jobid
l_str_interval varchar2(200); --interval
l_dt_starttime date; --when
begin
l_dt_starttime := to_date(to_char(add_months(trunc(sysdate), 1), 'yyyymm')||'01000000', 'yyyy-mm-dd hh24-mi-ss');
l_str_interval := to_char(add_months(trunc(sysdate), 1), 'yyyymm')||'01000000';
dbms_job.submit(job_no, 'null;aaa;' , l_dt_starttime, l_str_interval); --这里异常
commit;
end;
出现:数据类型不一致: 应为 DATE, 但却获得 NUMBER错误!
Parameter Type Mode Default?
--------- -------------- ---- --------
JOB BINARY_INTEGER OUT
WHAT VARCHAR2 IN
NEXT_DATE DATE IN Y
INTERVAL VARCHAR2 IN Y
NO_PARSE BOOLEAN IN Y
INSTANCE BINARY_INTEGER IN Y
FORCE BOOLEAN IN Y
喝晕了,迷糊ing。
job_no number; --jobid
l_str_interval varchar2(200); --interval
l_dt_starttime date; --when
begin l_dt_starttime := to_date(to_char(add_months(trunc(sysdate), 1), 'yyyymm')||'01000000', 'yyyy-mm-dd hh24-mi-ss');
--你的上面这句话等价于:trunc(sysdate+1)
l_str_interval := to_char(add_months(trunc(sysdate), 1), 'yyyymm')||'01000000';
--你的上面这句话等价于:to_char(trunc(sysdate+1),'yyyymmhh24miss')
dbms_job.submit(job_no, 'null;aaa;' , l_dt_starttime, l_str_interval);
--等价于dbms_job.submit(job_no, 'null;aaa;' , trunc(sysdate+1), ‘trunc(sysdate+1)’);
commit;
end;
楼主把问题复杂化了。
更正如下:
to_char(trunc(sysdate+1),'yyyymmddhh24miss')
宅男一只,标准to来to去的,真的弄不灵清了。
问你个问题,你的desc dbms_job.submit;是怎么查询出来其结构的呀?我怎么这样用就查不出来呀,要设置什么地方吗??请指教。如下:(我是以dba的账号登陆的)SQL> show user;
USER 为 "SYS"
SQL> desc dbms_job.submit;
ERROR:
ORA-04043: 对象 dbms_job.submit 不存在
dbms_job.submit(job_no=>job, what=>'null;aaa;' , next_date =>l_dt_starttime, interval =>l_str_interval)