Если я правильно понял вопрос, вы хотите удалить и создать индекс, а затем вернуть логическое значение true, если операции с индексами выполнены успешно, или false, если они не пройдены.Естественной конструкцией здесь является ФУНКЦИЯ:
CREATE OR REPLACE FUNCTION CLEAR_INDEX
( INDEX_NAME1 IN VARCHAR2,
INDEX_NAME2 IN VARCHAR2 )
RETURN BOOLEAN AS
BEGIN
EXECUTE IMMEDIATE 'drop index ' || INDEX_NAME1;
EXECUTE IMMEDIATE 'drop index ' || INDEX_NAME2;
RETURN ( TRUE ):
EXCEPTION
WHEN OTHERS THEN
RETURN ( FALSE );
END CLEAR_INDEX;
Если вы настаиваете на ПРОЦЕДУРЕ:
CREATE OR REPLACE PROCEDURE CLEAR_INDEX
( INDEX_NAME1 IN VARCHAR2,
INDEX_NAME2 IN VARCHAR2,
IT_WORKED OUT BOOLEAN )
BEGIN
IT_WORKED := FALSE;
EXECUTE IMMEDIATE 'drop index ' || INDEX_NAME1;
EXECUTE IMMEDIATE 'drop index ' || INDEX_NAME2;
IT_WORKED := TRUE;
EXCEPTION
WHEN OTHERS THEN
IT_WORKED := FALSE;
END CLEAR_INDEX;
Обратите внимание, как была удалена опция parallel
, потому что нет такой вещи, как параллельпонижаться.Отбрасывание объектов обычно происходит сразу, нет смысла распараллеливать операцию.