Не понятно, почему это не сработает - объявление даты в Oracle - PullRequest
0 голосов
/ 05 июля 2018

Это приводит к cte в Oracle 11g:

declare 

STARTDATE DATE := '01/01/2017';

;with cte(Accounts) AS (....

Это ошибка, которую я получаю:

ORA-06550: строка 10, столбец 1 PLS-00103: обнаружен символ ";"

Мне нужно объявить startdat, и оно должно = указанная дата.

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Отправленный вами фрагмент не имеет begin перед with, а вместо этого имеет дополнительную точку с запятой.

declare 
  startdate DATE := DATE '2017-01-01';
begin
  with cte(Accounts) AS (....
  ... complete that statement ... ;
end;
/

Вы можете установить значение даты как часть декларации; Вы не должны устанавливать это как строку, поскольку это зависит от неявного преобразования и настроек NLS. Я использовал литерал даты , который должен быть точно в указанном формате, YYYY-MM-DD; но to_date() также будет работать (хотя на фиксированную дату литерал проще).

0 голосов
/ 05 июля 2018

Для того, что я вижу в коде, вы должны удалить точку с запятой перед оператором WITH

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