我觉得程序二不对吧,可以运行吗?table1是属于用户A的,还应该是a.table1

解决方案 »

  1.   

    用同义词方法SQL>CREATE SYNONYM user1.DEPT FOR SCOTT.DEPT;
    SQL>connect user1/pass1;
    SQL>select * from dept;   <- 引用 scott.dept 表
      

  2.   

    楼上如果user1没有访问soctt用户表的权限的话,还是不行吧。
      

  3.   

    可以用牧师的方法,但要给B授权访问A,这样程序里可以用同样的sql clause
      

  4.   


    chanet(牧师) ,你太伟大了。我对你的景仰之情,犹如滔滔江水,连绵不绝;又犹如黄河泛滥,一发而不可收拾。
      

  5.   

    1. no
    2. yes
    3. can't
      

  6.   

    chanet(牧师) :又有新问题。我照您的做了,建立同义词。在 SQL * Plus 里试验成功。但是在vb写的程序里就不行。 能找到表,但是查不到记录。怎么八?
      

  7.   

    用 SQL *Plus 以下子就可以了。在 vb中,第一次不行, 第二次运行就可以了, 以后一直可以。没有改任何代码。
      

  8.   

    呵呵~   响应慢吧~   我曾经试过 vfp + odbc + oracle ~  和你的情况一样~ :)
      

  9.   

    chanet(牧师) :你在哪里发财? 请你吃麦当老。
      

  10.   

    谢谢你的好意~  我在广州~btw: 吃国产的好吧~ 嘻嘻... :)
      

  11.   

    <能不能更进一步?>可以<我的表很多,每个表都要建一次同义词?>没有必要<能不能对用户,而不是具体的表,建立同义词?>
    不行更简单的办法:用户B登录,先执行:alter session set current_schema=aselect * from table1 就是 select * from a.table1 
      

  12.   

    每次看到 drabit(square) 兄的方法,总想说一个字:妙!
      

  13.   

    alter session set current_schema=a要什么权限的用户才可以用?只有dba?
      

  14.   

    chanet(牧师) 说的好像不完全对啊,应该是public synonym才对!!
      

  15.   

    public synonym才是解决之道!