指SQL语句标识太长是什么意思 。我客户端使用的oracle provider for ole db ,如果客户端使用8.16则不报错,如果使用9.205则报以上错误,谁知道这是什么原因,在9i下如何解决

解决方案 »

  1.   

    ORA-00972 identifier is too longCause: The name of a schema object exceeds 30 characters. Schema objects are
    tables, clusters, views, indexes, synonyms, tablespaces, and usernames.Action: Shorten the name to 30 characters or less.
      

  2.   

    我的sql语句是: 
    select projectName,case  
    when (sysdate>JOBPLANSTART and JOBSTARTACTUAL is null) then 'a'  
    end "desc"  from  projectJobInfo,projectinfo,phaseTable,jobTable  
    where projectJobInfo.projectId=projectinfo.projectId and  
    ( (sysdate>JOBPLANSTART and JOBSTARTACTUAL is null) or 
    (sysdate>JOBPLANend and JOBendACTUAL is null) ) 在程序里(客户端使用的ole db provider )提示ora-00972错误,标识太长的错误。但是使用sql plus(版本是9.2.0.1.0)却不出错。 试图将(sysdate>JOBPLANSTART and JOBSTARTACTUAL is null) 改成(sysdate>JOBPLANSTART ) 后(缩短了长度),没有提示出错了。 难道这也算个标识符?
      

  3.   

    ole db provider是可能对不同的版本产生错误的,但是这是ole db provider的对不同版本支持的问题
    只要在SQL Plus里不错,就说明你语法没有问题
      

  4.   

    sysdate>JOBPLANSTART and JOBSTARTACTUAL is null)不是标志符。
    oracle规定想table,procedure等各种对象的名称最长不能超过30个字符。
    我们原来的系统,有一个模块在界面上显示一个复杂查询的结果记录集,在服务器端和客户端都是8i的条件下开发的,运行正常,后来,服务器端和客户端都升级到9i,不能正常显示结果记录集了,客户端重新安装了8i,结果正常了。
    存在oracle版本兼容问题