Глава 13. ОСНОВЫ ПРОГРАММИРОВАНИЯ НА T-SQL
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Введение в T- SQL

Язык SQL – является декларативным языком. В нем отсутствуют инструкции, позволяющие управлять последовательностью выполнения операторов. Другими словами, в языке SQL нет операторов перехода, цикла, ветвления и других механизмов, с помощью которых можно было бы управлять ходом выполнения программы (записать алгоритм).

Современный SQL – это язык, мощности которого в большинстве случаев оказывается достаточно для разработки приложений БД. T-SQL – это процедурное расширение языка SQL. Иначе говоря, это надстройка над SQL, дополняющая его возможностями алгоритмического языка программирования.

Применение языка T-SQL обусловлено современной тенденцией в программировании, которая заключается в переносе тяжести программного обеспечения на сторону сервера. Иначе говоря, основной программный код в современных клиент-серверных приложениях размещается на серверной стороне, клиентское программное обеспечение в основном решает задачи ввода и отображения данных. Применительно в MSS можно сказать, что T-SQL является его встроенным языком, позволяющим создавать программные объекты БД. К программным объектам MSS относятся хранимые процедуры, скалярные и табличные функции и триггеры.

Начиная с версии 2005 г. MSS разработчику предоставляется возможность разрабатывать программные объекты БД на языке C#. Более того, в C# допускается разработка собственных типов данных, которые можно применять для столбцов при создании таблиц. Применение C# в этом пособии не рассматривается. Для знакомства с возможностью использования этого языка для разработки программных объектов БД рекомендуется пособие [5].

Необходимо сделать еще одно замечание относительно терминологии: начиная с версии 2008 в документации MSS не различаются языки SQL и Т-SQL, их называют T-SQL. Следуя этому правилу, далее будет говорится только о языке T-SQL. Операторы языка T-SQL, как правило, отделяются друг от друга точкой с запятой, но это правило не является строгим. Если операторы расположены на разных строках, то допускается не применять разделители. Синтаксис T-SQL не чувствителен к регистру, поэтому допускается любое сочетание букв верхнего и нижнего регистров. Дальнейшее описание синтаксиса языка T-SQL будет осуществляться по ходу изложения.

Понятие пакета

Пакет – это группа операторов T-SQL, которая обрабатывается сервером СУБД вместе. Понятие пакета необходимо при клиент-серверной архитектуре приложения. В этом смысле, пакет – это группа операторов T-SQL, которую программа клиент отправляет серверу на исполнение.

Стандартные программы-клиенты, входящие в программное обеспечение MSS, такие как MMS и утилита командной строки SQLCMD, разграничивают пакеты с помощью специальной инструкции GO. Инструкция GO интерпретируется как команда отправки на сервер порции операторов T-SQL. В качестве операнда инструкции GO можно указать целое положительное число, которое будет восприниматься как количество повторений пакета. Следует отметить, что в некоторых случаях разделение инструкций на пакеты является обязательным.

На рис. 13.1 представлен пример сценария, состоящего из пяти пакетов.

 

Рис. 13.1. Сценарий, состоящий из пяти пакетов

 

Контекст выполнения пакета

Каждый пакет выполняется в контексте какой-то БД. Контекст БД переключается с помощью инструкции USE (рис. 13.1). За ключевым словом USE указывается имя БД, в контекст которой осуществляется переключение. Обычно переключение контекста выполняется в отдельном пакете. Как и GO инструкция USE применяется стандартными программами-клиентами, входящими в состав программного обеспечения MSS. Переключение контекста БД позволяет указывать короткие имена объектов БД, используемых в операторах T-SQL. Если в контексте одной БД требуется сослаться на объект другой БД в рамках одного сервера, то необходимо использовать трехкомпонентное имя объекта, включающего имя БД, имя схемы и собственно имя объекта.

 

Оператор DECLARE

 

Оператор DECLARE (рис. 13.2) предназначен для объявления используемых в программе переменных. Для каждой переменной указывается имя и тип. Имя должно обязательно начинаться с символа @, но не c @@ , так как это сочетание символов зарезервировано для системных переменных и функций.

 

Рис. 13.2. Пример сценария T-SQL, содержащего пять операторов DECLARE

 

Перечень допустимых типов переменных совпадает с перечнем типов данных БД MSS (табл. 5.1–5.7). Переменная может быть проинициализирована в операторе DECLARE с помощью символа =. В одном сценарии допускается несколько операторов DECLARE.

Обратите внимание на последний оператор DECLARE в сценарии на рис. 13.3. В этом операторе объявлена переменная с типом TABLE. Этот тип позволяет создавать таблицы в памяти и использовать их для хранения промежуточных данных. Жизненный цикл всех объявленных переменных заканчивается вместе с завершением пакета, в котором находится соответствующий оператор DECLARE.

 

Операторы присваивания

 

Переменной, объявленной в операторе DELCLARE, можно присвоить значение тремя способами: инициализировать в операторе DECLARE (рис.13.2), присвоить значение с помощью операторов SET или SELECT (рис 13.3).

 

Рис. 13.3. Присваивание значений с помощью операторов SET и SELECT

 

Единственное отличие операторов присваивания SET и SELECT заключается в возможности SELECT присваивать значения одновременно нескольким переменным.

 

Оператор вывода

 

Вывод данных в T-SQL возможен двумя способами: с помощью оператора SELECT можно сформировать выходной результирующий набор, с помощью оператора PRINT можно вывести строку в стандартный выходной поток. Каждый оператор SELECT формирует отдельный результирующий набор, а каждый оператор PRINT – строку в единственный выходной поток.

Сценарий на рис. 13.4 формирует два результирующих набора и три строки в стандартный выходной поток.

Рис. 13.4. Пример сценария, формирующего два результирующих набора
 и выводящего три строки в выходной поток

 Обратите внимание: при формировании строк, выводимых оператором PRINT, применяется операция конкатенации (объединения) строк, для обозначения которой используется символ +.

13.5. Арифметические операции и встроенные
 математические функции

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

 

Рис. 13.5. Примеры использования основных арифметических операций

 

Следует обратить внимание, что в некоторых выражениях использовались переменные разных типов. В таких случаях интерпретатор T-SQL выполняет неявное преобразование типов. По возможности следует избегать смешивания типов в арифметических операциях или выполнять явное преобразование к общему типу.

Кроме того, MSS поддерживает широкий набор встроенных математических функций, которые можно применять в сценариях T-SQL для вычислений. На рис. 13.6 приведены примеры использования некоторых стандартных математических функций.

Рис. 13.6. Примеры использования встроенных математических функций T-SQL

С полным перечнем встроенных математических функций T-SQL можно ознакомиться в изданиях [1, 5].



Работа со строками

 

Помимо операции конкатенации строк, упоминаемой ранее, язык T-SQL обеспечивает широкий набор встроенных функций для работы со строковыми данными. На рис.13.7 приведены примеры использования встроенных строковых функций.

 

Рис. 13.7. Примеры использования встроенных строковых функций T-SQL

 

С полным перечнем встроенных строковых функций T-SQL можно ознакомиться в пособиях [1, 5].

Работа с датами и временем

 

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

 

Рис. 13.8. Примеры использования встроенных функций T-SQL
 для работы с датами

 

Обратите внимание на третий числовой параметр функции CONVERT, используемой здесь для преобразования даты к строке. Этот параметр определяет строчный формат даты. Возможные его значения описываются в пособии [5].

Сценарий на рис. 13.9 демонстрирует основные встроенные функции T-SQL для работы со временем.

Рис. 13.9. Примеры использования встроенных функций T-SQL
для работы со временем

 

Ознакомиться с полным перечнем встроенных функций T-SQL для работы с датами и временем можно в пособиях [1, 5].

 



Оператор RETURN

 

Немедленно завершить работу пакета можно с помощью оператора RETURN. На рис. 13.10 приведен сценарий, демонстрирующий работу оператора RETURN.

 

Рис. 13.10. Пример использования оператора RETURN

 

Сценарий на рис. 13.10 состоит из двух пакетов. В первом пакете выполняется оператор RETURN, осуществляющий немедленное завершение этого пакета и переход на выполнение следующего.

Кроме выхода из текущего пакета оператор RETURN применяется для завершения работы процедур, функций и триггеров (все рассматривается позже).

 

 

Дата: 2019-02-25, просмотров: 214.