【发布时间】:2019-12-04 21:19:49
【问题描述】:
我正在尝试使用 YEAR(GETDATE()) 获取当前年份:
DECLARE
currentYear PLS_INTEGER := YEAR(GETDATE());
BEGIN
WHILE startYear <= currentYear LOOP
someOperation.......
.....
....
LOOP END;
END;
当我执行这个时,我得到以下脚本 O/P
ORA-06550:第 15 行,第 28 列:
PLS-00201:必须声明标识符“YEAR”
ORA-06550:第 15 行,第 13 列:
PL/SQL:项目被忽略
ORA-06550:第 21 行,第 21 列:
PLS-00320:此表达式类型的声明不完整或格式错误
ORA-06550:第 21 行,第 2 列:
PL/SQL:语句被忽略
06550. 00000 - “第 %s 行,第 %s 列:\n%s”
原因:通常是 PL/SQL 编译错误。
我看看我使用SELECT YEAR(GETDATE) 是否会返回当前年份。
任何建议我如何获得当前年份?
【问题讨论】:
-
我没有看到
startYear定义,YEAR()不是有效的 Oracle SQL 函数,也不是有效的 PL/SQL 函数。与GETDATE相同。见docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/… 和docs.oracle.com/en/database/oracle/oracle-database/19/lnpls/… -
错误信息 "identifier 'YEAR' must be declared" 看起来很清楚。声明名为“YEAR”和“GETDATE”的函数。
-
不要声明
YEAR和GETDATE函数;使用适当的 Oracle 函数,而不是尝试为另一个 RDBMS 使用函数。正如linked duplicate 所述,请使用EXTRACT(YEAR FROM SYSDATE)(db<>fiddle)。
标签: sql oracle stored-procedures plsql