环境是 Oracle 9 & 10。我没有 DBA 级别的访问权限。
问题是验证特定列是否存在于特定表中,在另一个模式中。
有两种情况需要处理。
- 同一实例中的另一个架构
- 不同实例中的模式,使用 db_link
给定我的模式 FRED 和另一个模式 BARNEY,我尝试了这样的事情
SELECT 1
FROM BARNEY.USER_TAB_COLS
WHERE TABLE_NAME = 'SOME_TABLE'
AND COLUMN_NAME = 'SOME_SPECIFIC_COLUMN'
产生[1]:(错误):ORA-00942:表或视图不存在
在考虑了一段时间后,我意识到 USER_TAB_COLS 并不是真正的表。这是一个视图。我一直在从表格中选择,但不是从视图中选择。
我用我的 db_link 尝试了同样的事情,并且惊讶地看到数据回来了。db_link 中有一个嵌入的 schema_name/password,所以对我来说它工作似乎是合理的,因为它有效地登录到另一个模式,这应该使视图可以访问。
在谷歌搜索之后,我的眼球在 Oracle doc 的山上疲惫不堪,我正在寻找有人指出我正确的方向,或者至少指出我错过了什么。
有哪些技术可用于从同一实例中的模式获取与用户表相关的元数据,以验证特定列是否存在?
提前致谢。
邪恶的。
+1 以获得好的答案。谢谢你。