Команда SET используется для установки значения переменной ID_PR. Значением является результат выполнение команды DML SELECT, в результате чего на основании данных из таблицы PERSONS формируется код личности указанной фамилией. Команда SET позволяет установить значение только для одной переменной.
С помощью команды INSERT таблица STUDENTS заполняется значениями. Т.к., ни у одного поля таблицы нет свойства IDENTITY, то после ключевого слова VALUE указываются значения для всех столбцов таблицы.
Для выполнения команды INSERT пользователь должен иметь привилегию db_datawriter доступа к базе данных, в которой находится искомая таблица.
*/
END
--ELSE
-- DROP TABLE STUDENTS
/*
Если таблица STUDENTS существует, то она уничтожается с помощью команды DDL DROP TABLE, для выполнения которой пользователь должен иметь привилегию db_ddladmin доступа к базе данных, в которой находится удаляемая таблица. Эту команду нельзя применять для таблиц, на которые идет ссылка в ограничении FOREIGN KEY ... REFERENCES (для удаления таких таблиц необходимо удалить ограничение FOREIGN KEY ... REFERENCES или таблицу, его содержащую).
*/
GO
/*
Команда GO служит для принудительного окончания (исполнения) пакета команд. После ее использования становится невозможным дальнейшее использование описанных ранее переменных.
*/
if NOT exists(select TABLE_NAME from INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'STUD_PROGRESS')
/*
Проверяется: существует ли выборка из представления TABLES, владельцем которого является пользователь INFORMATION_SCHEMA, поля TABLE_NAME, значения которого должно равняться STUD_PROGRESS. Для получения нужного значения поля TABLE_NAME используется команда DML SELECT. Для ее использования пользователь должен иметь привилегию db_datareader доступа к базе данных, которая содержит искомую таблицу.
Смысл этого оператора языка TSQL заключается в проверке того, существует ли таблица с именем STUD_PROGRESS. Если такая таблица не существует, то выполняется ее создание и наполнение данными.
*/
BEGIN
/*
Используются операторные скобки BEGIN...END, т.к., целый блок операторов должен рассматриваться как единая группа операторов.