在plsql中
使用"select sequencename.nextval from dual"没有结果
使用"select sequencename.nextval from sys.dual"就能够获取
这个库是使用 exp 'sys/sys@orcl as sysdba' owner=xxx file=xxx.dmp 方式导出来的,自己感觉可能和这个有关系,但是不知道怎么解决,求大家帮助~~~~~~~~~~~~~~~~另外我要使用kettle来做ETL转换,它里面的获取序列功能界面没法直接将sql语句改成从sys.dual查询~~~~谢谢

解决方案 »

  1.   

    dual和sys.dual没看出有什么区别
    前者之所以没获取可能是你本会话的事务失败了,commit或者rollback,再试试
      

  2.   

    exp 'sys/sys@orcl as sysdba' owner=xxx file=xxx.dmp 干嘛导出sys用户?估计有问题,还没有见有人这样做过,要不导出整库不行就建立个同义词就可以了
      

  3.   

    确认一下,你执行下面sql的schema下是不是有自己的dual表,而且里面没有数据。select sequencename.nextval from dual
    如果有这个表删了它,因为dual本身是sys的表,建库的时候sys会把他赋权给public,同时建立一个公有同义词,你sys.dual肯定能访问到。如果不加 schema.  那么默认先访问本schema下的,没有再访问sys下的。