настройка процедуры оракула так, чтобы она принимала входное значение - PullRequest
0 голосов
/ 21 февраля 2019

Я создал процедуру, которая удаляет 3-месячный раздел из таблицы, и теперь я хочу сделать описанную ниже процедуру достаточно настраиваемой, чтобы она принимала счет от пользователя, поэтому, пожалуйста, посоветуйте, как я могу изменить описанную ниже процедуру

create or replace
PROCEDURE Delete_partitions

/*
This procedure will delete partitions for the following tables:
TEMPTABLE
*/

BEGIN
  FOR cc IN
  (
  SELECT partition_name, high_value
  FROM user_tab_partitions
  WHERE table_name = 'TEMPTABLE'
  )

    dbms_output.put_line('starting to drop  partition ');    
  LOOP
    EXECUTE IMMEDIATE 'BEGIN               
IF sysdate >= ADD_MONTHS(' || cc.high_value || ', 2) THEN                  
EXECUTE IMMEDIATE                     
''ALTER TABLE TEMPTABLE DROP PARTITION ' || cc.partition_name || '                     
'';               
END IF;    
  dbms_output.put_line('drop partition completed');        
END;';
  END LOOP;

  exception
    when others then
        dbms_output.put_line(SQLERRM);

END;
/

1 Ответ

0 голосов
/ 21 февраля 2019

Добавьте к нему некоторые параметры:

create or replace
PROCEDURE Delete_partitions(cnt in number)

/*
This procedure will delete partitions for the following tables:
TEMPTABLE
*/

BEGIN
  FOR cc IN
  (
  SELECT partition_name, high_value
  FROM user_tab_partitions
  WHERE table_name = 'TEMPTABLE'
  )

    dbms_output.put_line('starting to drop  partition ');    
  LOOP
    EXECUTE IMMEDIATE 'BEGIN               
IF sysdate >= ADD_MONTHS(' || cc.high_value || ', ' || cnt-1 || ') THEN                  
EXECUTE IMMEDIATE                     
''ALTER TABLE TEMPTABLE DROP PARTITION ' || cc.partition_name || '                     
'';               
END IF;    
  dbms_output.put_line('drop partition completed');        
END;';
  END LOOP;

  exception
    when others then
        dbms_output.put_line(SQLERRM);

END;
/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...