DeepEdit!

Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Оператор DELETE

Оператор DELETE можно использовать для удаления одной, нескольких или всех строк таблицы:

Предложение WHERE в операторе DELETE является необязательным: если оно не задано, то удаляются все строки таблицы. Рассмотрим несколько примеров:
• Удаление всех книг из таблицы books:

• Удаление из таблицы books всех книг, которые были опубликованы до определенной даты, и возврат количества удаленных строк:

Конечно, при работе с реальными объектами все эти команды DML становятся существенно более сложными. Например, вы можете обновить несколько столбцов данными, полученными в результате выполнения подзапроса. Начиная с версии Oracle9/ Database можно заменить имя таблицы табличной функцией, возвращающей результирующее множество, с которым и будет работать оператор DML (см. также главу 3).
Oracle поддерживает ряд атрибутов курсора для неявных курсоров, стоящих за операторами DML, - они будут рассмотрены в следующем разделе.
Атрибуты курсоров для операций DML
Oracle позволяет получить доступ к информации о последней выполненной встроенной команде DML через атрибуты неявных курсоров SQL (они совпадают с атрибутами, перечисленными в табл. 1.6). Значения, возвращаемые данными атрибутами для операторов DML, представлены в табл. 1.8.
Таблица 1.8. Атрибуты неявных курсоров SQL для операторов DML
Имя
Описание
SQL%FOUND
Возвращает TRUE, если была модифицирована (создана, изме­нена или удалена) одна или несколько строк.
SQL%NOTFOUND
Возвращает TRUE, если командой DML не было модифицирова­но ни одной строки.
SQL%ROWCOUNT
Возвращает количество строк, модифицированных командой DML.

Рассмотрим примеры использования атрибутов неявных курсоров.
• Используем атрибут SQL%FOUND для определения того, обработал ли наш оператор DML сколько-нибудь строк. Пусть, например, некоторый автор время от времени меняет свое имя и хочет, чтобы именно это новое имя использовалось во всех его книгах. Создаем маленькую процедуру, которая будет обновлять имя автора, а затем сообщать о том, были ли изменены какие-то строки, через логическую переменную:

• Используем атрибут SQL%ROWCOUNT в случае, когда необходимо определить точное количество строк, обработанных оператором DML. Переработаем приведенную выше процедуру изменения имени, с тем чтобы она возвращала чуть больше информации:
 









jAntivirus