我正在使用从Oracle提取数据的旧Java应用程序。其中一个查询似乎不再有效:
select {hier.*} from ecadmin.dept_hier_cache hier
connect by prior parent_deptid = deptid
start with deptid = '1234';
当我从hier。*周围移除'{}'括号时,一切正常。现在,据我所知,该应用程序已经超过一年没有变化,所以这意味着改变Oracle是最可能的罪魁祸首。关于可能发生什么变化的任何想法?版本升级,设置已更改,还有其他什么?
答案 0 :(得分:4)
据我所知,从来没有用过。它从来都不是有效的语法,我无法理解为什么有人甚至会在代码中尝试大括号。
假设你有源代码控制,我会检查代码是否有没有括号的版本。如果是这样,我怀疑代码在源代码中发生了变化,但从未提升过。
可能在执行之前对字符串进行了过滤/清理。
你能说出它何时停止工作以及那个日期周围发生了什么?
答案 1 :(得分:0)
我唯一看到的关于Oracle和JDBC的大括号语法的内容是Embedded SQL92 Syntax。就像加里说的那样,我不会指望该查询能够随时执行。
但是,潜在的Oracle驱动程序或Oracle版本可能已更改?是否更改了该表dept_hier_cache
中的列,以便.*
现在返回与以前完全不同的内容?
dept_hier_cache
是一个观点吗?如果是,那么用户对该视图的视图或权限是否已更改?