Обратите внимание, что это очень опасно. Вы можете очень хорошо делать ошибки. Сначала запустите команду select, чтобы проверить, что вы собираетесь делать, и создайте таблицу выбора, чтобы при необходимости вы могли заново создать синонимы вручную.
Использование all_synonyms
или dba_synonyms
вместо user_synonyms
может привести к удалению системных синонимов не делайте этого , если вы хотите, чтобы ваша база данных впоследствии работала
Я бы также рекомендовал протестировать код на 1 создаваемом вами синониме, чтобы убедиться, что он точно соответствует вашему желанию.
Плюс я не вижу смысла делать это вообще? Если синонимы есть, зачем вам их заново генерировать? Или это делается на другом сервере? Если это так, добавьте @server_name
после user_synonyms
и удалите drop
.
begin
for xx in ( select * from user_sequences ) loop
execute immediate 'drop sequence ' || xx.sequence_name;
execute immediate 'create sequence ' || xx.sequence_name
|| ' start with ' || xx.min_value
|| ' ends with ' || xx.max_value
|| case when xx.cycle_flag = 'N' then ' nocycle '
else ' cycle ' end
|| case when xx.cache_size = 0 then ' nocache '
else ' cache ' end || xx.cache_size
|| case when xx.order_flag = 'N' then ' noorder '
else ' order ' end
;
end loop;
end;