Когда вы создаете таблицу со списком разделов, вы даете ей имя раздела по умолчанию и разделяете его, когда вам нужен новый раздел.
Давайте рассмотрим это немного. Например, у вас есть таблица с именем demo_table, верно?
CREATE TABLE DEMO_TABLE
(
ID NUMBER,
NAME VARCHAR2(100 CHAR)
)
PARTITION BY LIST (ID)
(
PARTITION PDEFAULT VALUES (DEFAULT)
);
И создайте процедуру для разбиения ее раздела при необходимости.
CREATE OR REPLACE PROCEDURE DEMO_PROCEDURE (TABLENAME VARCHAR2,PID VARCHAR2)
IS
V_CONTROL NUMBER;
BEGIN
--Controls if any of the given partitions created before??
SELECT COUNT (*)
INTO V_CONTROL
FROM USER_TAB_PARTITIONS
WHERE TABLE_NAME = TABLENAME
AND PARTITION_NAME = 'P' || PID;
IF V_CONTROL > 0
THEN
EXECUTE IMMEDIATE
'ALTER TABLE '||TABLENAME ||' DROP PARTITION P'|| PID;
END IF;
EXECUTE IMMEDIATE
'ALTER TABLE '||TABLENAME ||' SPLIT PARTITION PDEFAULT VALUES('
|| PID
|| ') INTO ( PARTITION P'
|| PID
|| ',PARTITION PDEFAULT)';
END DEMO_PROCEDURE;
/
Ниже должен работать код.
Официальные документы.
alter table demo_table
split partition YOUR_DEFAULT_PARTITION(In your case it is PART_35) values('9999') into
(partition YOUR_NEW_PARTITION, partition YOUR_DEFAULT_PARTITION(In your case it is PART_35))