下面这句          select B_ACC_CODE,
                 (SELECT B_ACC_NAME FROM MA_BACC WHERE B_ACC_CODE=PS.B_ACC_CODE) as B_ACC_NAME,
                 PROJECT_CODE,
                 (SELECT PROJECT_NAME FROM MA_PROJECT WHERE PROJECT_CODE=PS.PROJECT_CODE) as PROJECT_NAME,
                 START_SUM,PLAN_SUM,PAY_SUM  ,BALA_SUM
          from temp_AM_RPT PS
          where abs(PLAN_SUM)>0.001 or abs(PAY_SUM  )>0.001;

解决方案 »

  1.   

    http://asp5.6to23.com/lastsky/showfile.asp?bbs_id=7&Title_ID=161&recordnum=32我把代码贴出来了
      

  2.   

    不应该的,只要在Oracle中运行,不会有啥问题的
      

  3.   

    由于在SELECT语句的查询列当中再次包含select语句的语法存储过程识别不了,所以只有用EXECUTE IMMEDIATE来执行它的字符串的方式来执行,其实这种语法是完全正确的,希望在Oracle今后的版本中对于次问题能够予以很好的解决。*********************************************************************************
      ---------------------------先定义变量----------------------------------
      EXECUTE_Str  Varchar2(2000);    --一定要定义长些,不然很容易报缓冲错误  ---------------------------定义SQL字符串-------------------------------
      EXECUTE_Str := '
      insert into temp_AM_RPT
            SELECT B_ACC_CODE,
                   (SELECT B_ACC_NAME FROM MA_BACC WHERE B_ACC_CODE=PS.B_ACC_CODE) as B_ACC_NAME,
                     PROJECT_CODE,
                     (SELECT PROJECT_NAME FROM MA_PROJECT WHERE PROJECT_CODE=PS.PROJECT_CODE) as PROJECT_NAME,
                     START_SUM,PLAN_SUM,PAY_SUM  ,BALA_SUM
              from temp_AM_RPT PS
              where abs(PLAN_SUM)>0.001 or abs(PAY_SUM  )>0.001';  ---------------------------执行SQL字符串-------------------------------
       EXECUTE IMMEDIATE EXECUTE_Str;你必须把所有的Insert ...Select...语句改成该方法。
      

  4.   

    应该是 select field into v_field where....
    这样的吧,而且要保证两个子查询中得到的值是唯一的