关于为什么以下行抱怨DATEPART未被定义为标识符的任何想法?
IF DATEPART(v_ExpireTime, year) = 1899 THEN v_ExpireTime := NULL;
它返回:
Error(68,10): PLS-00201: identifier 'DATEPART' must be declared
IF to_number(to_char(v_ExpireTime, 'YY')) = 1899 THEN v_ExpireTime := NULL;
答案 0 :(得分:2)
正如您已经发现的那样,DATEPART
是SQL Server函数,而不是Oracle函数。您展示的替代方法to_number(to_char(v_ExpireTime, 'YY'))
会给您一个两位数的值,所以如果您的日期部分为1899
,那么它只会返回99
,所以您赢了得到一个匹配。您可以使用四位数年份日期格式模型YYYY
代替YY
。
另一种选择是使用extract function:
IF extract(year from v_ExpireTime) = 1899 THEN ...
答案 1 :(得分:1)
如果我是正确的,那是因为DatePart不是PLSQL库的一部分,所以它不知道你在做什么。第二种方法是PLSQL。