【发布时间】:2016-03-15 10:24:16
【问题描述】:
我有一张桌子SC.LT_TABLE。
由于一些糟糕的编码,我的程序执行了这个错误的请求
SELECT * FROM SC.LT_TABLESC.LT_TABLE
当然它不起作用。目标是使此查询有效。
我尝试创建一个类似的同义词
CREATE PUBLIC SYNONYM "SC.LT_TABLESC.LT_TABLE" FROM SC.LT_TABLE
并且查询有效,但前提是我使用双引号,我的代码没有使用它。
所以问题是 - 我可以以某种方式将双引号包含在同义词中吗?还是有其他方法可以使该查询起作用?
我知道整个问题很荒谬,但我现在无法更新代码 :-)
甲骨文 11g。
谢谢。
【问题讨论】:
-
如果你接受我的建议,你基本上是在已经存在的便便上倾倒更多便便。为什么不首先清理原来的便便?
-
我已经清理了原始的便便,但不幸的是,我现在无法将受便便污染的代码与无便便的代码交换。所以我只是想多加一点便便来解决可能由原始便便引起的便便雪崩。
-
您几乎不得不修复代码。另外,如果我是你,我会确保你的测试实践得到改进,这样以后就可以避免这种事情了。
-
@JiriTousek - 仅当它是大写字母并且仅包含允许的字符时。在这种情况下,同义词(不是表)是带引号的标识符,并且必须始终用双引号引用。问题在于同义词中的句号,而不是其余部分的情况。
-
@JiriTousek 这里的问题不是这种情况,而是表名本身具有使用quoted-identifier创建的句点。
标签: sql oracle oracle11g synonym