这导致了Oracle 11g中的cte:
declare
STARTDATE DATE := '01/01/2017';
;with cte(Accounts) AS (....
这是我得到的错误:
ORA-06550:第 10 行第 1 列 PLS-00103:遇到符号";">
我需要声明一个startdat,它需要=提供的日期。
您发布的代码段在 thawith
之前没有begin
,而是有一个额外的分号。
declare
startdate DATE := DATE '2017-01-01';
begin
with cte(Accounts) AS (....
... complete that statement ... ;
end;
/
您可以将日期值设置为声明的一部分;但是不应将其设置为字符串,因为这依赖于隐式转换和 NLS 设置。我使用了日期文字,它必须完全采用显示的格式,YYYY-MM-DD;但to_date()
也可以工作(对于固定日期,文字更简单(。
对于我看到的代码,您必须删除语句 WITH 之前的分号