在我的程序中,我需要访问Oracle 11G数据库的架构。我一直在尝试使用这样的查询来获取表格列表:

SELECT t.TABLE_NAME, t.OWNER
FROM ALL_TABLES t
WHERE t.DROPPED = 'NO'
ORDER BY t.TABLE_NAME

查询有效,我会拿回一个表格列表。不幸的是,当使用返回的表名称查询某些表格时,我会收到以下错误:

ORA-00942:不存在表或视图

什么可能导致此错误?可以归功于特权吗?

在一个单独的问题中,我对是否有可能有两个或具有相同名称的表以及如何区分两者感到有些困惑。我需要提防吗?

我在.NET中使用oracle.dataaccess提供商来连接到数据库。它是一台远程服务器,不幸的是,我对它的访问非常有限。

有帮助吗?

解决方案

这可能取决于特权。但这可能取决于桌子的不同模式,并且没有它的代名词。如果您与所有者合格表名,它是否有效? IE从[所有者]中选择。[table_name]代替?

其他提示

仅仅因为您可以访问all_tables视图并不意味着您可以实际选择通过此视图检索的表。您需要在表上选择适当的赠款才能选择它们。

2表只能具有相同的名称,只要它们属于另一个模式(实际上范围比表更宽,架构不能具有两个具有相同名称的对象(表,视图...))

是的,这是一个安全功能 - 如果您没有从表中选择的权限,则Oracle通常不会承认它存在(普通用户将无法从All_中看到SELECT _ ALL_的事物由DBA)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top