Как получить сумму валюты в словах, используя оракул sql - PullRequest
0 голосов
/ 18 апреля 2019

В приведенном ниже коде я пытаюсь получить сумму в словах для значения в столбце AMOUNT, но, похоже, не могу сделать это правильно. Кто-нибудь с идеей? Ниже оператора CREATE VIEW:

SELECT GLR3 AS RECEIPT_DOC_NO,
   GLANI AS ACCOUNT_NUMBER,
   GLSBL AS JDE_NO,
   (SELECT YAALPH FROM PRODDTA.F060116 WHERE YAAN8 = T1.GLSBL) AS STAFF_NAME,
   CASE GLDGJ WHEN 0 THEN TO_DATE (TO_CHAR (1 + 1900000), 'YYYYDDD')         
      ELSE TO_DATE (TO_CHAR (GLDGJ + 1900000), 'YYYYDDD') END AS GL_DATE,
   GLEXA AS NARRATIVE,
   GLLT AS LEDGER_TYPE,
   GLSBLT AS SUBLEDGER_TYPE,
   GLCRCD AS CURRENCY_CODE,
   CASE GLAA WHEN 100 THEN ROUND (GLAA / 100, 2) ELSE ROUND (GLAA / 100, 2)
       END AS AMOUNT,
   (SELECT TO_CHAR(TO_DATE(T1.GLAA,'J'),'JSP')) FROM DUAL) AS AMOUNT_INWORDS         
FROM PRODDTA.F0911 T1;

Мой код не работает с

ORA-00923: ключевое слово FROM не найдено там, где ожидается.

1 Ответ

0 голосов
/ 18 апреля 2019

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() функция, чтобы дать вам абсолютное значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...