- •Кафедра «Информационные технологии»
- •Основы языка Transact-SQL
- •7. Переменные
- •При объявлении локальной переменной указывается:
- •Кроме локальных переменных, символ @ также используется при определении имен аргументов хранимых процедур
- •Примеры объявления переменных:
- •Значения переменным можно присваивать с
- •Заданные значения переменных можно вывести на экран с помощью команды SELECT:
- •Второй способ присвоения переменной значения - использование команды SELECT:
- •С помощью команды SELECT
- •Для вывода значений переменных можно
- •Примеры использования команд SELECT, PRINT для вывода значений переменных:
- •Результат обработки - вывод:
- •8. Функции
- •8.1. Встроенные функции
- •Математические функции. Большинство этих функций возвращают результат того же типа, что и исходное
- •Рассмотрим некоторые часто используемые математические функции и примеры их
- •Функция ISNUMERIC проверяет, имеет ли
- •Функция SIGN определяет знак числа. Если
- •Функции FLOOR, CEILING выполняют округление до целых вниз, вверх соответственно.
- •Функция POWER возводит число (первый аргумент) в степень (второй аргумент):
- •Основные математические функции
- •Строковые функции - используются для работы
- •Функции LTRIM, RTRIM удаляют пробелы в начале, конце строки соответственно. При вводе текстовых
- •Функции LOWER, UPPER переводят все символы строки в нижний, верхний регистр соответственно.
- •Функция SUBSTRING возвращает для строки подстроку указанной длины, начиная с заданного символа.
- •Основные строковые функции
- •Функции для работы с датой и временем
- •Примеры функций для работы с датой и временем
- •DAY, MONTH, YEAR - возвращают число, месяц, год (соответственно) из указанной даты.
- •DATEDIFF(datepart, startdate, enddate)
- •Функции даты и времени Transact-SQL
- •Примеры использования функций для работы с датой и временем
- •Простейший способ получить только дату, «обрезав» время, - использовать несколько функций:
- •Функции конфигурирования - возвращают
- •@@LANGUAGE – показывает, какой язык является текущим.
- •@@LOCK_TIMEOUT - возвращает количество миллисекунд, которое сервер будет ожидать выполнения запроса. Для каждого
- •@@MAX_CONNECTIONS - возвращает
- •@@VERSION - возвращает информацию о дате, версии и типе процессора локальной копии SQL
- •Функции системы безопасности
- •IS_SRVROLEMEMBER(''роль'' [, ''учетная запись''])
- •Функции управления метаданными
- •Статистические функции
- •@@IO_BUSY – возвращает количество миллисекунд, которое система SQL Server ожидала выполнения операций ввода-вывода
- •8.2. Пользовательские функции
- •Возможные преимущества пользовательских функций
- •Рассмотрим создание ПФ двух типов:
- •Tабличные функции подчиняются тем же
- •8.2.1. Cкалярные функции
- •CREATE FUNCTION [имя_схемы.] имя_функции
- •Назначение элементов синтаксиса:
- •В параметре [имя_схемы.] не допускается указание имени БД или сервера.
- •@имя_параметра – имя входного параметра (начинается с символа @), должно быть уникальным в
- •[, …n] – указывает на возможность задания многих параметров функции, используя синтаксис,
- •[AS] – после этого необязательного ключевого
- •RETURN скалярное_выражение
- •Пример 1. Рассмотрим создание функции с именем FunctionA и тремя входными параметрами:
- •Переменная @Var3 нужна, чтобы возвращать значение функции.
- •Примеры использования данной
- •Пример 2. Функция Goods для вычисления суммарного количества товара определенного типа. Имя владельца
- •Входной параметр - тип товара . Функция возвращает значение целого типа, полученное из
- •8.2.2. Внедренные табличные функции
- •CREATE FUNCTION [имя_схемы.] имя_функции
- •Основная часть параметров соответствует
- •Возвращаемое функцией значение table
- •Пример 1. Рассмотрим создание и
- •(функция содержит одну инструкцию SELECT после ключевого слова RETURN).
- •Пример 2. Функция, которая возвращает
- •Для примера создана функция без параметров, в
- •Созданная функция может вызываться с помощью оператора SELECT, например:
- •Пример 3. Создание и применение функции табличного типа для определения двух
- •Использовать функцию для получения
- •8.2.3. Табличные функции с множеством инструкций (функции Multi-statement)
- •Общий синтаксис функции Multistatement:
- •Элементы синтаксиса соответствуют приведенным для скалярных функций.
- •Набор данных, возвращаемых функцией,
- •Работа функции завершается при наличии ошибок выполнения или когда в коде
- •Функции Multi-statement сочетают свойства:
- •Пример 1. Функция Multi-statement, которая выводит сведения о студентах (фамилия, имя) по номеру
- •Пример 2. Функция Multi-statement, которая для некоторого сотрудника выводит список всех его
- •Пример данных в таблице emp_mgr.
- •CREATE FUNCTION List(@id_emp CHAR(2))
- •Использована системная функция @@ROWCOUNT, возвращающая количество строк, обработанных
- •Список подчиненных сотрудника ‘a’ создается с помощью оператора
Для вывода значений переменных можно
использовать команды:
•SELECT – выводит данные в стандартный
набор строк (recordset);
•PRINT – выводит служебную информацию
(например, сведения о количестве возвращенных строк после выполнения обработки данных в таблице). Служебная информация не обрабатывается обычными командами работы с данными.
11
Примеры использования команд SELECT, PRINT для вывода значений переменных:
Результат обработки:
1-й строки: вывод таблицы (из одного значения 15) на вкладке Results и служебной строки (1 row(s) affected) на вкладке Messages;
2-й строки – вывод числа 100 в качестве служебной
информации (на вкладке Messages). 12
Результат обработки - вывод:
таблицы (из трех значений) на вкладке Results;
служебной строки (3 row(s) affected) на вкладке
Messages.
13
8. Функции
SQL Server поддерживает три типа программируемых объектов: функции, хранимые процедуры и триггеры.
Вместо исполнения отдельных инструкций и команд эти объекты позволяют создавать программную логику, содержащую циклы, управление исполнением программы, принятие
решений и ветвление.
Кроме встроенных функций, возможно также создание пользовательских функций, содержащих многократно используемый14 код.
8.1. Встроенные функции
Встроенные функции – реализуют наиболее
часто используемые алгоритмы и являются частью T-SQL. Эти функции можно условно разделить на следующие группы:
•математические функции;
•строковые функции;
•функции для работы с датой и временем;
•функции конфигурирования;
•функции системы безопасности;
•функции управления метаданными;
• статистические функции. 15
Математические функции. Большинство этих функций возвращают результат того же типа, что и исходное значение. Поэтому для их использования нужно правильно задавать исходные данные.
Например, при вычислении:
1-е выражение неверно, т.к. в качестве аргумента для перевода в радианы взято целое число, и результат получен с округлением до целого числа (с недостатком). При указании хотя бы одного знака после десятичной точки (2-е выражение) в аргументе встроенной функции выполняется правильное преобразование16.
Рассмотрим некоторые часто используемые математические функции и примеры их
применения.
Функция ABS используется для вычисления модуля числа, например:
17
Функция ISNUMERIC проверяет, имеет ли
указанное выражение числовой тип данных. Если да, то функция возвращает значение 1, иначе – значение 0.
Функция SIGN определяет знак числа. Если
значение положительное, то в результате
получится 1; если нулевое, то 0; если
отрицательное, то -1.
Функция RAND вычисляет случайное число с плавающей точкой в интервале от 0 до 1.
Аргумент функции долен иметь тип данных
tinyint, int, smallint. Если аргумент отсутствует
(RAND( )), то значение функции генерируется
на основе системного времени.
19
Функции FLOOR, CEILING выполняют округление до целых вниз, вверх соответственно.
20