Мне нужно использовать оператор SQL, чтобы удалить таблицу, она выйдет из строя, если таблица не существует. Можно ли использовать оператор IF
для удаления таблицы s.executeUpdate("DROP TABLE employee");
Удалить таблицу из базы данных Oracle, если таблица существует в инструкции sql
Ответы (5)
Oracle не поддерживает такую конструкцию, как drop table if exists my_table
, которая, по-видимому, является допустимым синтаксисом в MySQL (и, возможно, в других СУБД).
В .SQL
скрипте, где вы запускаете DDL
для DROP
и / или CREATE
различных объектов, стандарт Oracle заключается в том, чтобы удалить объект и игнорировать ошибку в тех случаях, когда объект не существует. Если хотите, вы можете написать код, чтобы проверять, существует ли объект (см. DBA_OBJECTS
представление), чтобы удалить его только в том случае, если он существует.
из s.executeUpdate
, я так понимаю, что вы делаете это на Java? Если бы это был я, я бы просто отбросил и проигнорировал любую несуществующую ошибку.
Надеюсь, это поможет.
предполагая, что у вас есть необходимые разрешения, вы можете сделать что-то вроде следующего
declare var_count int;
select count(*) INTO var_count
from all_tables where OWNER = [schema] and table_name = "EMPLOYEE";
if var_count > 0 then
begin
drop table employee;
end
адаптируйтесь соответствующим образом, если вы делаете это во внешнем коде, а не в процедуре pl / sql.
Традиционно в pl / sql вы можете указать раздел исключения в блоке и перехватить исключение, если таблица не удаляется.
Это решит вашу проблему, когда таблица не существует, ошибка не будет выдана.
Сотрудник BEGIN DROP TABLE; ИСКЛЮЧЕНИЕ, КОГДА ДРУГИЕ ТОГДА NULL; КОНЕЦ;
Я бы использовал следующий код:
s.executeUpdate("DROP TABLE IF EXISTS employee")
Но в зависимости от ваших версий вы также можете использовать это:
IF OBJECT_ID('dbo.employee', 'U') IS NOT NULL
DROP TABLE dbo.employee
Ответ взят из: здесь, также это кажется, это может быть дубликат того же поста? Я очень, очень рекомендую прочитать документацию по SQL и попытаться провести дополнительные исследования перед публикацией, но я вижу, что вы новичок, обязательно прочитайте правила публикации здесь, на StackOverFlow.