【问题标题】:Test existing oracle table partition before adding a new one在添加新分区之前测试现有的 oracle 表分区
【发布时间】:2016-06-08 15:22:03
【问题描述】:

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

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

非常感谢您的帮助

【问题讨论】:

  • 看起来您在构造的查询字符串中需要一些空格。
  • 你的问题是什么?你有错误吗?请尽量详细些
  • 错误(17,3):PLS-00103:在预期以下情况之一时遇到符号“REQUETE”:* & - + / at mod remaining rem then 和或 || multiset 符号“then”被替换为“REQUETE”以继续。
  • 错误(32,4):PLS-00103:遇到符号“;”预期以下情况之一时:如果
  • 我有这两个错误!!!

标签: sql oracle plsql oracle11g oracle-sqldeveloper


【解决方案1】:

你的代码有错误:

IF V_TEST_PARTITION = 0

应该是

IF V_TEST_PARTITION <> 0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-05
    • 2019-08-13
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    相关资源
    最近更新 更多