Oracle - PLS-00382:减去日期时表达式的类型错误
Oracle - PLS-00382: expression is of wrong type in subtracting dates
我在 Oracle 中编译以下函数时遇到问题
CREATE OR REPLACE FUNCTION fn1
return binary_double
as
Fecha DATE;
Dias binary_double;
begin
dbms_output.put_line(CAST(TRUNC(CURRENT_DATE,'DD') AS DATE) - cast(current_timestamp as date));
return Dias;
end;
它导致错误
Error(8,27): PLS-00382: expression is of wrong type
但是运行函数体之外的相同表达式
select CAST(TRUNC(CURRENT_DATE,'DD') AS DATE) - cast(current_timestamp as date) from dual
给出预期结果 - 两个日期之间的天数
-0.0607060185185185185185185185185185185185
对于该函数可能存在的问题有什么想法吗?
使用:
begin
dbms_output.put_line(TRUNC(CURRENT_DATE,'DD') - cast( current_timestamp as date));
end;
/
Current_date returns 数据类型为 DATE
的值
截断也 returns DATE.
所以您正在尝试将 DATE 类型转换为 DATE 类型。
似乎 PL/SQL 将类型转换为相同类型时出现问题。
CURRENT_DATE
returns DATE
数据类型,因此您将其转换为相同的类型。它在 SQL 中有效,但在 PL/SQL 中无效。只需删除铸件:
CREATE OR REPLACE FUNCTION fn1
return binary_double
as
Fecha DATE;
Dias binary_double;
begin
dbms_output.put_line(TRUNC(CURRENT_DATE,'DD') - cast(current_timestamp as date));
return Dias;
end;
我在 Oracle 中编译以下函数时遇到问题
CREATE OR REPLACE FUNCTION fn1
return binary_double
as
Fecha DATE;
Dias binary_double;
begin
dbms_output.put_line(CAST(TRUNC(CURRENT_DATE,'DD') AS DATE) - cast(current_timestamp as date));
return Dias;
end;
它导致错误
Error(8,27): PLS-00382: expression is of wrong type
但是运行函数体之外的相同表达式
select CAST(TRUNC(CURRENT_DATE,'DD') AS DATE) - cast(current_timestamp as date) from dual
给出预期结果 - 两个日期之间的天数
-0.0607060185185185185185185185185185185185
对于该函数可能存在的问题有什么想法吗?
使用:
begin
dbms_output.put_line(TRUNC(CURRENT_DATE,'DD') - cast( current_timestamp as date));
end;
/
Current_date returns 数据类型为 DATE
的值
截断也 returns DATE.
所以您正在尝试将 DATE 类型转换为 DATE 类型。
似乎 PL/SQL 将类型转换为相同类型时出现问题。
CURRENT_DATE
returns DATE
数据类型,因此您将其转换为相同的类型。它在 SQL 中有效,但在 PL/SQL 中无效。只需删除铸件:
CREATE OR REPLACE FUNCTION fn1
return binary_double
as
Fecha DATE;
Dias binary_double;
begin
dbms_output.put_line(TRUNC(CURRENT_DATE,'DD') - cast(current_timestamp as date));
return Dias;
end;