【发布时间】:2021-11-11 08:23:42
【问题描述】:
我正在为 Oracle DB 10g/11g 编写程序,我需要为变量分配特定的日期值。代码如下。
DECLARE
date_from DATE := NULL;
DECLARE
d_count NUMBER := 0;
BEGIN
SELECT COUNT(*) INTO d_count FROM TABLE_X;
IF d_count = 0 THEN
SELECT MIN(TRX_DATE) INTO date_from FROM TABLE_Y;
ELSE
SELECT MAX(TRX_DATE) INTO date_from FROM TABLE_X;
END IF;
END;
当我运行它时,我得到了这个错误。
Error starting at line : 1 in command -
DECLARE
date_from DATE := NULL;
DECLARE
d_count NUMBER := 0;
BEGIN
SELECT COUNT(*) INTO d_count FROM TABLE_X;
IF d_count = 0 THEN
SELECT MIN(TRX_DATE) INTO date_from FROM TABLE_Y;
ELSE
SELECT MAX(TRX_DATE) INTO date_from FROM TABLE_X;
END IF;
END;
Error report -
ORA-06550: line 3, column 1:
PLS-00103: Encountered the symbol "DECLARE" when expecting one of the following:
begin function pragma procedure subtype type <and identifier>
<a double-quoted delimited-identifier> current cursor delete
exist prior
The symbol "begin" was substituted for "DECLARE" to continue.
ORA-06550: line 13, column 4:
PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:
( begin case declare and exception exit for goto if loop mod
null pragma raise return select update while with
<an identifier><a double-quoted
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usuallz a PL/SQL compilation error.
*Action:
我有 T-SQL 经验,但对 OracleDB 中的 PL/SQL 非常陌生。 提前致谢。
【问题讨论】:
-
您在
line 3, column 1能看到什么?正确,另一个不应该存在的declare关键字。请检查the documentation 的语法,不需要任何问题。 -
谢谢您,我应该更加小心,感谢您分享文档。我刚开始在任务中使用 Oracle DB,通常我喜欢在开始新事物之前阅读文档。
标签: sql oracle plsql oracle11g oracle10g