以下の関数で数値または値のエラーが発生しています
次の行で
acutalStartTime:=TO_CHAR (startTime, 'yyyy-mm-dd ');
誰かが何が間違っているのか教えてもらえますか?また、これをより良い方法で書くことができるかどうか教えてもらえますか?
create or replace function dateDiff
( changeInStartTime out varchar2,acutalStartTime out varchar2 )
RETURN timestamp
IS
startTime timestamp;
v_start timestamp;
diffdays number;
findiff BOOLEAN;
diff number;
cursor c1 is
SELECT sometime from sometable;
BEGIN
changeInStartTime:='false';
v_start := TRUNC (SYSTIMESTAMP) + NUMTODSINTERVAL (1, 'second');
open c1;
fetch c1 into startTime;
Dbms_Output.Put_Line('value of query ' ||startTime);
if c1%notfound then
startTime := TO_TIMESTAMP('2012-01-01 00:00:00.001','yyyy-mm-dd hh24:mi:ss .ff3');
findiff:=false;
else findiff:=true;
end if;
--Dbms_Output.Put_Line('should we find diff' || findiff);
if findiff then
Dbms_Output.Put_Line('v_start ' || v_start);
Dbms_Output.Put_Line('startTime ' || startTime);
diff :=trunc(v_start) - trunc(startTime) ;
--diffdays:=extract(day from diff);
Dbms_Output.Put_Line('diff ' || diff);
Dbms_Output.Put_Line('diffdays ' || diffdays);
if diff > 1 then
changeInStartTime:='true';
startTime:=TRUNC (SYSTIMESTAMP-diff ) + NUMTODSINTERVAL (1, 'second');
else startTime:=v_start;
end if;
close c1;
end if;
acutalStartTime:=TO_CHAR (startTime, 'yyyy-mm-dd ');
RETURN startTime;
EXCEPTION
WHEN OTHERS THEN
raise_application_error(-20001,'An error was encountered - '||SQLCODE||' -ERROR- '||SQLERRM);
END;