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