在ADOCONNECTION + oracle中,怎么样利用ADOCONNECTION的GETTABLENAMES方法,得到当前ORACLE用户的表名列表呢?
我如果直接ADOCONNECTION1.GETTABLENAMES(..),在SQL SERVER中得到的就只有当前用户的表名;但在ORACLE中,得到的结果却是ORACLE上所有用户的表名列表。
我知道ORALCE系统表里有相关记录,但我想利用GETTABLENAMES实现。
该怎么处理呢?在线等高手指教。

解决方案 »

  1.   

    为什么一定要GETTABLENAMES呢?用SQL取得不行吗?
      Select table_name From user_tables
      Select table_name From user_all_tables
      

  2.   

    其实,你可以升级oracle用户的权限,就能够看到了!
    你在oracle中看到的也是你当前用户登录的表名!
      

  3.   

    楼上的,可能你没看明白主题,我的目的就是只要当前登陆用户的表名,不要其他不相关的。有办法吗? fjx99,因为程序涉及异库查询,连接是动态建立的。同一个ADOCONNECTION在不同时刻可能连接到不同类型的数据库(oracle,sql server,...),不同的数据库系统表结构不一样,所以不好用SQL来实现。只有GETTABLENAMES方法是和数据库结构无关的。有没有别的办法?
      

  4.   

    你用的是什么用户名进入Oracle的?如果是SYSTEM这样的用户,它下面的表名肯定会有很多的,怎么说也是个SYSTEM帐户。你用其他的用户建表试试,会有什么效果。最好是权限低一点的。
      

  5.   

    回楼上的,我不是用的SYSTEM用户,是自己另外建的具有DBA权限的用户。限于应用,降低权限就算能实现,也是不能采纳的。
      

  6.   

    回楼上的,我的程序是拿到客户那里去用,数据库是建好了的。表多主要不是因为系统数据表的存在,主要是因为有很多别的ORACLE用户的表存在,因为库里还有别的应用系统数据。