Расширения возможностей выборки в Visual FoxPro 9
В версии 9 разработчики предусмотрели некоторые расширения SQL-запросовв части отмены существовавших ранее ограничений для SQL команд пли значительно расширили их возможности.
В частности, количество объединений (JOIN) и подзапросов раньше былоограничено девятью. Теперь ограничение снято.
Количество выборок, объединяемых при помощи ключевого слова UNION,также теперь не ограничено (ранее было 9).
Максимальное количество используемых в запросах алиасов и таблиц теперь не ограничено, а ранее не могло превышать 30.
Конструкция IN ранее не могла включать более 24 элементов. В версии 9снято ограничение на количество элементов в этой конструкции.
Какие еще приятные новинки припасли для разработчиков создатели VisualFoxPro 9?
Поддерживаются подзапросы любой степени вложенности. Например:
В предыдущей версии - 8 - поддерживался только один уровень подзапросов. Если в этой версии в подзапросе указать подзапрос, Visual FoxPio 8 выдастошибку.
Еще одно снятое ограничение - возможность использовать GROUP BY в подзапросах.
Новая хитрость - можно использовать в <Список_полей1> подзапросы. Например:
В версии 9 стало возможным использование в подзапросе агрегатных функций.
Результаты выборки SELECT возможно теперь использовать даже в качествеимени таблицы, из которой происходит другая выборка.
Visual FoxPro 9 обеспечивает ускорение при помощи технологии Ruslnnoreвыборки из нескольких таблиц, когда после ключевого слова FROM указываютсяимена нескольких таблиц.
При использовании UNION в выборке ранее можно было после ключевыхслов ORDER BY указывать только номера полей числами. Теперь можно писатьимена полей.
В команде UPDATE теперь разрешается использовать SELECT для задания новых значений полей. Например:
В результате выполнения этой команды в таблице Staff будет найдена записьсо значением поля Sum = 15000. Значение поля Id из этой записи занесется вполе Id таблицы Persons, в запись, где значение поля Tabnum = 70005.
Количество одновременно обновляемых полей раньше было ограничено 128.Теперь ограничение не снято, но увеличено до 255.
При изменении структуры таблицы при помощи команды ALTER TABLE стало гораздо больше возможностей по преобразованию типов полей из одного вдругой.
При использовании в команде DELETE ключевого слова FROM в версии 9 допускается задавать коррелированное условие. Например:
Управление транзакциями
Транзакция - это последовательность операций над БД, рассматриваемых СУБДкак единое целое. Удаление записей - это транзакция, добавление записей - этотранзакция. Контроль транзакций присущ любой СУБД. В процессе внесенияизменений транзакция считается не завершенной, и состояние БД до началатранзакции может быть восстановлено. Подтвердить завершение транзакцииможно либо командой, либо автоматически.
При использовании команд SQL для удаления записей в таблицах записипомечаются на удаление, однако физического удаления не происходит. Длятаблиц Visual FoxPro для полного удаления записи необходимо использоватькоманду PACK. Или, если вы хотите отменить удаление, надо выполнить команду RECALL. Обе эти команды мы уже рассматривали ранее.
Для операций с удаленными таблицами придется использовать другие команды. В случае завершения операции удаления надо выполнить SQLCOMMIT(),а в случае отмены удаления - SQLROLLBACK ().
В обеих командах в качестве параметра задается указатель на соединение. Указатель возвращается при установке соединения при помощи функции SQLCONNECT ().
Эта функция служит для установления связи с удаленными базами данных. Под«удаленными» в данном случае понимают не то, что их уже удалили, а то, чтоони расположены на других компьютерах или имеют тип, отличный от VisualFoxPro. SQLCONNECT () позволяет после установки связи использовать командыSQL для работы с удаленными таблицами. Например, можно, работая в VisualFoxPro, установить соединение с базой данных, работающей под управлениемСУБД Oracle.