Функции конфигурирования
В таблице 5 представлены основные функции конфигурирования сервера.
Формат функции | Назначение |
@@DATEFIRST | Возвращает текущее значение первого дня недели |
@@DBTS | Выводит текущее значение счетчика timestamp для текущей базы данных |
@@LANGID | Возвращает идентификатор локального языка, являющегося текущим |
@@LANGUAGE | Показывает, какой язык является текущим |
@@LОCK_TIMEOUT | Возвращает количество миллисекунд, которое сервер будет ожидать до выполнения запроса |
@@MAX_CONNECTION | Выводит максимальное количество подключений, которое одновременно могут установить пользователи (по умолчанию 32 767) |
@@MAX_PRECISION | Возвращает максимальное количество знаков, поддерживаемое сервером для типов данных numeric и decimal |
@@NESTLEVEL | Возвращает текущий уровень вложенности хранимых процедур |
@@REMSERVER | Возвращает имя удаленного сервера |
@@SERVERNAME | Возвращает имя локального сервера |
@@SPID | Возвращает идентификационный номер текущего процесса |
@@TEXTSIZE | Возвращает максимальный размер блока в байтах, который может быть возвращен командой SELECTдля столбцов типа text, image, varchar (max:) , varbinary(max) , nvarchar(max) |
@@VERSION | Возвращает информацию о версии сервера, типе процессора, операционной системе |
Часть 2. Функции пользователя
При реализации на языке SQL сложных алгоритмов, которые могут понадобиться более одного раза, встает вопрос о сохранении разработанного кода.
Эту задачу можно было бы решить с помощью хранимых процедур, однако их архитектура не позволяет использовать процедуры непосредственно в выражениях, т.к. они требуют промежуточного присвоения возвращаемого значения переменной, которая затем используется в этих выражениях.
Естественно, такой метод применения программного кода не слишком удобен. Необходима возможность вызова разработанного кода непосредственно в выражениях. Такая возможность предоставлена, начиная с SQL Server 2000. В других реализациях SQL в распоряжении пользователя имеются только встроенные функции, обеспечивающие выполнение наиболее распространенных алгоритмов: поиск максимального значения и др.
Функции пользователя представляют собой самостоятельные объекты базы данных, такие, например, как хранимые процедуры или триггеры. Функция пользователя располагается в определенной базе данных и доступна только в ее контексте.
В SQL Server имеются следующие классы функций пользователя:
• Scalar - функции возвращают обычное скалярное значение. Функции этого класса могут включать множество команд, объединяемых в один блок с помощью конструкции BEGIN...END;
• Inline - функции содержат всего одну команду select и возвращают пользователю набор данных в виде значения типа данных table;
• Multi -statement - функции также возвращают пользователю значение типа данных TABLE, содержащее набор данных, однако в теле функции находится множество команд SQL (в том числе INSERT,UPDATE и т.д.). Именно с их помощью и формируется набор данных, который должен быть возвращен после выполнения функции.
Пользовательские функции сходны с хранимыми процедурами, но, в отличие от них, могут применяться в запросах так же, как и системные встроенные функции.
В отличие от хранимых процедур функция не имеет выходных параметров (только входные).
У хранимых процедур в качестве выходных параметров предусмотрен только целый тип данных, а у пользовательских функций возвращаемый набор может иметь любой тип данных SQL Server.
И, кроме того, в отличие от хранимых процедур пользовательские функции могут возвращать целые таблицы.
Надо отметить и следующее: хранимая процедура, конечно, может возвращать результирующий набор, но для дальнейшего использования этого набора, например, в запросах, его необходимо предварительно вставить в какую-либо таблицу (например, во временную). Даже, если хранимая процедура возвращает табличный результирующий набор, все равно в кодах необходимо сделать ещё шаг. Это неудобно. Результирующий набор, возвращаемый функцией, можно использовать в любых запросах.
Пользовательские функции, возвращающие таблицы, могут стать альтернативой просмотрам. Просмотры ограничены одним выражением SELECT, а пользовательские функции способны включать дополнительные выражения, что позволяет создавать более сложные и мощные конструкции.
Дата добавления: 2015-08-26; просмотров: 714;