困惑为什么这行不通-Oracle日期声明

时间:2018-07-05 16:35:01

标签: oracle variables plsql

这导致Oracle 11g中的CTE:

declare 

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

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

这是我得到的错误:

  

ORA-06550:第10行第1列PLS-00103:遇到了符号“;”

我需要声明一个startdat,它需要=提供的日期。

2 个答案:

答案 0 :(得分:1)

您发布的摘录在begin之前没有with,而是多余的分号。

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

您可以将日期值设置为声明的一部分;不过,您不应将其设置为字符串,因为它依赖于隐式转换和NLS设置。我使用过a date literal,它必须完全显示为YYYY-MM-DD;但是to_date()也可以工作(但对于固定日期,字面量会更简单)。

答案 1 :(得分:0)

对于我所看到的代码,必须删除语句WITH

之前的分号。