SQL文:   .................
           row_number() over(order by USER_ID, rowid) rn,
       ........................      USER_ID, rowid是表中字段,上记SQL文在PL/SQL中可以正常执行,但是在UNIX系统下通过PORC编译的时候会报错(PORC是在UNIX下通过gcc和oracle支持的编译文件实现编译执行)。错误信息提示,在“over(order by USER_ID, rowid)”出现错误,我想是不是再PORC编译中不支持这种写法,把“over(order by USER_ID, rowid)”当作row_number()的别名了,所以出错,也有可能是需要特定的写法吧,请知道的各位高手多多指教

解决方案 »

  1.   

    如果是proc不支持的话,第一步precompile就出错了。
    唉,也不给个出错信息。
      

  2.   

    可是我把over(order by USER_ID, rowid)删掉的话,就能通过编译,所以我推断问题出在over的使用上
      

  3.   

    楼主的字段rowid跟oracle的关键词rowid重名了。
      

  4.   

    最好不要用关键字作为表名和字段名
    把rowid加上单引号试一试
       row_number() over(order by USER_ID, 'rowid') rn, 
      

  5.   

    工作的电脑上不了网,要是能贴上早就贴了,由于出错信息是日文的,我就把信息意思描述下吧! 
    错误信息代号: 
    pcc-s-00201: "over(" 中发现了"(",在下面输入中出错
      

  6.   

    应该是proc不支持这种分析函数写法,我在form builder中写分析函数报一样的错误
      

  7.   

    本人也认为,proc的预编译是不支持oracle的分析函数,在网上找到些资料可供参考,可是没有官方的文档证明阿!http://www.itpub.net/viewthread.php?tid=1059317&extra=&page=1http://forums.oracle.com/forums/thread.jspa?messageID=2589808
      

  8.   

    lz可以试试把分析函数的sql写到oracle的存储过程里面,然后在proc里调用存储过程。这样的话分析函数就在oracle下解析了
      

  9.   

    在PROC中使用分析函数是详设中被要求的,别的手段我也可以实现.
    是否可以通过设置$oh/precomp/admin/pcscfg.cfg文件下的参数来让编译通过呢?
    我像下面设置了下,报错说COMMON_PARSER选项无法找到
    COMMON_PARSER=NO
    MODE=ORACLE
    DYNAMIC=ORACLE
    TYPE_CODE=ORACLE
      

  10.   

    这样啊。那你参考下这个
    http://www.itpub.net/thread-1105627-1-1.html
      

  11.   

    "这是个precompiler解析器的一个bug。这个bug在11107已经被修复了。lz要不用转到11107? "那个网站看过了,上面提到11107,11107是oracle的版本号吗?有它升级修复的文档吗?
      

  12.   

    是否有人知道proc的预编译是否支持oracle的分析函数,最好能给个可靠的说明证据,谢谢