У меня есть эта внешняя таблица:
CREATE TABLE PFun (
idF VARCHAR(255),
dt DATE
)
ORGANIZATION EXTERNAL
(
TYPE oracle_loader
DEFAULT DIRECTORY ext_dep
ACCESS PARAMETERS
(
RECORDS DELIMITED BY '\n'
BADFILE CHARACTER
DISCARDFILE CHARACTER
LOGFILE CHARACTER
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY "'"
MISSING FIELD VALUES ARE NULL
(
idF CHAR(255),
dt CHAR(255) date_format DATE mask 'YYYY/MM/DD'
)
)
LOCATION ('prfun.csv')
)
REJECT LIMIT UNLIMITED;
Я создал эту функцию, чтобы возвращать номер недели в году
/
CREATE OR REPLACE FUNCTION TestFunction(dtIn IN DATE)
RETURN NUMBER
IS res NUMBER;
BEGIN
SELECT CEIL((TO_DATE(dtIn, 'yyyy/mm/dd') - TO_DATE('2020/12/31', 'yyyy/mm/dd'))/7)
INTO res
FROM PFun
WHERE dtIn >= '2020-01-01';
RETURN res;
END;
/
SELECT idF, TestFunction(dt)
FROM PFun;
Если я запускаю только функция сообщает мне, что все было скомпилировано. Но , когда я запускаю SELECT, появляется следующая ошибка:
ORA-29913: Error executing ODCIEXTTABLEFETCH callout
ORA-01861: the value does not match the format string
ORA-06512: a "SYSTEM.TESTFUNCTION", line 5
29913.0000 - "error in executing% s callout"
* Cause: The execution of the specified callout caused an error.
* Action: Examine the error messages take appropriate action.
[Я ввожу такие даты: '2020/01/01', но sql -developer on контрольный запрос показывает мне их как это «01-ЯНВ-20». Не знаю, важна ли эта информация ]
Как это исправить?