得到错误[PLS-00382:表达式类型错误]

时间:2016-08-08 13:59:23

标签: plsql

我有一个存储过程让我疯了。我知道这很简单,但我想我无法理解它。

我收到错误

  

“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,但没有运气。

1 个答案:

答案 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;
相关问题