Основы языка Transact-SQL. Переменные. Встроенные функции. Скалярные функции, страница 3

37

@@MAX_CONNECTIONS - возвращает максимальное разрешенное количество одновременных подключений, которые могут установить пользователи. Для изменения этого значения используется системная хранимая процедура sp_configure ''user connections''.

38

@@VERSION - возвращает информацию о дате, версии и типе процессора локальной копии SQL Server.

@@ERROR - возвращает код последней ошибки, произошедшей в текущем соединении.

39

  • Функции системы безопасности
  • с их помощью можно получить информацию о пользователях БД и о членстве их в фиксированных и пользовательских ролях БД и сервера.
  • Рассмотрим некоторые из этих функций.
  • IS_MEMBER({''группа'' | ''роль''})
  • С помощью этой функции можно проверить, является ли текущий пользователь членом указанной роли БД SQL Server или группы ОС Windows. Если является, то функция возвращает значение 1, иначе - 0. Если указано некорректное имя группы или роли, то возвращается значение NULL.

40

41

IS_SRVROLEMEMBER(''роль'' [, ''учетная запись'']) С помощью этой функции можно проверить членство указанной учетной записи в той или иной фиксированной роли сервера. Если пользователь состоит в указанной роли, то возвращается 1, в противном случае – 0. Если имя роли или учетной записи не распознано, возвращается значение NULL. Если имя учетной записи не указано, то подразумевается текущий пользователь.

42

Функции управления метаданными - позволяют получить информацию о метаданных объектов. Например, COL_LENGTH(''таблица'', ''столбец'') – функция возвращает информацию о количестве байт, отведенных в таблице для того или иного столбца.

43

Статистические функции С помощью функций этого типа можно получить информацию о состоянии системы и работе сервера. Для получения данной информации можно также использовать системную хранимую процедуру sp_monitor. Примеры таких функций: @@CPU_BUSY – возвращает количество миллисекунд, которое затратил центральный процессор во время последнего запуска SQL Server;

44

@@IO_BUSY – возвращает количество миллисекунд, которое система SQL Server ожидала выполнения операций ввода-вывода во время последнего запуска; @@TIMETICKS – возвращает количество микросекунд в одном такте процессора.

45

8.2. Пользовательские функции

Наряду с использованием встроенных функций, пользователь может создавать пользовательские функции (ПФ), содержащие часто используемый код. При реализации на языке T-SQL сложных и часто используемых алгоритмов, встает вопрос о сохранении разработанного кода для дальнейшего применения. Эту задачу можно решать с помощью хранимых процедур (ХП), но их нельзя использовать непосредственно в выражениях, т.к. ХП требуют промежуточного присвоения возвращенного значения переменной, которая затем и указывается в выражении.

46

Возможные преимущества пользовательских функций В отличие от ХП, ПФ позволяют вызов разработанных алгоритмов непосредственно в выражениях. ПФ сходны с ХП, но, в отличие от них, могут применяться в запросах так же, как и системные встроенные функции. ПФ, возвращающие таблицы, могут стать альтернативой просмотрам. Просмотры ограничены одним выражением SELECT, а ПФ могут включать дополнительные выражения, что позволяет создавать более сложные и мощные конструкции.

47

  • Рассмотрим создание ПФ двух типов:
    • скалярные функции – возвращают скалярные значения;
    • табличные функции – возвращают результат в виде таблицы, в свою очередь, делятся на
      • внедренные (функции Inline);
      • табличные функции с множеством инструкций (функции Multi-statement).

48

Tабличные функции подчиняются тем же правилам, что и скалярные функции, но возвращают результат в виде таблицы. Поэтому они в основном применяются в предложении FROM инструкции SELECT, и их можно соединять с другими таблицами и представлениями. Эти функции используют табличные переменные – особый тип переменных, служащий для временного хранения набора строк, - результата работы табличной функции.

49

8.2.1. Cкалярные функции

Cкалярные функции принимают 0 или несколько входных параметров и возвращают одно скалярное значение. По использованию эти функции похожи на функции, реализуемые в других языках программирования. Для создания скалярной функции используется инструкция CREATE FUNCTION, имеющая следующий общий синтаксис:

50