在添加新的oracle表分区之前测试它

时间:2016-06-08 15:22:03

标签: sql oracle plsql oracle11g oracle-sqldeveloper

我已经在Stackoverflow现有主题中搜索但找不到答案,

我尝试编写一个pl sql脚本来将分区添加到现有表中,  但是,在这之前,我需要验证要添加的分区是否已存在于此表中, 如果存在,我无事可做 如果不是,我必须使用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;

非常感谢你的帮助

1 个答案:

答案 0 :(得分:0)

您的代码中有错误:

IF V_TEST_PARTITION = 0

应该是

IF V_TEST_PARTITION <> 0