什么会导致此查询停止工作?

时间:2010-01-27 20:28:48

标签: sql oracle jdbc

我正在使用从Oracle提取数据的旧Java应用程序。其中一个查询似乎不再有效:

select {hier.*} from ecadmin.dept_hier_cache hier
connect by prior parent_deptid = deptid
start with deptid = '1234';

当我从hier。*周围移除'{}'括号时,一切正常。现在,据我所知,该应用程序已经超过一年没有变化,所以这意味着改变Oracle是最可能的罪魁祸首。关于可能发生什么变化的任何想法?版本升级,设置已更改,还有其他什么?

2 个答案:

答案 0 :(得分:4)

据我所知,从来没有用过。它从来都不是有效的语法,我无法理解为什么有人甚至会在代码中尝试大括号。

假设你有源代码控制,我会检查代码是否有没有括号的版本。如果是这样,我怀疑代码在源代码中发生了变化,但从未提升过。

可能在执行之前对字符串进行了过滤/清理。

你能说出它何时停止工作以及那个日期周围发生了什么?

答案 1 :(得分:0)

我唯一看到的关于Oracle和JDBC的大括号语法的内容是Embedded SQL92 Syntax。就像加里说的那样,我不会指望该查询能够随时执行。

但是,潜在的Oracle驱动程序或Oracle版本可能已更改?是否更改了该表dept_hier_cache中的列,以便.*现在返回与以前完全不同的内容?

dept_hier_cache是一个观点吗?如果是,那么用户对该视图的视图或权限是否已更改?