不知道怎么写,请教各位高手给讲讲。
---------------
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加上引号还报错。
---------------
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加上引号还报错。
你拼得字符串有问题。执行过去了,应为它是字符串,错误是应为语句写的有问题。
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)