解析错误 SQL:*!* 附近出现意外标记
Error(s) parsing SQL: Unexpected token near *!*
Error(s) parsing SQL:
Unexpected token near *!* in the following:
SELECT RESOURCEID AS RESOURCEID, MAX(ROWKEY) ROWKEY, MIN(PRODUCTIONDATE) PRODUCTIONDATE, CAST(SUM(UNITS) AS *!*NUMERIC (9)) UNITS, MAX(BUCKETSTART) BUCKETSTART FROM(
Unexpected token near *!* in the following:
SELECT RESOURCEID AS RESOURCEID, MAX(ROWKEY) ROWKEY, MIN(PRODUCTIONDATE) PRODUCTIONDATE, CAST(SUM(UNITS) AS NUMERIC *!*(9)) UNITS, MAX(BUCKETSTART) BUCKETSTART FROM(
Expecting identifier near *!* in the following:
SELECT RESOURCEID AS RESOURCEID, MAX(ROWKEY) ROWKEY, MIN(PRODUCTIONDATE) PRODUCTIONDATE, CAST(SUM(UNITS) AS NUMERIC (*!*9)) UNITS, MAX(BUCKETSTART) BUCKETSTART FROM(
这是我在尝试创建视图时遇到的错误...但它作为 select 语句成功运行。
代码如下:
SELECT RESOURCEID, MAX(ROWKEY) ROWKEY, MIN(PRODUCTIONDATE) PRODUCTIONDATE, CAST(SUM(UNITS) AS NUMERIC(9)) UNITS, MAX(BUCKETSTART) BUCKETSTART FROM(
SELECT RESOURCEID, ROWKEY, PRODUCTIONDATE, UNITS, BUCKETSTART , SUM(BUCKETSTART)
OVER(PARTITION BY RESOURCEID ORDER BY RESOURCEID,PRODUCTIONDATE) BUCKET FROM(
SELECT RESOURCEID, MAX(PRODUCTIONDAY.ROWKEY) ROWKEY, PRODUCTIONDAY.PRODUCTIONDATE, CAST(SUM(PRODUCTIONDAY.UNITS) AS NUMERIC(9)) UNITS,
MAX(PRODUCTIONDAY.BUCKETSTART) BUCKETSTART FROM m1si_wsl.PRODUCTIONDAY GROUP BY PRODUCTIONDAY.PRODUCTIONDATE, RESOURCEID)
)GROUP BY BUCKET, RESOURCEID
我可以使用 SQL 开发人员 'new view' 对话框重现此内容:
当 运行 作为来自 SQL 工作表的脚本时这不是问题:
select CAST(SUM(1) AS NUMERIC (9)) units from dual;
UNITS
----------------------
1
create view v42 as
select CAST(SUM(1) AS NUMERIC (9)) units from dual;
view V42 created.
这似乎是对话框特有的解析器错误,它不处理 ANSI NUMERIC
类型;如果您改用 equivalent Oracle NUMBER
类型就没问题:
我在您使用的版本 3.0.04 以及 3.1.07 和 3.2.20 中遇到语法错误;但不是在 4.0.0 中,因此它似乎已在该主要版本中得到修复。作为进一步检查,在当前的早期采用者版本 4.1.0.17 中,您的原始声明是可以的:
因此您的选择似乎是使用普通的 Oracle 数据类型,或者如果您设置为使用 ANSI 类型,则从工作表创建视图或升级到 SQL Developer 的当前版本。
Error(s) parsing SQL:
Unexpected token near *!* in the following:
SELECT RESOURCEID AS RESOURCEID, MAX(ROWKEY) ROWKEY, MIN(PRODUCTIONDATE) PRODUCTIONDATE, CAST(SUM(UNITS) AS *!*NUMERIC (9)) UNITS, MAX(BUCKETSTART) BUCKETSTART FROM(
Unexpected token near *!* in the following:
SELECT RESOURCEID AS RESOURCEID, MAX(ROWKEY) ROWKEY, MIN(PRODUCTIONDATE) PRODUCTIONDATE, CAST(SUM(UNITS) AS NUMERIC *!*(9)) UNITS, MAX(BUCKETSTART) BUCKETSTART FROM(
Expecting identifier near *!* in the following:
SELECT RESOURCEID AS RESOURCEID, MAX(ROWKEY) ROWKEY, MIN(PRODUCTIONDATE) PRODUCTIONDATE, CAST(SUM(UNITS) AS NUMERIC (*!*9)) UNITS, MAX(BUCKETSTART) BUCKETSTART FROM(
这是我在尝试创建视图时遇到的错误...但它作为 select 语句成功运行。
代码如下:
SELECT RESOURCEID, MAX(ROWKEY) ROWKEY, MIN(PRODUCTIONDATE) PRODUCTIONDATE, CAST(SUM(UNITS) AS NUMERIC(9)) UNITS, MAX(BUCKETSTART) BUCKETSTART FROM(
SELECT RESOURCEID, ROWKEY, PRODUCTIONDATE, UNITS, BUCKETSTART , SUM(BUCKETSTART)
OVER(PARTITION BY RESOURCEID ORDER BY RESOURCEID,PRODUCTIONDATE) BUCKET FROM(
SELECT RESOURCEID, MAX(PRODUCTIONDAY.ROWKEY) ROWKEY, PRODUCTIONDAY.PRODUCTIONDATE, CAST(SUM(PRODUCTIONDAY.UNITS) AS NUMERIC(9)) UNITS,
MAX(PRODUCTIONDAY.BUCKETSTART) BUCKETSTART FROM m1si_wsl.PRODUCTIONDAY GROUP BY PRODUCTIONDAY.PRODUCTIONDATE, RESOURCEID)
)GROUP BY BUCKET, RESOURCEID
我可以使用 SQL 开发人员 'new view' 对话框重现此内容:
当 运行 作为来自 SQL 工作表的脚本时这不是问题:
select CAST(SUM(1) AS NUMERIC (9)) units from dual;
UNITS
----------------------
1
create view v42 as
select CAST(SUM(1) AS NUMERIC (9)) units from dual;
view V42 created.
这似乎是对话框特有的解析器错误,它不处理 ANSI NUMERIC
类型;如果您改用 equivalent Oracle NUMBER
类型就没问题:
我在您使用的版本 3.0.04 以及 3.1.07 和 3.2.20 中遇到语法错误;但不是在 4.0.0 中,因此它似乎已在该主要版本中得到修复。作为进一步检查,在当前的早期采用者版本 4.1.0.17 中,您的原始声明是可以的:
因此您的选择似乎是使用普通的 Oracle 数据类型,或者如果您设置为使用 ANSI 类型,则从工作表创建视图或升级到 SQL Developer 的当前版本。