我有一个存储过程让我疯了。我知道这很简单,但我想我无法理解它。
我收到错误
“PLS-00382:表达式类型错误”
在下面一行:
-- Write the result into Log
v_LogText := 'Summary Elapsed Time: ' || TO_CHAR(floor((cast(SYSTIMESTAMP as date) - Cast(v_StartTime as date)) * 86400)) || 'sec Batchsize ' || TO_CHAR (v_BatchSize);
Std.Log (v_WorkerName,'001','CAS', '0', 'en', ' 00000000', v_LogText );
声明:
v_LogText NVARCHAR2(2000);
v_BatchSize NUMBER(10,0) := iv_BatchSize; [ and iv_BatchSize is passed in the procedure as a paramenet like "iv_BatchSize IN NUMBER DEFAULT NULL"]
v_StartTime DATE := SYSDATE;
我已经尝试将SYSTIMESTAMP更改为SYSDATE,但没有运气。
答案 0 :(得分:0)
假设提供的信息量,请检查以下方式。希望这对你有用。
declare
v_LogText NVARCHAR2(2000);
v_BatchSize NUMBER(10,0) := 76363;
v_StartTime DATE := SYSDATE;
a varchar2(100);
begin
select TO_CHAR(floor((cast(SYSTIMESTAMP as date) - Cast(v_StartTime -1 as date)) * 86400))
into a
from dual;
v_LogText := 'Summary Elapsed Time: ' || a || 'sec Batchsize ' || TO_CHAR (v_BatchSize);
dbms_output.put_line(v_LogText);
end;