修改如下:但好像最后少了一个括号.
WHERE (CarNum,Repair) IN
          (SELECT a.CarNum,a.Repair
         FROM RWCARBASE, TMPUPREPAIRREC a
         WHERE a.CARNUM = RWCARBASE.NUM AND RWCARBASE.RepairType = 0));

解决方案 »

  1.   

    兄弟,哪条SQL语句,我在SQLPLUS中运行是没有错误的!应该不会少“)”
      

  2.   

    那减少一个括号执行情况如何?CarNum || Repair IN
              (SELECT a.CarNum || a.Repair
             FROM RWCARBASE, TMPUPREPAIRREC a
             WHERE a.CARNUM = RWCARBASE.NUM AND RWCARBASE.RepairType = 0);以上语句不要用“||”号,其中一个出现空也成立。
      

  3.   

    我找到了出错的位置,可我不知道怎么解决!你先看一下:
    SELECT ADD_MONTHS(Trunc(a.RepairDate, 'dd'), 24)
                      FROM TmpUprepairRec a
                      WHERE a.CarNum = TmpUpRepairRec.CarNum AND a.Repair = '2.2.5'就是这条,如果用了SQL语句就不能通过,如换了常量,函数都正确!
      

  4.   

    我想知道为什么哪条UPDATE语句在SQLPLUS中可以运行,而存储过程却编译不通过!?
      

  5.   

    有些SQL语句在PLUS中可以执行,但在PL/SQL却无法编译,是有可能的。因为SQLPLUS和PL/SQL的编译引擎是不一样的。碰到这种情况,你只能该你的语句了,没有办法的。具体有什么不一样,这些还不太清楚。
    我在www.cnoug.ora中也发过类似的帖子,你可以去看看,上次我也是修改了自己的语句。
      

  6.   

    或者把语句改为动态执行,是否可以。
    str:='update......';
    execute immediate str;