Отправленный вами фрагмент не имеет begin
перед with
, а вместо этого имеет дополнительную точку с запятой.
declare
startdate DATE := DATE '2017-01-01';
begin
with cte(Accounts) AS (....
... complete that statement ... ;
end;
/
Вы можете установить значение даты как часть декларации; Вы не должны устанавливать это как строку, поскольку это зависит от неявного преобразования и настроек NLS. Я использовал литерал даты , который должен быть точно в указанном формате, YYYY-MM-DD; но to_date()
также будет работать (хотя на фиксированную дату литерал проще).