用 ADO 访问 oracle 数据库的问题(100分)

W

wintern

Unregistered / Unconfirmed
GUEST, unregistred user!

我用ado访问oracle数据库,需要得到数据库表的信息,比如我用一个用户user1登录
数据库,user1用户具有较强权限,可以读取user2,user3...的表
现在 adoxcatalog.Get_Tables 得到user1能访问到的表s,但是这些表中有些是user1的
,有些是user2的...怎么样得到对应表的对应user?
谢谢大家了。
 
这个没用过,我采取的办法是通过Public别名,将其它用户的表定义为
Public别名。还可以用user2.表名
 
我的意思是,我现在如果用user1登录进去,用adox能得到一堆表名,但是其中有些
是user1的,有些是user2的,我现在要做的就是把这些表分类,
另外如果user1和user2下有相同表名,会出现什么情况呢???

谢谢了
 
由于你user1权限大,所以它得到该用户下的所有的表,很正常,不过你可以在得到之后,用程序处理这个StringList,删除"."以前的不等于'user1'的item
如果user1、2有一个表明是一样的,你得到的是 user1.table 和 uer2。table,不影响
在使用的时候,当你没有指定用户,它会认为是该用户下的表,像上面这种情况,当你用user1登陆,在使用table时,oracle认为的是 user1.table,如果你需要使用user2的table,则指定用户user2.table
 
to 完颜康 :
问题是,我现在用权限较大的user1登录,得到的一堆表名,没有用户名的前缀啊,
也就是说,user1.table1,user2.table2 其实得到的就是 :
table1,table2,没办法来区分各自所属的user啊
我用的是delphi的adox:

adoxcatalog.Set_ActiveConnection(ado.ConnectionObject);//设置adoxcatalog
adoxtables := adoxcatalog.Get_Tables; //获取catalog对应的表
 
到系统视图all_tables(sys)中去查找,该视图中
OWNER NOT NULL VARCHAR2(30) //拥有表的用户
TABLE_NAME NOT NULL VARCHAR2(30) //表名称
 
to desertsmoke:
可能我还没有说明白,我并不是要得到oracle数据库服务器上所有表的分类(根据用户)
,我现在要做的是,根据不同的登录用户,可能会拥有不一样的权限,然后访问到的
数据库表的数目,表的名称也都会不一样,然后根据每个登录用户所能访问到的表,
将这些表根据所属用户(与登录用户不是一个概念)进行分类。
所以,查系统表是不是办法呢?另外,如果不是特权用户,能访问到你说的系统视图吗?
先谢谢了
 
可能你没明白ALL_TABLES视图的作用:包含Oracle用户所拥有的表和他可以访问的表的信息。
 
多人接受答案了。
 
顶部