job:variable job1 number;
begin
dbms_job.submit(:job1,'MYPROC;',sysdate,'sysdate+1/1440'); --每天1440分钟,即一分钟运行test过程一次
end;procedure:create or replace procedure proc_sms_1 as
begin
insert into SMSC_MSGDOWNINTER(MSGID,MOBILEPHONE,MSGCONTENT,SENDTIME,USERID,ORGID,APPCODE)
select SEQ_SMSC_MSGUPINTER.nextval,S3.MOBILEPHONE,cast(S2.CONTENT as varchar(1000)),S2.SENDPOINT,S1.USERID,S1.ORGID,'qq'
from SMS_MSGBACHSENDTYPE S1,SMS_MSGBATCHSENDLOGMAIN S2,SMS_MSGBATCHSENDLOGDETAIL S3
where 1=1
and S1.BATCHSENDID = S2.BATCHSENDID
and S2.SUBSCRIBEID = S3.SUBSCRIBEID
and to_char(sysdate,'yyyymmddhh24mi') = to_char(S2.Sendpoint,'yyyymmddhh24mi');
commit;
end;问题:当系统时间等于字段'S2.Sendpoint'里的时间时执行插入,(to_char(sysdate,'yyyymmddhh24mi') = to_char(S2.Sendpoint,'yyyymmddhh24mi');)
可是不知为什么在系统时间还没到'S2.Sendpoint'的时间就插入了一条记录,然后再等到系统时间等于'S2.Sendpoint'里的时间时又插入了一条记录,为什么插入
了两条记录,为什么系统时间还没到'S2.Sendpoint'字段里的时间就会自动插入一条记录呢..
是不是这个语句写的有问题:to_char(sysdate,'yyyymmddhh24mi') = to_char(S2.Sendpoint,'yyyymmddhh24mi');
请高手指点..
begin
dbms_job.submit(:job1,'MYPROC;',sysdate,'sysdate+1/1440'); --每天1440分钟,即一分钟运行test过程一次
end;procedure:create or replace procedure proc_sms_1 as
begin
insert into SMSC_MSGDOWNINTER(MSGID,MOBILEPHONE,MSGCONTENT,SENDTIME,USERID,ORGID,APPCODE)
select SEQ_SMSC_MSGUPINTER.nextval,S3.MOBILEPHONE,cast(S2.CONTENT as varchar(1000)),S2.SENDPOINT,S1.USERID,S1.ORGID,'qq'
from SMS_MSGBACHSENDTYPE S1,SMS_MSGBATCHSENDLOGMAIN S2,SMS_MSGBATCHSENDLOGDETAIL S3
where 1=1
and S1.BATCHSENDID = S2.BATCHSENDID
and S2.SUBSCRIBEID = S3.SUBSCRIBEID
and to_char(sysdate,'yyyymmddhh24mi') = to_char(S2.Sendpoint,'yyyymmddhh24mi');
commit;
end;问题:当系统时间等于字段'S2.Sendpoint'里的时间时执行插入,(to_char(sysdate,'yyyymmddhh24mi') = to_char(S2.Sendpoint,'yyyymmddhh24mi');)
可是不知为什么在系统时间还没到'S2.Sendpoint'的时间就插入了一条记录,然后再等到系统时间等于'S2.Sendpoint'里的时间时又插入了一条记录,为什么插入
了两条记录,为什么系统时间还没到'S2.Sendpoint'字段里的时间就会自动插入一条记录呢..
是不是这个语句写的有问题:to_char(sysdate,'yyyymmddhh24mi') = to_char(S2.Sendpoint,'yyyymmddhh24mi');
请高手指点..
解决方案 »
- Procedure 能直接使用傳入的 ('ID1','ID2','ID3','ID4')作為一個整的字符進行 IN 的查詢么?
- 关于oracle游标循环查询视图中数据再插入的问题
- 使用group by查询
- 有个算法问题,麻烦大侠们帮忙处理一下
- 关于oracle英文字符集乱码的问题,查询显示乱码的问题。
- 请问这段备份数据表的PL/SQL代码该如何写?谢谢!
- 能不能直接调用某个变量
- 简单的问题。
- 如何用rowid更新某一序号字段
- 请问各位高手:SQL语句命中率是怎么回事?在oracle v$的那个视图可以查到相关性能指标以及如何计算?
- oracle 9 与oracle 10不同用户下共存问题
- 求一条SQL语句!在线等!谢谢!
from SMS_MSGBACHSENDTYPE S1,SMS_MSGBATCHSENDLOGMAIN S2,SMS_MSGBATCHSENDLOGDETAIL S3
where 1=1
and S1.BATCHSENDID = S2.BATCHSENDID
and S2.SUBSCRIBEID = S3.SUBSCRIBEID
and to_char(sysdate,'yyyymmddhh24mi') = to_char(S2.Sendpoint,'yyyymmddhh24mi'); 你单独执行这条语句看看,是不是出现两条语句
它就执行一条语句了.如果输入当天时间如:2009-03-04 12;12:34,它就会执行两次,其中第一次执行是满足'and S1.BATCHSENDID = S2.BATCHSENDID
and S2.SUBSCRIBEID = S3.SUBSCRIBEID'条件就执行了,第二次执行才是满足所有条件才执行的..
to_char(sysdate,'yyyymmddhh24mi') = '20090304122536';时,它就执行一次了,没改之前是执行两次的..
为什么?请高手指点..
不可能相等,'yyyymmddhh24mi'只包含了四位年两位月两位日两位小时两位分钟,没有包括秒