
CREATE OR REPLACE
PROCEDURE dgh
(
starttime IN DATE,
endtime IN DATE,
rst OUT NUMBER)
AS
wholeDays_TO_seconds NUMBER;
firstDay_To_Seconds NUMBER;
lastDay_To_Seconds NUMBER;
BEGIN
SELECT CAST(endtime - starttime AS NUMBER(10,0))6060(18-85)
INTO wholeDays_TO_seconds
FROM dual;
IF starttime > TRUNC(starttime)+NUMTODSINTERVAL(18,'hour') THEN
firstDay_To_Seconds:=0;
ELSE
SELECT (TRUNC(starttime)+NUMTODSINTERVAL(18,'hour')-starttime)606024
INTO firstDay_To_Seconds
FROM dual;
END IF;
IF endtime < TRUNC(endtime)+NUMTODSINTERVAL(8,'hour')+NUMTODSINTERVAL(30,'minute') THEN
lastDay_To_Seconds:=0;
ELSE
SELECT (endtime-(TRUNC(endtime)+NUMTODSINTERVAL(18,'hour')))606024
INTO lastDay_To_Seconds
FROM dual;
END IF;
SELECT wholeDays_TO_seconds+firstDay_To_Seconds+lastDay_To_Seconds
INTO rst
FROM dual;
END;set serveroutput on
declare
rst number;
begin
rst:=0;
dgh(to_date('2014-06-18 12:43:09','yyyy-mm-dd hh24:mi:ss'),to_date('2014-06-19 12:43:09','yyyy-mm-dd hh24:mi:ss'),rst);
dbms_outputput_line('--------------'||rst);
end;
你的procedure写错了
create or replace procedure abc(v1 in number,v2 in number,res out number)
as
begin
res := v1v2;
end;
/
在sqlplus里调用
set serveroutput on
var res number;
begin
abc(3, 5, :res);
end;
/
输出:
print res;
问题补充:如何在oracle 10g 使用PL/SQL developer获取系统当前年月日和时间??谢谢!
SELECT SYSDATE FROM DUAL;
目测, 你的存储过程, 需要在 下面这些时刻运行:
1:00
3:00
5:00
7:00
16:00
18:00
20:00
22:00
CREATE OR REPLACE PROCEDURE other_proc
AS
vHour VARCHAR(2);
BEGIN
vHour := TO_CHAR(SYSDATE, 'HH24');
IF vHour = '01' OR vHour = '03' OR vHour = '05' OR vHour = '07'
OR vHour = '16' OR vHour = '18' OR vHour = '20' OR vHour = '22' THEN
-- 调用你那个存储过程
-- 由于没有代码, 暂时写 NULL;
NULL;
END IF;
END;
/
variable jobno number;
begin
dbms_jobsubmit(:jobno, 'other_proc;', trunc(sysdate+1/24,'HH'), 'trunc(SYSDATE+1/24,''HH'')');
commit;
end;
/
以上就是关于利用oracle存储过程计算时长并剔除18:00-8:30之间的非工作时间全部的内容,包括:利用oracle存储过程计算时长并剔除18:00-8:30之间的非工作时间、oracle 执行存储过程、oracle定时执行存储过程的时间区间问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)