В SQL Server есть как детерминированные, так и недетерминированные функции. Детерминированной считается функция, которая возвращает одинаковые результаты, если ее вызывают с одним и тем же набором входных параметров. Недетерминированной называется функция, если при вызове с одним и тем же набором входных параметров она может возвращать различные результаты.

Язык управления ходом выполнения состоит из специальных слов, которые контролируют ход выполнения операторов Transaet-SQL, блоков операторов и хранимых процедур. Эти слова можно использовать в операторах Transact-SQL, пакетах и хранимых процедурах

Если язык управления ходом выполнения не используются, отдельные операторы Transact-SQL выполняются последовательно, в том порядке, в каком они расположены. Язык управления ходом выполнения допускает объединение связанных операторов Он также позволяет сделать их взаимозависимыми. При этом один оператор языка управления ходом выполнения не может относиться сразу к нескольким пакетам или хранимым процедурам.

В SQL Server 2000 предусмотрено несколько методов исполнения операторов Transact-SQL. Можно исполнить одиночный оператор или несколько операторов в виде пакета (который является группой из одного или нескольких операторов Transact-SQL). Операторы Transact-SQL также можно исполнять в хранимых процедурах и триггерах. На этом занятии вы познакомитесь с различными методиками исполнения операторов, а также узнаете о способах исполнения в зависимости от применяемой методики и об исполнении операторов Transact-SQL с помощью сценариев.

Обработка одиночных операторов является основным способом исполнения операторов SQL в SQL Server 2000. Проще всего обработку оператора проиллюстрировать на примере оператора SELECT.

SELECT относится к непроцедурным операторам — он не определяет конкретных шагов, которые должен выполнить сервер баз данных для выборки запрошенных данных. Другими словами, чтобы определить наиболее эффективный способ извлечения запрошенных данных, сервер баз данных должен проанализировать оператор. Этот процесс называется оптимизацией оператора SELECT, а выполняет его оптимизатор запросов.

Пакет — это набор из одного или нескольких операторов, которые клиент отсылает как единую группу. При компиляции каждого пакета получается один план исполнения. Если пакет состоит из нескольких операторов SQL, то из всех оптимизированных шагов, необходимых для исполнения каждого оператора, формируется единый план исполнения. Для того чтобы задать пакет, имеется несколько способов.

SQL Server 2000 хранит только исходный текст хранимых процедур и триггеров. Когда хранимая процедура или триггер исполняется первый раз, исходный текст компилируется в план исполнения. Если до того, как план исполнения устареет и будет удален из памяти, хранимая процедура или триггер исполняется снова, реляционный механизм обнаруживает существующий план и использует его повторно. Если план устарел и удален из памяти, создается новый план исполнения. Этот процесс напоминает обработку SQL Server 2000 всех операторов SQL Увеличение производительности при применении хранимых процедур и триггеров объясняется постоянством их SQL-операторов, что позволяет SQL Server использовать для них существующие планы исполнения.

Сценарий - это набор операторов Transact-SQL, сохраненных в файле. Этот файл можно ввести в SQL Query Analyzer или утилиты osql и isql Они способны исполнить операторы SQL, хранящиеся в файле.

Сценарии Transact-SQL состоят из одного или нескольких пакетов. Конец пакета отмечается командой GO, Если в сценарии Transact-SQL нет ни одной команды GO, он исполняется как один пакет.

Рис. 3-2. Таблица без уникального идентификатора

Таблицу можно нормализовать, добавив столбец, уникально идентифицирующий каждую строку (рис. 3-3). Обратите внимание, что у каждого экземпляра строки с именем David Mendlen есть идентификатор (EmplD) с уникальным значением. В таблице должны храниться сведения лишь об одном типе объектов

Рис. 3-6. Две возможные структуры таблицы Books

Если необходимо хранить список значений в одном столбце или создать несколько столбцов для хранения одной единицы информации (Author1, Author2 и т.д.), следует предусмотреть размещение дублирующихся данных в другой таблице, связанной с главной. Для таблицы Books можно создать дополнительную главную таблицу, где хранить сведения об авторах, а затем — третью таблицу, в которой будут сопоставлены названия книг с их авторами. Последняя таблица обеспечивает хранение повторяющихся значений (рис. 3-7). Такая структура позволяет описать книгу с любым числом авторов без изменения определения таблицы и не допускает наличия пустых мест при сохранении информации о книгах с одним автором.

«Один ко многим» — наиболее распространенный тип связи. При этом типе связи одной строке таблицы А может соответствовать множество строк таблицы В, но любой строке таблицы В может соответствовать только одна строка таблицы А. Например, в таблицах Publishers и Titles используется связь «один ко многим». Каждое издательство выпускает много книг, но любая книга выходит только в одном издательстве. Связь «один ко многим» возможна, если только один из связанных столбцов является первичным ключом или имеет ограничение, обеспечивающее уникальность.

3 февраля Ученые занялись разработкой искусственного интеллекта для обработки изображений, который можно будет использовать в различных областях.
2 февраля Ученые разработали прототип устройства, способного снабжать кардиостимулятор энергией за счет использования вибраций.
31 января На днях в продажу поступил первый планшетный компьютер, разработанный на африканском континенте, а именно в Республике Конго.
30 января Компании Imec (Бельгия) и Genalyte (США) сообщили, что разработали и произвели набор одноразовых кремний-фотонных биосенсорных чипов.
26 января Ученые разработали систему идентификации под названием Bootstrapper, которая различает пользователей по их обуви.