Oracle 此函数用于计算两个日期之间的假期数,有什么问题?
我不熟悉创建Oracle函数。这个函数有什么问题Oracle 此函数用于计算两个日期之间的假期数,有什么问题?,oracle,function,date,oracle-sqldeveloper,sql-function,Oracle,Function,Date,Oracle Sqldeveloper,Sql Function,我不熟悉创建Oracle函数。这个函数有什么问题 create or replace FUNCTION count_holidays( t_date DATE, p_date DATE) RETURN NUMBER IS return_dt NUMBER; BEGIN SELECT COUNT(DISTINCT dated) FROM holiday_new WHERE TRUNC(dated) IN (
create or replace
FUNCTION count_holidays(
t_date DATE,
p_date DATE)
RETURN NUMBER
IS
return_dt NUMBER;
BEGIN
SELECT COUNT(DISTINCT dated)
FROM holiday_new
WHERE TRUNC(dated) IN
(SELECT TRUNC(t_date) + level - 1
from dual
CONNECT BY level <= TRUNC(p_date)-TRUNC(t_date) + 1
)
INTO return_dt
FROM dual;
RETURN return_dt;
END;
错误:
错误9,5:PL/SQL:SQL语句被忽略
错误16,5:PL/SQL:ORA-00933:SQL命令未正确结束此查询错误:
SELECT COUNT(DISTINCT dated)
FROM holiday_new
WHERE TRUNC(dated) IN
( SELECT TRUNC(t_date) + level - 1
from dual
CONNECT BY level <= TRUNC(p_date)-TRUNC(t_date) + 1
)
INTO return_dt
FROM dual;
我猜这个查询应该是这样的:
SELECT COUNT(DISTINCT dated) INTO return_dt
FROM holiday_new
WHERE TRUNC(dated) IN
( SELECT TRUNC(t_date) + level - 1
from dual
CONNECT BY level <= TRUNC(p_date)-TRUNC(t_date) + 1
);
这是一种非常低效的方法来选择带有某些日期的记录,我将使用以下查询:
SELECT COUNT(DISTINCT dated) INTO return_dt
FROM holiday_new
WHERE dated >= trunc(t_date) AND dated < trunc(p_date + 1);
此查询错误:
SELECT COUNT(DISTINCT dated)
FROM holiday_new
WHERE TRUNC(dated) IN
( SELECT TRUNC(t_date) + level - 1
from dual
CONNECT BY level <= TRUNC(p_date)-TRUNC(t_date) + 1
)
INTO return_dt
FROM dual;
我猜这个查询应该是这样的:
SELECT COUNT(DISTINCT dated) INTO return_dt
FROM holiday_new
WHERE TRUNC(dated) IN
( SELECT TRUNC(t_date) + level - 1
from dual
CONNECT BY level <= TRUNC(p_date)-TRUNC(t_date) + 1
);
这是一种非常低效的方法来选择带有某些日期的记录,我将使用以下查询:
SELECT COUNT(DISTINCT dated) INTO return_dt
FROM holiday_new
WHERE dated >= trunc(t_date) AND dated < trunc(p_date + 1);