在添加新分区之前测试现有的 oracle table 分区
Test existing oracle table partition before adding a new one
我已经在 Whosebug 现有主题中进行了搜索,但找不到答案,
我尝试编写一个 pl sql 脚本来向我现有的 table 添加一个分区,
但是,在此之前, 我需要验证要添加的分区是否已存在于此 table 中,
如果存在,我无所事事,
如果不是,我必须用 alter table 来创建它
这是我的脚本不起作用 :s :s
CREATE OR REPLACE PROCEDURE ADD_PARTITION AS
V_TEST_PARTITION INTEGER := 1;
REQUETE VARCHAR2(5000);
BEGIN
SELECT COUNT(*)
INTO V_TEST_PARTITION
FROM USER_TAB_PARTITIONS
WHERE TABLE_NAME = 'SALES'
AND PARTITION_NAME = 'MY_PARTITION';
IF V_TEST_PARTITION = 0
REQUETE := 'ALTER TABLE SALES ADD PARTITION'|| DEV || 'VALUES ('||MY_PARTITION'||')
TABLESPACE "STORE_DATA"';
EXECUTE IMMEDIATE REQUETE;
ELSE IF V_TEST_PARTITION = 0 THEN
DBMS_OUTPUT.PUT_LINE('MY_PARTITION' is already exist');
END IF;
END;
非常感谢你的帮助
您的代码有误:
IF V_TEST_PARTITION = 0
应该是
IF V_TEST_PARTITION <> 0
我已经在 Whosebug 现有主题中进行了搜索,但找不到答案,
我尝试编写一个 pl sql 脚本来向我现有的 table 添加一个分区, 但是,在此之前, 我需要验证要添加的分区是否已存在于此 table 中, 如果存在,我无所事事, 如果不是,我必须用 alter table 来创建它 这是我的脚本不起作用 :s :s
CREATE OR REPLACE PROCEDURE ADD_PARTITION AS
V_TEST_PARTITION INTEGER := 1;
REQUETE VARCHAR2(5000);
BEGIN
SELECT COUNT(*)
INTO V_TEST_PARTITION
FROM USER_TAB_PARTITIONS
WHERE TABLE_NAME = 'SALES'
AND PARTITION_NAME = 'MY_PARTITION';
IF V_TEST_PARTITION = 0
REQUETE := 'ALTER TABLE SALES ADD PARTITION'|| DEV || 'VALUES ('||MY_PARTITION'||')
TABLESPACE "STORE_DATA"';
EXECUTE IMMEDIATE REQUETE;
ELSE IF V_TEST_PARTITION = 0 THEN
DBMS_OUTPUT.PUT_LINE('MY_PARTITION' is already exist');
END IF;
END;
非常感谢你的帮助
您的代码有误:
IF V_TEST_PARTITION = 0
应该是
IF V_TEST_PARTITION <> 0