第一个语句:
select P_CERTNO FROM 表2 WHERE MONTHS_BETWEEN(TO_DATE('20080507','YYYYMMDD'),TO_DATE(P_LEFTTIME,'YY-MM-DD'))<3 AND P_LEFT='是'没有问题,可以正确执行第二个语句仅仅是在第一个语句后面加了 AND P_CERTNO IN(SELECT P_CERTNO FROM 表2)就报错,而且报奇怪的错误ORA-01841 年份值必须介于-4713和+9999之间且不为0我要疯了,救命
select P_CERTNO FROM 表2 WHERE MONTHS_BETWEEN(TO_DATE('20080507','YYYYMMDD'),TO_DATE(P_LEFTTIME,'YY-MM-DD'))<3 AND P_LEFT='是'没有问题,可以正确执行第二个语句仅仅是在第一个语句后面加了 AND P_CERTNO IN(SELECT P_CERTNO FROM 表2)就报错,而且报奇怪的错误ORA-01841 年份值必须介于-4713和+9999之间且不为0我要疯了,救命
解决方案 »
- mysql-->oracle数据迁移问题!!!
- oracle中的表空间怎么区分是系统的还是用户的
- startup
- 请问如何在ORACLE9I的客户端,将ORACLE9I的服务器的数据库导到另外一台单独的ORACLE9I服务器?
- 面试题目,尝试答一下,我没有答上来!
- SOS!!!在windows操作系统下安装运行的oracle 9i可否在Red Hat Linux 9 下安装运行?(在线解决马上结帖)
- 各位高手 请问在OCI里面怎样调用 procedure 啊? 我为什么老是不成功
- 为什么我用dbms_job.submit定时调用一个存储过程到了时间不执行?
- 请问:这个统计查询的语句怎么写更有效率?
- 这个SQL问题如果解决?
- 用Oracle游标取数据有没有条数限制的?
- 新手问个问题 关于插入表
select P_CERTNO FROM 表2 WHERE MONTHS_BETWEEN(TO_DATE('20080507','YYYYMMDD'),TO_DATE(P_LEFTTIME,'YY-MM-DD')) <3 AND P_LEFT='是'
错了,第二句是AND P_CERTNO IN(SELECT P_CERTNO FROM 表1) 表1和表2不是同一个表
------------------------
语法没错.试试看:
select P_CERTNO FROM 表2 WHERE P_CERTNO IN (SELECT P_CERTNO FROM 表1) 有没有问题?
and exists (SELECT P_CERTNO FROM 表1 where 表1.P_CERTNO = 表2.P_CERTNO)
而执行第一条sql的时候,toad只是select了一页数据,所以刚好没出错
而第二句sql则select到错误数据导致报错