-- 1) Создание процедуры "Discipline_Insert" (добавление дисциплины)
CREATE PROCEDURE Discipline_Insert
@Name VARCHAR(64)
AS
BEGIN
INSERT INTO Disciplines (name)
VALUES (@Name);
END;
GO
-- 2) Создание процедуры "Applicant_Insert" (добавление абитуриента)
CREATE PROCEDURE Applicant_Insert
@LastName VARCHAR(30),
@FirstName VARCHAR(20),
@MiddleName VARCHAR(20),
@Status VARCHAR(20),
@City VARCHAR(30)
AS
BEGIN
INSERT INTO Applicants (LastName, FirstName, MiddleName, Status, City)
VALUES (@LastName, @FirstName, @MiddleName, @Status, @City);
END;
GO
-- 3) Создание процедуры "Application_Insert" (добавление заявления со статусом "не зачислен")
CREATE PROCEDURE Application_Insert
@ApplicantID INT,
@SpecialtyID INT
AS
BEGIN
INSERT INTO Applications (ApplicantID, SpecialtyID, Status)
VALUES (@ApplicantID, @SpecialtyID, 'не зачислен');
END;
GO
-- 4) Создание процедуры "Discipline_Delete" (удаление дисциплины)
CREATE PROCEDURE Discipline_Delete
@DisciplineID INT
AS
BEGIN
DELETE FROM Disciplines
WHERE discipline_id = @DisciplineID;
END;
GO
-- 5) Создание процедуры "Applicant_Delete" (удаление абитуриента, если он не зачислен)
CREATE PROCEDURE Applicant_Delete
@ApplicantID INT
AS
BEGIN
IF NOT EXISTS (SELECT 1 FROM Applicants WHERE ApplicantID = @ApplicantID AND Status = 'зачислен')
BEGIN
DELETE FROM Applicants
WHERE ApplicantID = @ApplicantID;
END
ELSE
BEGIN
RAISERROR('Удаление запрещено: абитуриент имеет статус "зачислен".', 16, 1);
END
END;
GO
-- 6) Создание процедуры "Exam_Delete" (удаление экзамена вместе с его оценками)
CREATE PROCEDURE Exam_Delete
@ExamID INT
AS
BEGIN
-- Сначала удаляем связанные оценки
DELETE FROM Grades
WHERE ExamID = @ExamID;
-- Затем удаляем сам экзамен
DELETE FROM Exams
WHERE ExamID = @ExamID;
END;
GO
-- 7) Создание процедуры "Specialty_Update" (увеличение вакансий на 10%)
CREATE PROCEDURE Specialty_Update
AS
BEGIN
UPDATE Specialties
SET Vakansii = CAST(Vakansii * 1.10 AS INT);
END;
GO
-- 8) Создание процедуры "Exam_Update" (изменение даты экзамена)
CREATE PROCEDURE Exam_Update
@ExamID INT,
@NewDate DATE
AS
BEGIN
UPDATE Exams
SET Date = @NewDate
WHERE ExamID = @ExamID;
END;
GO
-- 9) Создание процедуры "Applicant_Update" (обновление статуса на "зачислен" в таблицах Абитуриенты и Заявления)
CREATE PROCEDURE Applicant_Update
@ApplicantID INT
AS
BEGIN
-- Обновляем статус абитуриента
UPDATE Applicants
SET Status = 'зачислен'
WHERE ApplicantID = @ApplicantID;
-- Обновляем статус в его заявлениях
UPDATE Applications
SET Status = 'зачислен'
WHERE ApplicantID = @ApplicantID;
END;
GO