不知道怎么写,请教各位高手给讲讲。
---------------
   FOR I IN 1..TO_NUMBER(LAST_DAY(SYSDATE))-1 LOOP
     EXECUTE IMMEDIATE 'partition by range (CREATED_DATE)(
     partition p||TO_CHAR(SYSDATE,YYYYMM)||I less than (TO_DATE(TO_CHAR(SYSDATE,YYYY-MM)||-||I+1|| 00:00:00, SYYYYMMDD HH24:MI:SS, NLS_CALENDAR=GREGORIAN)              
       tablespace temp)';
   END LOOP;
---------------
这样竟然执行通过了,很是莫名其妙,to_char()格式都不对,yyyymm加上引号还报错。

解决方案 »

  1.   

    建议把需要执行的语句先拼好了在excute,
    你拼得字符串有问题。执行过去了,应为它是字符串,错误是应为语句写的有问题。
    TO_CHAR(SYSDATE,YYYYMM)的引号应该加上 而且要双引。要么就一个一个拼。
    请问 这个是不是你要excute的语句?
    partition by range (CREATED_DATE)( 
        partition (p || TO_CHAR(SYSDATE,'YYYYMM') || I) 
          VALUES less than (TO_DATE((TO_CHAR(SYSDATE,'YYYY-MM') || '-' || I+1 || '00:00:00'),
                            'SYYYYMMDD HH24:MI:SS',
                            NLS_CALENDAR=GREGORIAN)               
        tablespace temp)
      

  2.   

    如果正确 EXECUTE IMMEDIATE '上面的sql' 把里面的sql所有单引号都多加一个单引号就行了。