ORA-00923: ключевое слово FROM не найдено там, где ожидается.
Указывает на синтаксическую ошибку.В этом случае у вас есть три (
и четыре )
:
(SELECT TO_CHAR(TO_DATE(T1.GLAA,'J'),'JSP')) FROM DUAL) AS AMOUNT_INWORDS
Компилятор не ожидает второго )
после 'JSP'
.
Скалярный курсор не нужен, поэтому упрощенная и исправленная версия будет выглядеть так:
TO_CHAR(TO_DATE(T1.GLAA,'J'),'JSP') AS AMOUNT_INWORDS
ORA-01854: юлианская дата должна быть в диапазоне от 1 до 5373484
5373484
- это юлианская дата для 31-DEC-9999, которая является максимально допустимой датой в Oracle.Это накладывает абсолютное ограничение на число, которое мы можем записать, используя JSP
mask ... за один раз.Тем не менее, мы можем использовать PL / SQL, чтобы разбить большие числа на куски и записать их по буквам.Неоценимый Том Кайт написал такую функцию и опубликовал ее на сайте AskTom. Найдите это здесь .
Я думаю, что значение, которое я пытаюсь записать словами, имеет десятичные значения (400,00), следовательно, ошибка ORA-01854.
Том Кайт, на которого я ссылался, решает эту проблему дальше вниз по странице. Вот этот комментарий .
Перед данными, извлеченными в столбце суммы, должен стоять отрицательный символ, если его не должно быть,
Если вы просто хотите игнорировать отрицательные значения, применитеABS()
функция, чтобы дать вам абсолютное значение.